STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228088
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2561 · P5121

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/91718593?noj=FRM91718593-3DC" width="1" height="1"></div>

castledefense.swf

This is the info page for
Flash #82797

(Click the ID number above for more basic data on this flash file.)


Text
Preloader

$1000

Sell for

Life:

Level Clear!

All Clear!

Game Over!

Sell

Buy

Power:

Frequency:

Range:

Price:

Cancel

Level:

Score:

Money:

999

999999

$999999

Defend the castle by
buying cannons to
shoot the enemies.

Instructions

START

Play Again

Home

$1000

Level

11

ActionScript [AS3]

Section 1
//sellBubble_8 (castledefense_fla.sellBubble_8) package castledefense_fla { import flash.display.*; import flash.text.*; public dynamic class sellBubble_8 extends MovieClip { public var moneyText:TextField; } }//package castledefense_fla
Section 2
//Bullet (com.novelgames.flashgames.castledefense.Bullet) package com.novelgames.flashgames.castledefense { import flash.display.*; import com.novelgames.flashgames.common.*; public class Bullet extends MovieClip { public var power:Number; private var startX:Number; private var startY:Number; public var speed:Number; private var startTime:int; public var maxDistance:Number; private var duration:Number; private var endX:Number; private var endY:Number; public function initialize(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){ this.x = _arg1; this.y = _arg2; this.power = _arg3; this.speed = _arg4; this.maxDistance = _arg5; this.rotation = _arg6; startX = _arg1; startY = _arg2; endX = (_arg1 + (Math.cos(((_arg6 * Math.PI) / 180)) * _arg5)); endY = (_arg2 + (Math.sin(((_arg6 * Math.PI) / 180)) * _arg5)); duration = ((_arg5 * 1000) / _arg4); startTime = NewTimer.getTimer(); } public function move(_arg1:int):Boolean{ var _local2:Number; _local2 = ((_arg1 - startTime) / duration); if (_local2 > 1){ _local2 = 1; }; x = ((startX * (1 - _local2)) + (endX * _local2)); y = ((startY * (1 - _local2)) + (endY * _local2)); return ((_local2 >= 1)); } } }//package com.novelgames.flashgames.castledefense
Section 3
//Bullet0 (com.novelgames.flashgames.castledefense.Bullet0) package com.novelgames.flashgames.castledefense { public dynamic class Bullet0 extends Bullet { } }//package com.novelgames.flashgames.castledefense
Section 4
//Bullet1 (com.novelgames.flashgames.castledefense.Bullet1) package com.novelgames.flashgames.castledefense { public dynamic class Bullet1 extends Bullet { } }//package com.novelgames.flashgames.castledefense
Section 5
//Bullet2 (com.novelgames.flashgames.castledefense.Bullet2) package com.novelgames.flashgames.castledefense { public dynamic class Bullet2 extends Bullet { } }//package com.novelgames.flashgames.castledefense
Section 6
//BuyDialog (com.novelgames.flashgames.castledefense.BuyDialog) package com.novelgames.flashgames.castledefense { import flash.display.*; import flash.events.*; import flash.utils.*; import flash.text.*; import flash.geom.*; public class BuyDialog extends MovieClip { public var rangeText:TextField; public var priceText:TextField; private var cannons:Array; public var shadeHolder:MovieClip; public var cancelButton:SimpleButton; public var buyButton:SimpleButton; public var cannonsHolder:MovieClip; public var backgroundHolder:MovieClip; public var frequencyText:TextField; public var powerText:TextField; private var index:int; public function BuyDialog(){ buyButton.addEventListener(MouseEvent.CLICK, buyButtonClicked); cancelButton.addEventListener(MouseEvent.CLICK, cancelButtonClicked); visible = false; } private function cancelButtonClicked(_arg1:MouseEvent):void{ hide(); Object(parent).buyFinished(); } private function drawShade():void{ var _local1:Point; var _local2:Point; _local1 = this.globalToLocal(new Point(0, 0)); _local2 = this.globalToLocal(new Point(stage.stageWidth, stage.stageHeight)); shadeHolder.graphics.clear(); shadeHolder.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); shadeHolder.graphics.moveTo(_local1.x, _local1.y); shadeHolder.graphics.lineTo(_local2.x, _local1.y); shadeHolder.graphics.lineTo(_local2.x, _local2.y); shadeHolder.graphics.lineTo(_local1.x, _local2.y); shadeHolder.graphics.lineTo(_local1.x, _local1.y); shadeHolder.graphics.endFill(); } private function cannonClicked(_arg1:MouseEvent):void{ var _local2:CannonSet; _local2 = CannonSet(_arg1.currentTarget); showCannon(_local2.type); } public function hide():void{ visible = false; } private function showCannon(_arg1:int):void{ this.index = _arg1; drawShade(); drawBackground(_arg1); createCannons(_arg1); showNumbers(_arg1); setButtons(_arg1); } private function drawBackground(_arg1:int):void{ var _local2:Number; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; _local2 = (Config.CANNON_TYPES * Config.BUYDIALOG_TABSIZE); if (_local2 < Config.BUYDIALOG_MINWIDTH){ _local2 = Config.BUYDIALOG_MINWIDTH; }; _local3 = (-(Config.BUYDIALOG_HEIGHT) / 2); _local4 = (-(_local2) / 2); _local5 = (Config.BUYDIALOG_HEIGHT / 2); _local6 = (_local2 / 2); _local7 = Config.BUYDIALOG_BACKGROUNDINSET; _local8 = Config.BUYDIALOG_CORNERRADIUS; _local9 = Config.BUYDIALOG_TABSIZE; backgroundHolder.graphics.clear(); backgroundHolder.graphics.lineStyle(Config.BUYDIALOG_BORDERTHICKNESS, Config.BUYDIALOG_BORDERCOLOUR); backgroundHolder.graphics.beginFill(Config.BUYDIALOG_BACKGROUNDCOLOUR); backgroundHolder.graphics.moveTo(((_local4 + _local7) + _local8), (_local3 + _local7)); backgroundHolder.graphics.lineTo(((_local6 - _local7) - _local8), (_local3 + _local7)); backgroundHolder.graphics.curveTo((_local6 - _local7), (_local3 + _local7), (_local6 - _local7), ((_local3 + _local7) + _local8)); backgroundHolder.graphics.lineTo((_local6 - _local7), ((_local5 - _local7) - _local8)); backgroundHolder.graphics.curveTo((_local6 - _local7), (_local5 - _local7), ((_local6 - _local7) - _local8), (_local5 - _local7)); backgroundHolder.graphics.lineTo(((_local4 + _local7) + _local8), (_local5 - _local7)); backgroundHolder.graphics.curveTo((_local4 + _local7), (_local5 - _local7), (_local4 + _local7), ((_local5 - _local7) - _local8)); backgroundHolder.graphics.lineTo((_local4 + _local7), ((_local3 + _local7) + _local8)); backgroundHolder.graphics.curveTo((_local4 + _local7), (_local3 + _local7), ((_local4 + _local7) + _local8), (_local3 + _local7)); backgroundHolder.graphics.endFill(); backgroundHolder.graphics.beginFill(Config.BUYDIALOG_FOREGROUNDCOLOUR); backgroundHolder.graphics.moveTo((_local4 + (_arg1 * _local9)), (_local3 + _local9)); backgroundHolder.graphics.lineTo((_local4 + (_arg1 * _local9)), (_local3 + _local8)); backgroundHolder.graphics.curveTo((_local4 + (_arg1 * _local9)), _local3, ((_local4 + (_arg1 * _local9)) + _local8), _local3); backgroundHolder.graphics.lineTo(((_local4 + ((_arg1 + 1) * _local9)) - _local8), _local3); backgroundHolder.graphics.curveTo((_local4 + ((_arg1 + 1) * _local9)), _local3, (_local4 + ((_arg1 + 1) * _local9)), (_local3 + _local8)); backgroundHolder.graphics.lineTo((_local4 + ((_arg1 + 1) * _local9)), (_local3 + _local9)); backgroundHolder.graphics.lineTo(_local6, (_local3 + _local9)); backgroundHolder.graphics.lineTo(_local6, (_local5 - _local8)); backgroundHolder.graphics.curveTo(_local6, _local5, (_local6 - _local8), _local5); backgroundHolder.graphics.lineTo((_local4 + _local8), _local5); backgroundHolder.graphics.curveTo(_local4, _local5, _local4, (_local5 - _local8)); backgroundHolder.graphics.lineTo(_local4, (_local3 + _local9)); backgroundHolder.graphics.lineTo((_local4 + (_arg1 * _local9)), (_local3 + _local9)); backgroundHolder.graphics.endFill(); } private function showNumbers(_arg1:int):void{ powerText.text = Config.CANNON_INFOS[_arg1][0].toString(); frequencyText.text = Config.CANNON_INFOS[_arg1][1].toString(); rangeText.text = Config.CANNON_INFOS[_arg1][2].toString(); priceText.text = (Config.MONEY_PREFIX + Config.CANNON_INFOS[_arg1][3]); } private function buyButtonClicked(_arg1:MouseEvent):void{ hide(); Object(parent).buyCannon(index); } private function createCannons(_arg1:int):void{ var _local2:Number; var _local3:Class; var _local4:CannonSet; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; _local2 = (Config.CANNON_TYPES * Config.BUYDIALOG_TABSIZE); if (cannons){ _local8 = 0; while (_local8 < cannons.length) { cannonsHolder.removeChild(cannons[_local8]); _local8++; }; }; cannons = new Array(); if (_local2 < Config.BUYDIALOG_MINWIDTH){ _local2 = Config.BUYDIALOG_MINWIDTH; }; _local8 = 0; while (_local8 < Config.CANNON_TYPES) { _local3 = Class(getDefinitionByName(("com.novelgames.flashgames.castledefense.CannonSet" + _local8))); _local4 = new (_local3); _local4.type = _local8; if (_local8 != _arg1){ _local7 = Config.BUYDIALOG_CANNONNORMALSIZE; _local4.addEventListener(MouseEvent.MOUSE_DOWN, cannonClicked); _local4.buttonMode = true; } else { _local7 = Config.BUYDIALOG_CANNONHIGHLIGHTSIZE; }; _local5 = (((-(_local2) / 2) + (_local8 * Config.BUYDIALOG_TABSIZE)) + (Config.BUYDIALOG_TABSIZE / 2)); _local6 = ((-(Config.BUYDIALOG_HEIGHT) / 2) + (Config.BUYDIALOG_TABSIZE / 2)); _local4.x = _local5; _local4.y = _local6; _local4.width = _local7; _local4.height = _local7; cannonsHolder.addChild(_local4); cannons.push(_local4); _local8++; }; } private function setButtons(_arg1:int):void{ buyButton.visible = (Object(parent).money >= Config.CANNON_INFOS[_arg1][3]); } public function show():void{ showCannon(0); visible = true; } } }//package com.novelgames.flashgames.castledefense
Section 7
//CannonSet (com.novelgames.flashgames.castledefense.CannonSet) package com.novelgames.flashgames.castledefense { import flash.display.*; import com.novelgames.flashgames.common.*; public class CannonSet extends MovieClip { public var power:Number; public var bulletDistance:Number; private var fireInterval:Number; public var background:MovieClip; public var range:int; public var price:int; public var frequency:Number; public var bulletSpeed:Number; public var type:int; public var turnSpeed:Number; private var lastFireTime:int; public var cannon:MovieClip; private function getBulletDistance():void{ var _local1:Number; var _local2:Number; _local1 = (Config.BLOCK_SIZE / 2); _local2 = ((range * Config.BLOCK_SIZE) + (Config.BLOCK_SIZE / 2)); bulletDistance = Math.sqrt(((_local1 * _local1) + (_local2 * _local2))); } public function setDefaultRotation(_arg1:Number):void{ cannon.rotation = _arg1; background.rotation = _arg1; } public function initialize(_arg1:int):void{ this.type = _arg1; power = Config.CANNON_INFOS[_arg1][0]; frequency = Config.CANNON_INFOS[_arg1][1]; range = Config.CANNON_INFOS[_arg1][2]; price = Config.CANNON_INFOS[_arg1][3]; turnSpeed = Config.CANNON_INFOS[_arg1][4]; bulletSpeed = Config.CANNON_INFOS[_arg1][5]; getBulletDistance(); fireInterval = (1000 / frequency); lastFireTime = 0; } private function getCanShoot(_arg1:Enemy):Boolean{ var _local2:Number; var _local3:Number; _local2 = (_arg1.x - this.x); _local3 = (_arg1.y - this.y); return ((((_local2 * _local2) + (_local3 * _local3)) <= (bulletDistance * bulletDistance))); } public function move(_arg1:int, _arg2:Array):Boolean{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:int; _local6 = 0; while (_local6 < _arg2.length) { if (getCanShoot(_arg2[_local6])){ break; }; _local6++; }; if (_local6 >= _arg2.length){ return (false); }; _local3 = ((Math.atan2((_arg2[_local6].y - this.y), (_arg2[_local6].x - this.x)) * 180) / Math.PI); _local4 = ((turnSpeed * _arg1) / 1000); _local5 = (_local3 - cannon.rotation); if (_local5 > 180){ _local5 = (_local5 - 360); } else { if (_local5 < -180){ _local5 = (_local5 + 360); }; }; if (_local4 <= Math.abs(_local5)){ _local4 = ((_local5 > 0)) ? _local4 : -(_local4); cannon.rotation = (cannon.rotation + _local4); return (false); //unresolved jump }; _local4 = _local5; cannon.rotation = (cannon.rotation + _local4); if ((NewTimer.getTimer() - lastFireTime) >= fireInterval){ lastFireTime = NewTimer.getTimer(); return (true); }; return (false); } } }//package com.novelgames.flashgames.castledefense
Section 8
//CannonSet0 (com.novelgames.flashgames.castledefense.CannonSet0) package com.novelgames.flashgames.castledefense { public dynamic class CannonSet0 extends CannonSet { } }//package com.novelgames.flashgames.castledefense
Section 9
//CannonSet1 (com.novelgames.flashgames.castledefense.CannonSet1) package com.novelgames.flashgames.castledefense { public dynamic class CannonSet1 extends CannonSet { } }//package com.novelgames.flashgames.castledefense
Section 10
//CannonSet2 (com.novelgames.flashgames.castledefense.CannonSet2) package com.novelgames.flashgames.castledefense { public dynamic class CannonSet2 extends CannonSet { } }//package com.novelgames.flashgames.castledefense
Section 11
//CannonSetRange (com.novelgames.flashgames.castledefense.CannonSetRange) package com.novelgames.flashgames.castledefense { import flash.display.*; public dynamic class CannonSetRange extends MovieClip { } }//package com.novelgames.flashgames.castledefense
Section 12
//Castle (com.novelgames.flashgames.castledefense.Castle) package com.novelgames.flashgames.castledefense { import flash.display.*; import flash.events.*; import com.novelgames.flashgames.common.*; import flash.utils.*; public class Castle extends MovieClip { private var life:Number; private var targetLife:Number; private var castleY:Number; private var castleX:Number; private var lastLifeTime:int; public var lifeBubble:LifeBubble; private var lifeTimer:Timer; private var startShakeTime:int; private var shakeTimer:Timer; public var castle:MovieClip; public function Castle(){ castleX = castle.x; castleY = castle.y; life = Config.CASTLE_LIFE; targetLife = life; lifeBubble.updateBar(1); lifeBubble.visible = false; } private function lifeStayFinished(_arg1:TimerEvent):void{ lifeBubble.visible = false; } public function showDamage(_arg1:Number):void{ this.targetLife = _arg1; lifeBubble.visible = true; startShakeTime = NewTimer.getTimer(); if (shakeTimer){ shakeTimer.stop(); }; shakeTimer = new NewTimer(1, 0); shakeTimer.addEventListener(TimerEvent.TIMER, onShakeTime); shakeTimer.start(); lastLifeTime = NewTimer.getTimer(); if (lifeTimer){ lifeTimer.stop(); }; lifeTimer = new NewTimer(1, 0); lifeTimer.addEventListener(TimerEvent.TIMER, onLifeTime); lifeTimer.start(); } private function onShakeTime(_arg1:TimerEvent):void{ var _local2:int; var _local3:Number; _local2 = NewTimer.getTimer(); _local3 = ((_local2 - startShakeTime) / Config.CASTLE_SHAKETIME); if (_local3 > 1){ _local3 = 1; }; _arg1.updateAfterEvent(); castle.x = (castleX + ((Math.random() < 0.5)) ? -(Config.CASTLE_SHAKEAMPLITUDE) : Config.CASTLE_SHAKEAMPLITUDE); castle.y = (castleY + ((Math.random() < 0.5)) ? -(Config.CASTLE_SHAKEAMPLITUDE) : Config.CASTLE_SHAKEAMPLITUDE); if (_local3 >= 1){ shakeTimer.stop(); castle.x = castleX; castle.y = castleY; }; } private function onLifeTime(_arg1:TimerEvent):void{ var _local2:int; _local2 = NewTimer.getTimer(); life = (life - (((_local2 - lastLifeTime) * Config.CASTLE_LIFESPEED) / 1000)); if (life < targetLife){ life = targetLife; }; lifeBubble.updateBar((life / Config.CASTLE_LIFE)); lastLifeTime = _local2; if (life <= targetLife){ lifeTimer.stop(); lifeTimer = new NewTimer(Config.CASTLE_LIFESTAYTIME, 1); lifeTimer.addEventListener(TimerEvent.TIMER, lifeStayFinished); lifeTimer.start(); }; } } }//package com.novelgames.flashgames.castledefense
Section 13
//Config (com.novelgames.flashgames.castledefense.Config) package com.novelgames.flashgames.castledefense { public class Config { public static var MONEY_INITIAL:int = 1000; public static var CASTLE_LIFESTAYTIME:Number = 1000; public static var MESSAGE_GAMEOVERTIME:int = 2000; public static var MONEY_PREFIX:String = "$"; public static var BLOCK_SIZE:int = 30; public static var BUYDIALOG_CANNONNORMALSIZE:Number = 40; public static var CANNON_TYPES:int = 3; public static var BUYDIALOG_CORNERRADIUS:Number = 5; public static var MONEYPOPUP_STAYTIME:int = 200; public static var BUYDIALOG_BORDERTHICKNESS:Number = 2; public static var MONEYPOPUP_MOVETIME:int = 500; public static var CANNON_INFOS:Array = [[2, 2, 3, 200, 1440, 750], [1, 4, 5, 400, 1080, 1000], [40, 0.5, 2, 600, 720, 500]]; public static var CASTLE_LIFESPEED:Number = 20; public static var BUYDIALOG_MINWIDTH:Number = 210; public static var BUYDIALOG_CANNONHIGHLIGHTSIZE:Number = 50; public static var DIALOG_SHADEALPHA:Number = 0.7; public static var CASTLE_SHAKETIME:int = 100; public static var FIELD_LAYOUT:Array = [" ", " RRRRR ", " R R ", "RRR R RR C ", " R R R R ", " R R R R RRR ", " R R R RRRR R ", " R R R R ", " RRRR R R ", " R RRRRRRR ", " RRRRR "]; public static var DIALOG_SHADECOLOUR:uint = 0; public static var FIELD_X:Number = 0; public static var FIELD_Y:Number = 40; public static var CANNON_SELLPRICERATIO:Number = 0.5; public static var LEVEL_LIFEINCREASE:int = 5; public static var BUYDIALOG_FOREGROUNDCOLOUR:uint = 13748346; public static var ENEMY_TYPES:int = 3; public static var ENEMY_INFOS:Array = [[20, 100, 360, 10, 50, 50], [10, 500, 720, 5, 100, 100], [100, 50, 180, 50, 150, 200]]; public static var LEVEL_INFOS:Array = [[[0, 8]], [[0, 8]], [[1, 3]], [[2, 3]], [[0, 7], [1, 3]], [[1, 5], [0, 10]], [[0, 10], [2, 10], [1, 10]], [[2, 10], [1, 10], [0, 20]], [[1, 10], [0, 10], [2, 20]], [[0, 20], [2, 20], [1, 20]]]; public static var FIELD_DIMENSIONX:int = 20; public static var FIELD_DIMENSIONY:int = 12; public static var MESSAGE_LEVELTIME:int = 1500; public static var CASTLE_LIFE:Number = 100; public static var CASTLE_SHAKEAMPLITUDE:Number = 2; public static var BUYDIALOG_TABSIZE:Number = 70; public static var BUYDIALOG_HEIGHT:Number = 270; public static var BUYDIALOG_BORDERCOLOUR:uint = 0x3333; public static var BUYDIALOG_BACKGROUNDCOLOUR:uint = 11576638; public static var MESSAGE_LEVELCLEARTIME:int = 1000; public static var SCORE_LEVEL:int = 1000; public static var MESSAGE_ALLCLEARTIME:int = 2000; public static var MONEYPOPUP_MOVEHEIGHT:Number = 20; public static var LEVEL_NO:int = 10; public static var BUYDIALOG_BACKGROUNDINSET:Number = 5; } }//package com.novelgames.flashgames.castledefense
Section 14
//Cross (com.novelgames.flashgames.castledefense.Cross) package com.novelgames.flashgames.castledefense { import flash.display.*; public dynamic class Cross extends MovieClip { } }//package com.novelgames.flashgames.castledefense
Section 15
//Enemy (com.novelgames.flashgames.castledefense.Enemy) package com.novelgames.flashgames.castledefense { import flash.display.*; public class Enemy extends MovieClip { public var currentY:int; public var currentX:int; public var life:Number; public var speed:Number; private var turnTarget:Number; public var damage:Number; public var score:int; public var type:int; public var moveToY:int; public var moveToX:int; private var isTurning:Boolean; public var distanceFromCurrent:Number; public var turnSpeed:Number; public var money:int; private function turnAngle(_arg1:Number):Number{ var _local2:Number; var _local3:Number; _local2 = (turnTarget - rotation); if (_local2 > 180){ _local2 = (_local2 - 360); } else { if (_local2 < -180){ _local2 = (_local2 + 360); }; }; _local3 = (_arg1 - Math.abs(_local2)); if (_local3 <= 0){ _local3 = 0; _arg1 = ((_local2 > 0)) ? _arg1 : -(_arg1); } else { _arg1 = _local2; isTurning = false; }; rotation = (rotation + _arg1); return (_local3); } public function initialize(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{ this.type = _arg1; this.life = (_arg4 + Config.ENEMY_INFOS[_arg1][0]); this.speed = Config.ENEMY_INFOS[_arg1][1]; this.turnSpeed = Config.ENEMY_INFOS[_arg1][2]; this.damage = Config.ENEMY_INFOS[_arg1][3]; this.money = Config.ENEMY_INFOS[_arg1][4]; this.score = Config.ENEMY_INFOS[_arg1][5]; this.currentX = _arg2; this.currentY = _arg3; this.moveToX = _arg2; this.moveToY = _arg3; if (_arg2 == -1){ this.moveToX++; this.rotation = 0; } else { if (_arg2 == Config.FIELD_DIMENSIONX){ this.moveToX--; this.rotation = 180; } else { if (_arg3 == -1){ this.moveToY++; this.rotation = 90; } else { this.moveToY--; this.rotation = -90; }; }; }; this.distanceFromCurrent = 0; this.x = ((_arg2 * Config.BLOCK_SIZE) + (Config.BLOCK_SIZE / 2)); this.y = ((_arg3 * Config.BLOCK_SIZE) + (Config.BLOCK_SIZE / 2)); isTurning = false; } private function updateDirection():void{ var _local1:int; var _local2:int; x = ((moveToX * Config.BLOCK_SIZE) + (Config.BLOCK_SIZE / 2)); y = ((moveToY * Config.BLOCK_SIZE) + (Config.BLOCK_SIZE / 2)); if (!Object(parent.parent).roads[moveToX][moveToY]){ currentX = moveToX; currentY = moveToY; return; }; _local1 = Object(parent.parent).roads[moveToX][moveToY].getNextDirection(currentX, currentY); if ((currentY - 1) == moveToY){ _local2 = Road.DIRECTION_UP; } else { if ((currentY + 1) == moveToY){ _local2 = Road.DIRECTION_DOWN; } else { if ((currentX - 1) == moveToX){ _local2 = Road.DIRECTION_LEFT; } else { _local2 = Road.DIRECTION_RIGHT; }; }; }; currentX = moveToX; currentY = moveToY; distanceFromCurrent = 0; switch (_local1){ case Road.DIRECTION_UP: moveToY--; break; case Road.DIRECTION_DOWN: moveToY++; break; case Road.DIRECTION_LEFT: moveToX--; break; case Road.DIRECTION_RIGHT: moveToX++; break; }; if (_local2 == _local1){ return; }; isTurning = true; switch (_local1){ case Road.DIRECTION_UP: turnTarget = -90; break; case Road.DIRECTION_DOWN: turnTarget = 90; break; case Road.DIRECTION_LEFT: turnTarget = 180; break; case Road.DIRECTION_RIGHT: turnTarget = 0; break; }; } public function move(_arg1:Number, _arg2:Number):void{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local3 = 0; _local6 = 0; if (!isTurning){ _local3 = ((speed * _arg1) / 1000); if (_local3 > _arg2){ _local3 = _arg2; }; if ((_local3 + distanceFromCurrent) >= Config.BLOCK_SIZE){ _local6 = (((Config.BLOCK_SIZE - distanceFromCurrent) * 1000) / speed); _local3 = (Config.BLOCK_SIZE - distanceFromCurrent); }; moveDistance(_local3); if (_local6 > 0){ updateDirection(); }; } else { _local4 = ((turnSpeed * _arg1) / 1000); _local5 = turnAngle(_local4); if (_local5 > 0){ _local6 = ((_local5 * 1000) / turnSpeed); }; }; if (_local6 > 0){ move(_local6, (_arg2 - _local3)); }; } private function moveDistance(_arg1:Number):void{ x = (x + ((moveToX - currentX) * _arg1)); y = (y + ((moveToY - currentY) * _arg1)); distanceFromCurrent = (distanceFromCurrent + _arg1); } } }//package com.novelgames.flashgames.castledefense
Section 16
//Enemy0 (com.novelgames.flashgames.castledefense.Enemy0) package com.novelgames.flashgames.castledefense { public dynamic class Enemy0 extends Enemy { } }//package com.novelgames.flashgames.castledefense
Section 17
//Enemy1 (com.novelgames.flashgames.castledefense.Enemy1) package com.novelgames.flashgames.castledefense { public dynamic class Enemy1 extends Enemy { } }//package com.novelgames.flashgames.castledefense
Section 18
//Enemy2 (com.novelgames.flashgames.castledefense.Enemy2) package com.novelgames.flashgames.castledefense { public dynamic class Enemy2 extends Enemy { } }//package com.novelgames.flashgames.castledefense
Section 19
//Explosion (com.novelgames.flashgames.castledefense.Explosion) package com.novelgames.flashgames.castledefense { import flash.display.*; import flash.events.*; import com.novelgames.flashgames.common.*; import flash.utils.*; public class Explosion extends MovieClip { private var totalTime:int; private var timer:Timer; private var startTime:int; private function onTime(_arg1:TimerEvent):void{ var _local2:int; var _local3:Number; _local2 = NewTimer.getTimer(); _local3 = ((_local2 - startTime) / totalTime); if (_local3 > 1){ _local3 = 1; }; _arg1.updateAfterEvent(); gotoAndStop((1 + Math.floor((_local3 * totalFrames)))); if (_local3 >= 1){ timer.stop(); parent.removeChild(this); }; } public function initialize(){ startTime = NewTimer.getTimer(); totalTime = Math.floor(((totalFrames * 1000) / stage.frameRate)); timer = new NewTimer(1, 0); timer.addEventListener(TimerEvent.TIMER, onTime); timer.start(); stop(); } } }//package com.novelgames.flashgames.castledefense
Section 20
//ExplosionBullet (com.novelgames.flashgames.castledefense.ExplosionBullet) package com.novelgames.flashgames.castledefense { public dynamic class ExplosionBullet extends Explosion { } }//package com.novelgames.flashgames.castledefense
Section 21
//ExplosionCastle (com.novelgames.flashgames.castledefense.ExplosionCastle) package com.novelgames.flashgames.castledefense { public dynamic class ExplosionCastle extends Explosion { } }//package com.novelgames.flashgames.castledefense
Section 22
//ExplosionEnemy (com.novelgames.flashgames.castledefense.ExplosionEnemy) package com.novelgames.flashgames.castledefense { public dynamic class ExplosionEnemy extends Explosion { } }//package com.novelgames.flashgames.castledefense
Section 23
//Game (com.novelgames.flashgames.castledefense.Game) package com.novelgames.flashgames.castledefense { import flash.display.*; import flash.events.*; import com.novelgames.flashgames.common.*; import flash.media.*; import flash.utils.*; import flash.text.*; import flash.geom.*; public class Game extends Game { private var minRoadX:int; public var message:Message; public var moneyText:TextField; private var minRoadY:int; private var soundGameOver:Sound; private var enemies:Array; private var maxRoadX:int; private var maxRoadY:int; public var cannonSetsHolder:MovieClip; private var castleX:int; private var castleY:int; private var enterX:int; private var lastTime:int; private var enterY:int; private var __score:int; public var bulletsHolder:MovieClip; public var levelText:TextField; public var scoreText:TextField; private var __money:int; public var roadsHolder:MovieClip; private var soundCastle:Sound; private var soundBuySell:Sound; private var cannonSets:Array; private var life:Number; private var castle:Castle; public var sellButton:SimpleButton; public var sellDialog:SellDialog; public var putDialog:PutDialog; public var moneysHolder:MovieClip; private var timer:Timer; public var roads:Array; public var buyButton:SimpleButton; private var soundAllClear:Sound; public var buyDialog:BuyDialog; public var enemiesHolder:MovieClip; public var explosionsHolder:MovieClip; private var soundLevelClear:Sound; private var __level:int; private var bullets:Array; private var soundEnemy:Sound; public function Game(){ level = 1; score = 0; money = Config.MONEY_INITIAL; life = Config.CASTLE_LIFE; soundEnemy = new SoundEnemy(); soundCastle = new SoundCastle(); soundLevelClear = new SoundLevelClear(); soundAllClear = new SoundAllClear(); soundBuySell = new SoundBuySell(); soundGameOver = new SoundGameOver(); startGame(); } private function moveCannons(_arg1:int):void{ var _local2:int; var _local3:int; _local2 = 0; while (_local2 < Config.FIELD_DIMENSIONX) { _local3 = 0; while (_local3 < Config.FIELD_DIMENSIONY) { if (!cannonSets[_local2][_local3]){ } else { if (cannonSets[_local2][_local3].move(_arg1, enemies)){ addBullet(_local2, _local3); }; }; _local3++; }; _local2++; }; } private function startNextLevel(_arg1:TimerEvent):void{ startLevel((level + 1)); } private function showSellDialog(_arg1:MouseEvent):void{ pause(); sellDialog.x = Config.FIELD_X; sellDialog.y = Config.FIELD_Y; sellDialog.show(cannonSets); } private function getInterEnemyDistance(_arg1:Enemy, _arg2:Enemy):Number{ var _local3:Number; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; _local3 = (_arg2.distanceFromCurrent - _arg1.distanceFromCurrent); _local4 = _arg1.currentX; _local5 = _arg1.currentY; _local6 = _arg1.moveToX; _local7 = _arg1.moveToY; while (((!((_local4 == _arg2.currentX))) || (!((_local5 == _arg2.currentY))))) { _local3 = (_local3 + Config.BLOCK_SIZE); _local8 = _local4; _local9 = _local5; _local4 = _local6; _local5 = _local7; if (!roads[_local6][_local7]){ break; }; switch (roads[_local6][_local7].getNextDirection(_local8, _local9)){ case Road.DIRECTION_UP: _local7--; break; case Road.DIRECTION_DOWN: _local7++; break; case Road.DIRECTION_LEFT: _local6--; break; case Road.DIRECTION_RIGHT: _local6++; break; }; }; return (_local3); } private function showLevelFinished(_arg1:TimerEvent):void{ message.hide(); createEnemies(); bullets = new Array(); lastTime = NewTimer.getTimer(); timer = new NewTimer(1, 0); timer.addEventListener(TimerEvent.TIMER, onPlayTime); timer.start(); buyButton.addEventListener(MouseEvent.CLICK, showBuyDialog); buyButton.enabled = true; sellButton.addEventListener(MouseEvent.CLICK, showSellDialog); sellButton.enabled = true; showBuyDialog(); } private function showPlayAgain(_arg1:TimerEvent):void{ Object(parent).showEnterHighScore(score); message.showPlayAgain(); } private function checkHitEnemies(_arg1:Bullet, _arg2:Number, _arg3:Number):Boolean{ var _local4:int; _local4 = 0; while (_local4 < enemies.length) { if (checkHitEnemy(_arg1, _arg2, _arg3, enemies[_local4])){ enemies[_local4].life = (enemies[_local4].life - _arg1.power); if (enemies[_local4].life <= 0){ createExplosionEnemy(enemies[_local4].x, enemies[_local4].y); createMoneyPopup(enemies[_local4].x, enemies[_local4].y, enemies[_local4].money); money = (money + enemies[_local4].money); score = (score + enemies[_local4].score); enemiesHolder.removeChild(enemies[_local4]); enemies.splice(_local4, 1); soundEnemy.play(); }; return (true); }; _local4++; }; return (false); } private function createRoad(_arg1:int, _arg2:int):void{ var _local3:Road; _local3 = new Road(); _local3.initialize(_arg1, _arg2); roads[_arg1][_arg2] = _local3; roadsHolder.addChild(_local3); } private function checkHitCastle():void{ if (enemies.length == 0){ return; }; if (((!((enemies[0].currentX == castleX))) || (!((enemies[0].currentY == castleY))))){ return; }; life = (life - enemies[0].damage); if (life < 0){ life = 0; }; castle.showDamage(life); createExplosionEnemy(enemies[0].x, enemies[0].y); createExplosionCastle(); enemiesHolder.removeChild(enemies[0]); enemies.splice(0, 1); soundCastle.play(); } private function checkLevelClear():Boolean{ var _local1:int; if (enemies.length > 0){ return (false); }; score = (score + Config.SCORE_LEVEL); _local1 = 0; while (_local1 < bullets.length) { bulletsHolder.removeChild(bullets[_local1]); _local1++; }; bullets = new Array(); timer.stop(); buyButton.removeEventListener(TimerEvent.TIMER, showBuyDialog); buyButton.enabled = false; sellButton.removeEventListener(TimerEvent.TIMER, showSellDialog); buyButton.enabled = false; if (level < Config.LEVEL_NO){ message.showLevelClear(); soundLevelClear.play(); timer = new NewTimer(Config.MESSAGE_LEVELCLEARTIME, 1); timer.addEventListener(TimerEvent.TIMER, startNextLevel); timer.start(); } else { message.showAllClear(); soundAllClear.play(); timer = new NewTimer(Config.MESSAGE_ALLCLEARTIME, 1); timer.addEventListener(TimerEvent.TIMER, showPlayAgain); timer.start(); }; return (true); } private function getCannotPutCannonBlocks():Array{ var _local1:Array; var _local2:int; var _local3:int; _local1 = new Array(); _local2 = 0; while (_local2 < Config.FIELD_DIMENSIONX) { _local3 = 0; while (_local3 < Config.FIELD_DIMENSIONY) { if (getCanPutCannon(_local2, _local3)){ } else { _local1.push({x:_local2, y:_local3}); }; _local3++; }; _local2++; }; return (_local1); } private function startLevel(_arg1:int):void{ this.level = _arg1; buyButton.enabled = false; sellButton.enabled = false; message.showLevel(_arg1); timer = new NewTimer(Config.MESSAGE_LEVELTIME, 1); timer.addEventListener(TimerEvent.TIMER, showLevelFinished); timer.start(); } public function addCannonSet(_arg1:int, _arg2:int, _arg3:int):void{ var _local4:int; var _local5:Class; var _local6:CannonSet; _local4 = getCannonDirection(_arg1, _arg2); _local5 = Class(getDefinitionByName(("com.novelgames.flashgames.castledefense.CannonSet" + _arg3))); _local6 = new (_local5); _local6.x = ((Config.BLOCK_SIZE / 2) + (_arg1 * Config.BLOCK_SIZE)); _local6.y = ((Config.BLOCK_SIZE / 2) + (_arg2 * Config.BLOCK_SIZE)); _local6.initialize(_arg3); switch (_local4){ case Road.DIRECTION_UP: _local6.setDefaultRotation(-90); break; case Road.DIRECTION_DOWN: _local6.setDefaultRotation(90); break; case Road.DIRECTION_LEFT: _local6.setDefaultRotation(180); break; case Road.DIRECTION_RIGHT: _local6.setDefaultRotation(0); break; }; cannonSets[_arg1][_arg2] = _local6; cannonSetsHolder.addChild(_local6); showBuyDialog(); } public function get score():int{ return (__score); } private function createCannons():void{ var _local1:int; var _local2:int; cannonSets = new Array(); _local1 = 0; while (_local1 < Config.FIELD_DIMENSIONX) { cannonSets[_local1] = new Array(); _local2 = 0; while (_local2 < Config.FIELD_DIMENSIONY) { cannonSets[_local1][_local2] = null; _local2++; }; _local1++; }; } private function moveBullets(_arg1:int):void{ var _local2:Number; var _local3:Number; var _local4:Boolean; var _local5:int; _local5 = 0; while (_local5 < bullets.length) { _local2 = bullets[_local5].x; _local3 = bullets[_local5].y; _local4 = bullets[_local5].move(_arg1); if (checkHitEnemies(bullets[_local5], _local2, _local3)){ _local4 = true; }; if (_local4){ bulletsHolder.removeChild(bullets[_local5]); bullets.splice(_local5, 1); _local5--; }; _local5++; }; } private function getCannonDirection(_arg1:int, _arg2:int):int{ var _local3:Array; var _local4:Array; var _local5:Array; var _local6:int; var _local7:int; var _local8:int; var _local9:Boolean; var _local10:Boolean; var _local11:Boolean; var _local12:Boolean; var _local13:int; var _local14:int; _local3 = [Road.DIRECTION_UP, Road.DIRECTION_DOWN, Road.DIRECTION_LEFT, Road.DIRECTION_RIGHT]; _local4 = [[0, -1], [0, 1], [-1, 0], [1, 0]]; _local6 = int.MAX_VALUE; if (_arg1 < minRoadX){ return (Road.DIRECTION_RIGHT); }; if (_arg1 > maxRoadX){ return (Road.DIRECTION_LEFT); }; if (_arg2 < minRoadY){ return (Road.DIRECTION_DOWN); }; if (_arg2 > maxRoadY){ return (Road.DIRECTION_UP); }; _local13 = 0; while (_local13 < _local3.length) { _local14 = 1; while (true) { _local7 = (_arg1 + (_local14 * _local4[_local13][0])); _local8 = (_arg2 + (_local14 * _local4[_local13][1])); if ((((((((_local7 < 0)) || ((_local7 >= Config.FIELD_DIMENSIONX)))) || ((_local8 < 0)))) || ((_local8 >= Config.FIELD_DIMENSIONY)))){ break; }; if (roads[_local7][_local8] == null){ } else { if (_local14 == _local6){ _local5.push(_local3[_local13]); } else { if (_local14 < _local6){ _local5 = [_local3[_local13]]; _local6 = _local14; }; }; break; }; _local14++; }; _local13++; }; _local9 = false; _local10 = false; _local11 = false; _local12 = false; _local13 = 0; while (_local13 < _local5.length) { switch (_local5[_local13]){ case Road.DIRECTION_UP: _local11 = true; break; case Road.DIRECTION_DOWN: _local12 = true; break; case Road.DIRECTION_LEFT: _local9 = true; break; case Road.DIRECTION_RIGHT: _local10 = true; break; }; _local13++; }; switch (_local5.length){ case 1: return (_local5[0]); case 2: if (((_local9) && (_local10))){ return (((_arg2 >= (Config.FIELD_DIMENSIONY / 2))) ? Road.DIRECTION_UP : Road.DIRECTION_DOWN); }; if (((_local11) && (_local12))){ return (((_arg1 >= (Config.FIELD_DIMENSIONX / 2))) ? Road.DIRECTION_LEFT : Road.DIRECTION_RIGHT); }; if (Math.abs((_arg1 - (Config.FIELD_DIMENSIONX / 2))) > Math.abs((_arg2 - (Config.FIELD_DIMENSIONY / 2)))){ return ((_local9) ? Road.DIRECTION_LEFT : Road.DIRECTION_RIGHT); } else { return ((_local11) ? Road.DIRECTION_UP : Road.DIRECTION_DOWN); }; case 3: if (!_local9){ return (Road.DIRECTION_RIGHT); }; if (!_local10){ return (Road.DIRECTION_LEFT); }; if (!_local11){ return (Road.DIRECTION_DOWN); }; if (!_local12){ return (Road.DIRECTION_UP); }; default: if (Math.abs((_arg1 - (Config.FIELD_DIMENSIONX / 2))) > Math.abs((_arg2 - (Config.FIELD_DIMENSIONY / 2)))){ return (((_arg1 >= (Config.FIELD_DIMENSIONX / 2))) ? Road.DIRECTION_LEFT : Road.DIRECTION_RIGHT); } else { return (((_arg2 >= (Config.FIELD_DIMENSIONY / 2))) ? Road.DIRECTION_UP : Road.DIRECTION_DOWN); }; }; } public function get money():int{ return (__money); } private function checkHitEnemy(_arg1:Bullet, _arg2:Number, _arg3:Number, _arg4:Enemy):Boolean{ var _local5:Number; var _local6:Number; var _local7:int; var _local8:Number; var _local9:Number; var _local10:int; _local5 = (_arg1.x - _arg2); _local6 = (_arg1.y - _arg3); _local7 = Math.ceil((Math.max(Math.abs(_local5), Math.abs(_local6)) / (Config.BLOCK_SIZE / 2))); _local10 = 1; while (_local10 <= _local7) { _local8 = (_arg2 + ((_local5 * _local10) / _local7)); _local9 = (_arg3 + ((_local6 * _local10) / _local7)); if (_arg4.hitTestPoint((_local8 + Config.FIELD_X), (_local9 + Config.FIELD_Y), false)){ createExplosionBullet(_local8, _local9); return (true); }; _local10++; }; return (false); } private function showBuyDialog(_arg1:MouseEvent=null):void{ pause(); buyDialog.show(); } public function sellCannonSet(_arg1:int, _arg2:int):void{ var _local3:CannonSet; _local3 = cannonSets[_arg1][_arg2]; money = (money + (_local3.price * Config.CANNON_SELLPRICERATIO)); cannonSetsHolder.removeChild(_local3); cannonSets[_arg1][_arg2] = null; soundBuySell.play(); } public function set level(_arg1:int):void{ __level = _arg1; levelText.text = _arg1.toString(); } private function checkGameOver():Boolean{ if (life > 0){ return (false); }; timer.stop(); buyButton.removeEventListener(TimerEvent.TIMER, showBuyDialog); buyButton.enabled = false; sellButton.removeEventListener(TimerEvent.TIMER, showSellDialog); buyButton.enabled = false; message.showGameOver(); soundGameOver.play(); timer = new NewTimer(Config.MESSAGE_GAMEOVERTIME, 1); timer.addEventListener(TimerEvent.TIMER, showPlayAgain); timer.start(); return (true); } private function addBullet(_arg1:int, _arg2:int):void{ var _local3:CannonSet; var _local4:Class; var _local5:Bullet; _local3 = cannonSets[_arg1][_arg2]; _local4 = Class(getDefinitionByName(("com.novelgames.flashgames.castledefense.Bullet" + _local3.type))); _local5 = new (_local4); _local5.initialize(cannonSets[_arg1][_arg2].x, cannonSets[_arg1][_arg2].y, cannonSets[_arg1][_arg2].power, cannonSets[_arg1][_arg2].bulletSpeed, cannonSets[_arg1][_arg2].bulletDistance, cannonSets[_arg1][_arg2].cannon.rotation); bullets.push(_local5); bulletsHolder.addChild(_local5); } private function createCastle():void{ castle = new Castle(); castle.x = (castleX * Config.BLOCK_SIZE); castle.y = (castleY * Config.BLOCK_SIZE); roadsHolder.addChild(castle); } private function moveEnemies(_arg1:int):void{ var _local2:Number; var _local3:int; _local2 = Number.POSITIVE_INFINITY; _local3 = 0; while (_local3 < enemies.length) { enemies[_local3].move(_arg1, _local2); if ((((_local3 >= 0)) && ((_local3 < (enemies.length - 1))))){ _local2 = (getInterEnemyDistance(enemies[(_local3 + 1)], enemies[_local3]) - Config.BLOCK_SIZE); if (_local2 < 0){ _local2 = 0; }; }; _local3++; }; } private function onPlayTime(_arg1:TimerEvent):void{ var _local2:int; _local2 = NewTimer.getTimer(); _arg1.updateAfterEvent(); moveEnemies((_local2 - lastTime)); moveCannons((_local2 - lastTime)); moveBullets(_local2); checkHitCastle(); if (!checkGameOver()){ checkLevelClear(); }; lastTime = _local2; } public function buyCannon(_arg1:int):void{ var _local2:Array; _local2 = getCannotPutCannonBlocks(); money = (money - Config.CANNON_INFOS[_arg1][3]); putDialog.x = Config.FIELD_X; putDialog.y = Config.FIELD_Y; putDialog.show(_arg1, _local2); soundBuySell.play(); } public function set score(_arg1:int):void{ __score = _arg1; scoreText.text = _arg1.toString(); } private function updateRoadDirections():void{ var _local1:int; var _local2:int; _local1 = 0; while (_local1 < roads.length) { _local2 = 0; while (_local2 < roads[_local1].length) { if (!roads[_local1][_local2]){ } else { roads[_local1][_local2].setDirection(roads); }; _local2++; }; _local1++; }; } private function startGame():void{ roadsHolder.x = Config.FIELD_X; roadsHolder.y = Config.FIELD_Y; cannonSetsHolder.x = Config.FIELD_X; cannonSetsHolder.y = Config.FIELD_Y; bulletsHolder.x = Config.FIELD_X; bulletsHolder.y = Config.FIELD_Y; enemiesHolder.x = Config.FIELD_X; enemiesHolder.y = Config.FIELD_Y; moneysHolder.x = Config.FIELD_X; moneysHolder.y = Config.FIELD_Y; explosionsHolder.x = Config.FIELD_X; explosionsHolder.y = Config.FIELD_Y; createRoads(); createCastle(); createCannons(); startLevel(1); } private function getCanPutCannon(_arg1:int, _arg2:int):Boolean{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; if (roads[_arg1][_arg2] != null){ return (false); }; if (cannonSets[_arg1][_arg2] != null){ return (false); }; _local3 = ((_arg1 * Config.BLOCK_SIZE) + Config.FIELD_X); _local4 = ((_arg2 * Config.BLOCK_SIZE) + Config.FIELD_Y); _local5 = (_local3 + Config.BLOCK_SIZE); _local6 = (_local4 + Config.BLOCK_SIZE); if (getIntersectsThing(_local3, _local4, _local5, _local6, castle.castle)){ return (false); }; if (getIntersectsThing(_local3, _local4, _local5, _local6, buyButton)){ return (false); }; if (getIntersectsThing(_local3, _local4, _local5, _local6, sellButton)){ return (false); }; return (true); } public function get level():int{ return (__level); } public function set money(_arg1:int):void{ __money = _arg1; moneyText.text = (Config.MONEY_PREFIX + _arg1.toString()); } private function createEnemies():void{ var _local1:int; var _local2:Class; var _local3:Enemy; var _local4:int; var _local5:int; var _local6:int; var _local7:int; _local1 = ((level - 1) * Config.LEVEL_LIFEINCREASE); enemies = new Array(); _local6 = 0; while (_local6 < Config.LEVEL_INFOS[(level - 1)].length) { _local4 = Config.LEVEL_INFOS[(level - 1)][_local6][0]; _local5 = Config.LEVEL_INFOS[(level - 1)][_local6][1]; _local2 = Class(getDefinitionByName(("com.novelgames.flashgames.castledefense.Enemy" + _local4))); _local7 = 0; while (_local7 < _local5) { _local3 = new (_local2); _local3.initialize(_local4, enterX, enterY, _local1); enemiesHolder.addChild(_local3); enemies.push(_local3); _local7++; }; _local6++; }; } public function buyFinished():void{ unpause(); } private function createExplosionEnemy(_arg1:Number, _arg2:Number):void{ var _local3:ExplosionEnemy; _local3 = new ExplosionEnemy(); _local3.x = _arg1; _local3.y = _arg2; explosionsHolder.addChild(_local3); _local3.initialize(); } private function getEnterXY():void{ var _local1:int; _local1 = 0; while (_local1 < Config.FIELD_DIMENSIONX) { if (((roads[_local1][0]) && (roads[_local1][0].toUp))){ enterX = _local1; enterY = -1; return; }; if (((roads[_local1][(Config.FIELD_DIMENSIONY - 1)]) && (roads[_local1][(Config.FIELD_DIMENSIONY - 1)].toDown))){ enterX = _local1; enterY = Config.FIELD_DIMENSIONY; return; }; _local1++; }; _local1 = 0; while (_local1 < Config.FIELD_DIMENSIONY) { if (((roads[0][_local1]) && (roads[0][_local1].toLeft))){ enterX = -1; enterY = _local1; return; }; if (((roads[(Config.FIELD_DIMENSIONX - 1)][_local1]) && (roads[(Config.FIELD_DIMENSIONX - 1)][_local1].toRight))){ enterX = Config.FIELD_DIMENSIONX; enterY = _local1; return; }; _local1++; }; } private function createRoads():void{ var _local1:String; var _local2:int; var _local3:int; minRoadX = Config.FIELD_DIMENSIONX; minRoadY = Config.FIELD_DIMENSIONY; maxRoadX = -1; maxRoadY = -1; roads = new Array(); _local2 = 0; while (_local2 < Config.FIELD_DIMENSIONX) { roads[_local2] = new Array(); _local3 = 0; while (_local3 < Config.FIELD_DIMENSIONY) { roads[_local2][_local3] = null; _local3++; }; _local2++; }; _local2 = 0; while (_local2 < Config.FIELD_LAYOUT.length) { _local3 = 0; while ((((_local3 < Config.FIELD_LAYOUT[_local2].length)) && ((_local3 < Config.FIELD_DIMENSIONX)))) { _local1 = Config.FIELD_LAYOUT[_local2].charAt(_local3); if (_local1 == "R"){ createRoad(_local3, _local2); if (_local3 < minRoadX){ minRoadX = _local3; }; if (_local3 > maxRoadX){ maxRoadX = _local3; }; if (_local2 < minRoadY){ minRoadY = _local2; }; if (_local2 > maxRoadY){ maxRoadY = _local2; }; } else { if (_local1 == "C"){ castleX = _local3; castleY = _local2; }; }; _local3++; }; _local2++; }; updateRoadDirections(); getEnterXY(); } private function createExplosionCastle():void{ var _local1:ExplosionCastle; var _local2:Rectangle; var _local3:Number; var _local4:Number; _local1 = new ExplosionCastle(); _local2 = castle.getBounds(roadsHolder); while (true) { _local3 = (_local2.x + (Math.random() * _local2.width)); _local4 = (_local2.y + (Math.random() * _local2.height)); if (castle.hitTestPoint((_local3 - roadsHolder.x), (_local4 - roadsHolder.y), true)){ break; }; }; _local1.x = _local3; _local1.y = _local4; explosionsHolder.addChild(_local1); _local1.initialize(); } private function createExplosionBullet(_arg1:Number, _arg2:Number):void{ var _local3:ExplosionBullet; _local3 = new ExplosionBullet(); _local3.x = _arg1; _local3.y = _arg2; explosionsHolder.addChild(_local3); _local3.initialize(); } private function getIntersectsThing(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5):Boolean{ var _local6:Rectangle; _local6 = _arg5.getBounds(this); if (_arg1 >= _local6.right){ return (false); }; if (_arg3 <= _local6.left){ return (false); }; if (_arg2 >= _local6.bottom){ return (false); }; if (_arg4 <= _local6.top){ return (false); }; return (true); } private function createMoneyPopup(_arg1:Number, _arg2:Number, _arg3:int):void{ var _local4:MoneyPopup; _local4 = new MoneyPopup(); _local4.initialize(_arg1, _arg2, _arg3); moneysHolder.addChild(_local4); } public function sellFinished():void{ unpause(); } } }//package com.novelgames.flashgames.castledefense
Section 24
//LifeBubble (com.novelgames.flashgames.castledefense.LifeBubble) package com.novelgames.flashgames.castledefense { import flash.display.*; public class LifeBubble extends MovieClip { private var maskX:Number; public var barMask:MovieClip; public function LifeBubble(){ maskX = barMask.x; } public function updateBar(_arg1:Number):void{ barMask.x = (maskX + (barMask.width * _arg1)); } } }//package com.novelgames.flashgames.castledefense
Section 25
//Logo (com.novelgames.flashgames.castledefense.Logo) package com.novelgames.flashgames.castledefense { import flash.display.*; public dynamic class Logo extends MovieClip { } }//package com.novelgames.flashgames.castledefense
Section 26
//Main (com.novelgames.flashgames.castledefense.Main) package com.novelgames.flashgames.castledefense { import com.novelgames.flashgames.common.*; import flash.media.*; import flash.utils.*; import com.novelgames.flashgames.preloader.*; public class Main extends MainDevelopment { public var __setPropDict:Dictionary; public var title:Title; public var __id0_:Preloader; public function Main(){ __setPropDict = new Dictionary(true); super(); addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 5, frame6, 6, frame7, 7, frame8, 8, frame9, 9, frame10); } override protected function getMusicGame():Sound{ return (new MusicGame()); } function frame10(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } function frame3(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } function frame6(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } function frame1(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } function frame7(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } function frame4(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } override protected function getGame():Game{ return (new Game()); } function frame9(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } function frame8(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } function frame2(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } function frame5(){ if ((((__setPropDict[__id0_] == undefined)) || (!((((int(__setPropDict[__id0_]) >= 1)) && ((int(__setPropDict[__id0_]) <= 10))))))){ __setPropDict[__id0_] = currentFrame; __setProp___id0__Scene1_preloader_1(); }; } override protected function getTitle():Title{ return (title); } function __setProp___id0__Scene1_preloader_1(){ try { __id0_["componentInspectorSetting"] = true; } catch(e:Error) { }; __id0_.background = "com.novelgames.flashgames.castledefense.Logo"; __id0_.barBorderColour = 0xFFFF00; __id0_.barBorderThickness = 2; __id0_.barColourBottom = 0xFF0000; __id0_.barColourTop = 0xFF0000; __id0_.barHeight = 20; __id0_.barWidth = 100; __id0_.barX = 250; __id0_.barY = 300; __id0_.enabled = true; __id0_.minShowTime = 1000; __id0_.playOrStop = "stop"; __id0_.startLabel = "game"; __id0_.visible = true; try { __id0_["componentInspectorSetting"] = false; } catch(e:Error) { }; } } }//package com.novelgames.flashgames.castledefense
Section 27
//Message (com.novelgames.flashgames.castledefense.Message) package com.novelgames.flashgames.castledefense { import flash.display.*; import flash.events.*; public class Message extends MovieClip { private var messagePlayAgain:MessagePlayAgain; private var messageLevel:MessageLevel; public function Message(){ stop(); } public function showLevelClear():void{ hide(); gotoAndStop("levelClear"); } public function showGameOver():void{ hide(); gotoAndStop("gameOver"); } public function showPlayAgain():void{ hide(); messagePlayAgain = new MessagePlayAgain(); messagePlayAgain.playAgainButton.addEventListener(MouseEvent.CLICK, playAgainButtonClicked); messagePlayAgain.homeButton.addEventListener(MouseEvent.CLICK, homeButtonClicked); this.addChild(messagePlayAgain); } public function showAllClear():void{ hide(); gotoAndStop("allClear"); } private function playAgainButtonClicked(_arg1:MouseEvent):void{ Object(parent.parent).gotoGamePage(); } public function hide():void{ if (messageLevel){ this.removeChild(messageLevel); messageLevel = null; }; gotoAndStop("hide"); } public function showLevel(_arg1:int):void{ hide(); messageLevel = new MessageLevel(); messageLevel.levelText.text = _arg1.toString(); this.addChild(messageLevel); } private function homeButtonClicked(_arg1:MouseEvent):void{ Object(parent.parent).gotoTitlePage(); } } }//package com.novelgames.flashgames.castledefense
Section 28
//MessageLevel (com.novelgames.flashgames.castledefense.MessageLevel) package com.novelgames.flashgames.castledefense { import flash.display.*; import flash.text.*; public dynamic class MessageLevel extends MovieClip { public var levelText:TextField; } }//package com.novelgames.flashgames.castledefense
Section 29
//MessagePlayAgain (com.novelgames.flashgames.castledefense.MessagePlayAgain) package com.novelgames.flashgames.castledefense { import flash.display.*; public dynamic class MessagePlayAgain extends MovieClip { public var playAgainButton:SimpleButton; public var homeButton:SimpleButton; } }//package com.novelgames.flashgames.castledefense
Section 30
//MoneyPopup (com.novelgames.flashgames.castledefense.MoneyPopup) package com.novelgames.flashgames.castledefense { import flash.display.*; import flash.events.*; import com.novelgames.flashgames.common.*; import flash.utils.*; import flash.text.*; public class MoneyPopup extends MovieClip { public var moneyText:TextField; private var timer:Timer; private var startTime:int; private var originalY:Number; private function stayFinished(_arg1:TimerEvent):void{ parent.removeChild(this); } private function onMoveTime(_arg1:TimerEvent):void{ var _local2:int; var _local3:Number; _local2 = NewTimer.getTimer(); _local3 = ((_local2 - startTime) / Config.MONEYPOPUP_MOVETIME); if (_local3 > 1){ _local3 = 1; }; _arg1.updateAfterEvent(); y = (originalY - (Math.sin((_local3 * Math.PI)) * Config.MONEYPOPUP_MOVEHEIGHT)); if (_local3 >= 1){ timer.stop(); timer = new NewTimer(Config.MONEYPOPUP_STAYTIME, 1); timer.addEventListener(TimerEvent.TIMER, stayFinished); timer.start(); }; } public function initialize(_arg1:Number, _arg2:Number, _arg3:int):void{ this.x = _arg1; this.y = _arg2; moneyText.text = (Config.MONEY_PREFIX + _arg3); originalY = _arg2; startTime = NewTimer.getTimer(); timer = new NewTimer(1, 0); timer.addEventListener(TimerEvent.TIMER, onMoveTime); timer.start(); } } }//package com.novelgames.flashgames.castledefense
Section 31
//MusicGame (com.novelgames.flashgames.castledefense.MusicGame) package com.novelgames.flashgames.castledefense { import flash.media.*; public dynamic class MusicGame extends Sound { } }//package com.novelgames.flashgames.castledefense
Section 32
//PutDialog (com.novelgames.flashgames.castledefense.PutDialog) package com.novelgames.flashgames.castledefense { import flash.display.*; import flash.events.*; import flash.utils.*; public class PutDialog extends MovieClip { private var cannonY:int; private var cannonSet:CannonSet; private var range:CannonSetRange; private var cross:Cross; private var cannonX:int; private var cannotPutBlocks:Array; private var index:int; public function PutDialog(){ visible = false; } public function show(_arg1:int, _arg2:Array):void{ this.index = _arg1; this.cannotPutBlocks = _arg2; drawBackground(); createCannonSet(); createCross(); createRange(); this.addEventListener(MouseEvent.MOUSE_MOVE, onDragMouseMove); this.addEventListener(MouseEvent.MOUSE_DOWN, onDragMouseDown); onDragMouseMove(); visible = true; } public function hide():void{ this.removeEventListener(MouseEvent.MOUSE_MOVE, onDragMouseMove); this.removeEventListener(MouseEvent.MOUSE_DOWN, onDragMouseDown); visible = false; } private function onDragMouseDown(_arg1:MouseEvent):void{ if (cross.visible){ return; }; hide(); Object(parent).addCannonSet(cannonX, cannonY, index); } private function createCannonSet():void{ var _local1:Class; if (cannonSet){ this.removeChild(cannonSet); }; _local1 = Class(getDefinitionByName(("com.novelgames.flashgames.castledefense.CannonSet" + index))); cannonSet = new (_local1); cannonSet.initialize(index); this.addChild(cannonSet); } private function drawBackground():void{ var _local1:Number; var _local2:Number; var _local3:int; this.graphics.clear(); this.graphics.beginFill(0, 0); this.graphics.moveTo(-(Config.FIELD_X), -(Config.FIELD_Y)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), -(Config.FIELD_Y)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), (-(Config.FIELD_Y) + stage.stageHeight)); this.graphics.lineTo(-(Config.FIELD_X), (-(Config.FIELD_Y) + stage.stageHeight)); this.graphics.lineTo(-(Config.FIELD_X), -(Config.FIELD_Y)); this.graphics.endFill(); if (Config.FIELD_Y > 0){ this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo(-(Config.FIELD_X), -(Config.FIELD_Y)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), -(Config.FIELD_Y)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), 0); this.graphics.lineTo(-(Config.FIELD_X), 0); this.graphics.lineTo(-(Config.FIELD_X), -(Config.FIELD_Y)); this.graphics.endFill(); }; if (Config.FIELD_X > 0){ this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo(-(Config.FIELD_X), 0); this.graphics.lineTo(0, 0); this.graphics.lineTo(0, (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo(-(Config.FIELD_X), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo(-(Config.FIELD_X), 0); this.graphics.endFill(); }; if ((Config.FIELD_X + (Config.FIELD_DIMENSIONX * Config.BLOCK_SIZE)) < stage.stageWidth){ this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo((Config.FIELD_DIMENSIONX * Config.BLOCK_SIZE), 0); this.graphics.lineTo((stage.stageWidth - Config.FIELD_X), 0); this.graphics.lineTo((stage.stageWidth - Config.FIELD_X), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo((Config.FIELD_DIMENSIONX * Config.BLOCK_SIZE), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo((Config.FIELD_DIMENSIONX * Config.BLOCK_SIZE), 0); this.graphics.endFill(); }; if ((Config.FIELD_Y + (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)) < stage.stageHeight){ this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo(-(Config.FIELD_X), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), (-(Config.FIELD_Y) + stage.stageHeight)); this.graphics.lineTo(-(Config.FIELD_X), (-(Config.FIELD_Y) + stage.stageHeight)); this.graphics.lineTo(-(Config.FIELD_X), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.endFill(); }; _local3 = 0; while (_local3 < cannotPutBlocks.length) { _local1 = (cannotPutBlocks[_local3].x * Config.BLOCK_SIZE); _local2 = (cannotPutBlocks[_local3].y * Config.BLOCK_SIZE); this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo(_local1, _local2); this.graphics.lineTo((_local1 + Config.BLOCK_SIZE), _local2); this.graphics.lineTo((_local1 + Config.BLOCK_SIZE), (_local2 + Config.BLOCK_SIZE)); this.graphics.lineTo(_local1, (_local2 + Config.BLOCK_SIZE)); this.graphics.lineTo(_local1, _local2); this.graphics.endFill(); _local3++; }; } private function createRange():void{ var _local1:Number; _local1 = cannonSet.bulletDistance; if (range){ this.removeChild(range); }; range = new CannonSetRange(); range.width = (_local1 * 2); range.height = (_local1 * 2); this.addChildAt(range, 1); } private function onDragMouseMove(_arg1:MouseEvent=null):void{ var _local2:int; cannonX = Math.floor((mouseX / Config.BLOCK_SIZE)); cannonY = Math.floor((mouseY / Config.BLOCK_SIZE)); if (cannonX < 0){ cannonX = 0; } else { if (cannonX >= Config.FIELD_DIMENSIONX){ cannonX = (Config.FIELD_DIMENSIONX - 1); }; }; if (cannonY < 0){ cannonY = 0; } else { if (cannonY >= Config.FIELD_DIMENSIONY){ cannonY = (Config.FIELD_DIMENSIONY - 1); }; }; _local2 = 0; while (_local2 < cannotPutBlocks.length) { if ((((cannotPutBlocks[_local2].x == cannonX)) && ((cannotPutBlocks[_local2].y == cannonY)))){ break; }; _local2++; }; cannonSet.x = ((Config.BLOCK_SIZE / 2) + (cannonX * Config.BLOCK_SIZE)); cannonSet.y = ((Config.BLOCK_SIZE / 2) + (cannonY * Config.BLOCK_SIZE)); range.x = cannonSet.x; range.y = cannonSet.y; if (_local2 < cannotPutBlocks.length){ cross.x = cannonSet.x; cross.y = cannonSet.y; cross.visible = true; this.buttonMode = true; } else { cross.visible = false; this.buttonMode = false; }; } private function createCross():void{ if (cross){ this.removeChild(cross); }; cross = new Cross(); this.addChild(cross); } } }//package com.novelgames.flashgames.castledefense
Section 33
//Road (com.novelgames.flashgames.castledefense.Road) package com.novelgames.flashgames.castledefense { import flash.display.*; public class Road extends MovieClip { public var toLeft:Boolean; public var toRight:Boolean; public var toUp:Boolean; public var toDown:Boolean; public var indexX:int; public var indexY:int; public static var DIRECTION_DOWN:int = 2; public static var DIRECTION_LEFT:int = 3; public static var DIRECTION_NONE:int = 0; public static var DIRECTION_UP:int = 1; public static var DIRECTION_RIGHT:int = 4; public function getNextDirection(_arg1:int, _arg2:int):int{ if (((toUp) && (!((_arg2 == (indexY - 1)))))){ return (DIRECTION_UP); }; if (((toDown) && (!((_arg2 == (indexY + 1)))))){ return (DIRECTION_DOWN); }; if (((toLeft) && (!((_arg1 == (indexX - 1)))))){ return (DIRECTION_LEFT); }; if (((toRight) && (!((_arg1 == (indexX + 1)))))){ return (DIRECTION_RIGHT); }; return (DIRECTION_NONE); } public function setDirection(_arg1:Array):void{ var _local2:String; _local2 = ""; if ((((indexY > 0)) && (!((_arg1[indexX][(indexY - 1)] == null))))){ toUp = true; _local2 = (_local2 + "U"); }; if ((((indexX > 0)) && (!((_arg1[(indexX - 1)][indexY] == null))))){ toLeft = true; _local2 = (_local2 + "L"); }; if ((((indexY < (Config.FIELD_DIMENSIONY - 1))) && (!((_arg1[indexX][(indexY + 1)] == null))))){ toDown = true; _local2 = (_local2 + "D"); }; if ((((indexX < (Config.FIELD_DIMENSIONX - 1))) && (!((_arg1[(indexX + 1)][indexY] == null))))){ toRight = true; _local2 = (_local2 + "R"); }; if ((((_local2 == "U")) || ((_local2 == "D")))){ toUp = true; toDown = true; _local2 = "UD"; } else { if ((((_local2 == "L")) || ((_local2 == "R")))){ toLeft = true; toRight = true; _local2 = "LR"; }; }; gotoAndStop(_local2); } public function initialize(_arg1:int, _arg2:int):void{ this.indexX = _arg1; this.indexY = _arg2; this.x = (_arg1 * Config.BLOCK_SIZE); this.y = (_arg2 * Config.BLOCK_SIZE); toUp = false; toDown = false; toLeft = false; toRight = false; stop(); } } }//package com.novelgames.flashgames.castledefense
Section 34
//SellDialog (com.novelgames.flashgames.castledefense.SellDialog) package com.novelgames.flashgames.castledefense { import flash.display.*; import flash.events.*; public class SellDialog extends MovieClip { private var cannonY:int; private var cannonX:int; public var sellBubble:MovieClip; private var cannonSets:Array; public function SellDialog(){ visible = false; } public function show(_arg1:Array):void{ this.cannonSets = _arg1; drawBackground(); this.addEventListener(MouseEvent.MOUSE_MOVE, onNormalMove); this.addEventListener(MouseEvent.MOUSE_DOWN, onNormalDown); onNormalMove(); visible = true; } private function getCannonSet(_arg1:int, _arg2:int):CannonSet{ if ((((_arg1 < 0)) || ((_arg1 >= Config.FIELD_DIMENSIONX)))){ return (null); }; if ((((_arg2 < 0)) || ((_arg2 >= Config.FIELD_DIMENSIONY)))){ return (null); }; return (cannonSets[_arg1][_arg2]); } private function onNormalDown(_arg1:MouseEvent):void{ if (sellBubble.visible){ Object(parent).sellCannonSet(cannonX, cannonY); drawBackground(); onNormalMove(); } else { hide(); Object(parent).sellFinished(); }; } public function hide():void{ this.removeEventListener(MouseEvent.MOUSE_MOVE, onNormalMove); this.removeEventListener(MouseEvent.MOUSE_DOWN, onNormalDown); visible = false; } private function onNormalMove(_arg1:MouseEvent=null):void{ var _local2:CannonSet; cannonX = Math.floor((mouseX / Config.BLOCK_SIZE)); cannonY = Math.floor((mouseY / Config.BLOCK_SIZE)); _local2 = getCannonSet(cannonX, cannonY); if (!_local2){ sellBubble.visible = false; this.buttonMode = false; } else { sellBubble.x = _local2.x; sellBubble.y = _local2.y; sellBubble.moneyText.text = (Config.MONEY_PREFIX + (_local2.price * Config.CANNON_SELLPRICERATIO)); sellBubble.visible = true; this.buttonMode = true; }; } private function drawBackground():void{ var _local1:Number; var _local2:Number; var _local3:int; var _local4:int; this.graphics.clear(); this.graphics.beginFill(0, 0); this.graphics.moveTo(-(Config.FIELD_X), -(Config.FIELD_Y)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), -(Config.FIELD_Y)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), (-(Config.FIELD_Y) + stage.stageHeight)); this.graphics.lineTo(-(Config.FIELD_X), (-(Config.FIELD_Y) + stage.stageHeight)); this.graphics.lineTo(-(Config.FIELD_X), -(Config.FIELD_Y)); this.graphics.endFill(); if (Config.FIELD_Y > 0){ this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo(-(Config.FIELD_X), -(Config.FIELD_Y)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), -(Config.FIELD_Y)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), 0); this.graphics.lineTo(-(Config.FIELD_X), 0); this.graphics.lineTo(-(Config.FIELD_X), -(Config.FIELD_Y)); this.graphics.endFill(); }; if (Config.FIELD_X > 0){ this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo(-(Config.FIELD_X), 0); this.graphics.lineTo(0, 0); this.graphics.lineTo(0, (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo(-(Config.FIELD_X), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo(-(Config.FIELD_X), 0); this.graphics.endFill(); }; if ((Config.FIELD_X + (Config.FIELD_DIMENSIONX * Config.BLOCK_SIZE)) < stage.stageWidth){ this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo((Config.FIELD_DIMENSIONX * Config.BLOCK_SIZE), 0); this.graphics.lineTo((stage.stageWidth - Config.FIELD_X), 0); this.graphics.lineTo((stage.stageWidth - Config.FIELD_X), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo((Config.FIELD_DIMENSIONX * Config.BLOCK_SIZE), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo((Config.FIELD_DIMENSIONX * Config.BLOCK_SIZE), 0); this.graphics.endFill(); }; if ((Config.FIELD_Y + (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)) < stage.stageHeight){ this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo(-(Config.FIELD_X), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.lineTo((-(Config.FIELD_X) + stage.stageWidth), (-(Config.FIELD_Y) + stage.stageHeight)); this.graphics.lineTo(-(Config.FIELD_X), (-(Config.FIELD_Y) + stage.stageHeight)); this.graphics.lineTo(-(Config.FIELD_X), (Config.FIELD_DIMENSIONY * Config.BLOCK_SIZE)); this.graphics.endFill(); }; _local3 = 0; while (_local3 < Config.FIELD_DIMENSIONX) { _local4 = 0; while (_local4 < Config.FIELD_DIMENSIONY) { if (cannonSets[_local3][_local4]){ } else { _local1 = (_local3 * Config.BLOCK_SIZE); _local2 = (_local4 * Config.BLOCK_SIZE); this.graphics.beginFill(Config.DIALOG_SHADECOLOUR, Config.DIALOG_SHADEALPHA); this.graphics.moveTo(_local1, _local2); this.graphics.lineTo((_local1 + Config.BLOCK_SIZE), _local2); this.graphics.lineTo((_local1 + Config.BLOCK_SIZE), (_local2 + Config.BLOCK_SIZE)); this.graphics.lineTo(_local1, (_local2 + Config.BLOCK_SIZE)); this.graphics.lineTo(_local1, _local2); this.graphics.endFill(); }; _local4++; }; _local3++; }; } } }//package com.novelgames.flashgames.castledefense
Section 35
//SoundAllClear (com.novelgames.flashgames.castledefense.SoundAllClear) package com.novelgames.flashgames.castledefense { import flash.media.*; public dynamic class SoundAllClear extends Sound { } }//package com.novelgames.flashgames.castledefense
Section 36
//SoundBuySell (com.novelgames.flashgames.castledefense.SoundBuySell) package com.novelgames.flashgames.castledefense { import flash.media.*; public dynamic class SoundBuySell extends Sound { } }//package com.novelgames.flashgames.castledefense
Section 37
//SoundCastle (com.novelgames.flashgames.castledefense.SoundCastle) package com.novelgames.flashgames.castledefense { import flash.media.*; public dynamic class SoundCastle extends Sound { } }//package com.novelgames.flashgames.castledefense
Section 38
//SoundEnemy (com.novelgames.flashgames.castledefense.SoundEnemy) package com.novelgames.flashgames.castledefense { import flash.media.*; public dynamic class SoundEnemy extends Sound { } }//package com.novelgames.flashgames.castledefense
Section 39
//SoundGameOver (com.novelgames.flashgames.castledefense.SoundGameOver) package com.novelgames.flashgames.castledefense { import flash.media.*; public dynamic class SoundGameOver extends Sound { } }//package com.novelgames.flashgames.castledefense
Section 40
//SoundLevelClear (com.novelgames.flashgames.castledefense.SoundLevelClear) package com.novelgames.flashgames.castledefense { import flash.media.*; public dynamic class SoundLevelClear extends Sound { } }//package com.novelgames.flashgames.castledefense
Section 41
//Game (com.novelgames.flashgames.common.Game) package com.novelgames.flashgames.common { import flash.display.*; public class Game extends MovieClip { public static var gameStage:Stage; public function unpause():void{ NewTimer.unpause(); } public function pause():void{ NewTimer.pause(); } } }//package com.novelgames.flashgames.common
Section 42
//Instructions (com.novelgames.flashgames.common.Instructions) package com.novelgames.flashgames.common { import flash.display.*; import flash.events.*; public class Instructions extends MovieClip { public var startButton:SimpleButton; private var shownFromGame:Boolean; public function Instructions(_arg1:Boolean=false){ this.shownFromGame = _arg1; startButton.addEventListener(MouseEvent.CLICK, startButtonClicked); } private function startButtonClicked(_arg1:MouseEvent):void{ if (!shownFromGame){ Object(parent).gotoGamePage(); } else { Object(parent).hideInstructionsFromGame(); }; } } }//package com.novelgames.flashgames.common
Section 43
//InstructionsButton (com.novelgames.flashgames.common.InstructionsButton) package com.novelgames.flashgames.common { import flash.display.*; import flash.events.*; public class InstructionsButton extends MovieClip { public function InstructionsButton(){ super(); this.buttonMode = true; this.addEventListener(MouseEvent.CLICK, function ():void{ Object(parent.parent).showInstructionsFromGame(); }); } } }//package com.novelgames.flashgames.common
Section 44
//MainDevelopment (com.novelgames.flashgames.common.MainDevelopment) package com.novelgames.flashgames.common { import flash.display.*; import flash.events.*; import flash.media.*; public class MainDevelopment extends MovieClip { private var title:Title; private var musicGameSoundChannel:SoundChannel; private var titleIndex:int; private var instructions:Instructions; private var musicGame:Sound; private var game:Game; public function MainDevelopment(){ this.addEventListener(Event.ENTER_FRAME, checkTitle); } protected function getMusicGame():Sound{ return (null); } public function hideInstructionsFromGame():void{ this.removeChild(instructions); instructions = null; game.visible = true; game.unpause(); } public function showInstructionsFromGame():void{ game.pause(); game.visible = false; instructions = new Instructions(true); this.addChildAt(instructions, (titleIndex + 1)); } public function gotoGamePage():void{ Game.gameStage = stage; removePage(); game = getGame(); this.addChildAt(game, titleIndex); musicGame = getMusicGame(); musicGameSoundChannel = musicGame.play(0, int.MAX_VALUE); } private function checkTitle(_arg1:Event):void{ if (!(title = getTitle())){ return; }; this.removeEventListener(Event.ENTER_FRAME, checkTitle); stop(); titleIndex = this.getChildIndex(title); } public function gotoTitlePage():void{ removePage(); title = new Title(); this.addChildAt(title, titleIndex); } public function gotoInstructionsPage():void{ removePage(); instructions = new Instructions(); this.addChildAt(instructions, titleIndex); } public function showHighScores():void{ trace("showHighScores()"); } public function showEnterHighScore(_arg1:int):void{ trace((("showEnterHighScore(" + _arg1) + ")")); } protected function getGame():Game{ return (null); } private function removePage():void{ if (title){ removeChild(title); title = null; }; if (instructions){ removeChild(instructions); instructions = null; }; if (game){ removeChild(game); game = null; }; if (musicGame){ musicGameSoundChannel.stop(); musicGame = null; musicGameSoundChannel = null; }; } protected function getTitle():Title{ return (null); } } }//package com.novelgames.flashgames.common
Section 45
//MuteButton (com.novelgames.flashgames.common.MuteButton) package com.novelgames.flashgames.common { import flash.display.*; import flash.events.*; import flash.media.*; public class MuteButton extends MovieClip { private var gameSoundTransform:SoundTransform; public function MuteButton(){ if (SoundMixer.soundTransform.volume == 0){ showOff(); } else { showOn(); }; this.addEventListener(MouseEvent.CLICK, buttonClicked); this.buttonMode = true; } private function showOff():void{ gotoAndStop("off"); } private function buttonClicked(_arg1:MouseEvent):void{ var _local2:SoundTransform; _local2 = new SoundTransform(); if (SoundMixer.soundTransform.volume == 0){ _local2.volume = 1; SoundMixer.soundTransform = _local2; showOn(); } else { _local2.volume = 0; SoundMixer.soundTransform = _local2; showOff(); }; } private function showOn():void{ gotoAndStop("on"); } } }//package com.novelgames.flashgames.common
Section 46
//NewTimer (com.novelgames.flashgames.common.NewTimer) package com.novelgames.flashgames.common { import flash.events.*; import flash.utils.*; public class NewTimer extends Timer { private var adjustedStartTime:int; private var listener:Function; private var originalRepeatCount:int; private var originalDelay:int; private static var pauseTime:int; private static var paused:Boolean = false; private static var totalPausedTime:int = 0; public function NewTimer(_arg1:Number, _arg2:int=0):void{ super(_arg1, _arg2); originalDelay = _arg1; originalRepeatCount = _arg2; } override public function addEventListener(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:int=0, _arg5:Boolean=false):void{ if (_arg1 != TimerEvent.TIMER){ super.addEventListener(_arg1, _arg2, _arg3, _arg4, _arg5); return; }; this.listener = _arg2; super.addEventListener(_arg1, timerEventListener); } override public function start():void{ adjustedStartTime = NewTimer.getTimer(); super.start(); } private function timerEventListener(_arg1:TimerEvent):void{ if (paused){ stop(); delay = Math.max((originalDelay - (NewTimer.getTimer() - adjustedStartTime)), 1); if (originalRepeatCount > 0){ repeatCount++; }; super.start(); return; }; if ((NewTimer.getTimer() - adjustedStartTime) >= originalDelay){ adjustedStartTime = NewTimer.getTimer(); if (delay != originalDelay){ stop(); delay = originalDelay; super.start(); }; listener(_arg1); } else { stop(); delay = Math.max((originalDelay - (NewTimer.getTimer() - adjustedStartTime)), 1); if (originalRepeatCount > 0){ repeatCount++; }; super.start(); }; } public static function unpause():void{ if (!paused){ return; }; paused = false; totalPausedTime = (totalPausedTime + (getTimer() - pauseTime)); } public static function getTimer():int{ if (paused){ return ((pauseTime - totalPausedTime)); }; return ((getTimer() - totalPausedTime)); } public static function pause():void{ if (paused){ return; }; paused = true; pauseTime = getTimer(); } } }//package com.novelgames.flashgames.common
Section 47
//Title (com.novelgames.flashgames.common.Title) package com.novelgames.flashgames.common { import flash.display.*; import flash.events.*; import flash.net.*; public class Title extends MovieClip { public var startButton:SimpleButton; public function Title(){ startButton.addEventListener(MouseEvent.CLICK, startButtonClicked); } private function startButtonClicked(_arg1:MouseEvent):void{ Object(parent).gotoInstructionsPage(); } private function moreGamesButtonClicked(_arg1:MouseEvent):void{ navigateToURL(new URLRequest("http://www.novelgames.com"), "_blank"); } private function highScoresButtonClicked(_arg1:MouseEvent):void{ Object(parent).showHighScores(); } } }//package com.novelgames.flashgames.common
Section 48
//Bar (com.novelgames.flashgames.preloader.Bar) package com.novelgames.flashgames.preloader { import flash.display.*; import flash.geom.*; public class Bar extends MovieClip { private var colourBottom:Number; private var barHeight:Number; private var border:MovieClip; private var borderColour:Number; private var percent:Number; private var barWidth:Number; private var borderThickness:Number; private var colourTop:Number; public function setHeight(_arg1:Number):void{ this.barHeight = _arg1; updateBorder(); updateBar(); } private function updateBorder():void{ border.graphics.clear(); border.graphics.lineStyle(borderThickness, borderColour, 100, false, "normal", "square", "miter"); border.graphics.moveTo(0, 0); border.graphics.lineTo(barWidth, 0); border.graphics.lineTo(barWidth, barHeight); border.graphics.lineTo(0, barHeight); border.graphics.lineTo(0, 0); } public function setPercent(_arg1:Number):void{ this.percent = _arg1; updateBar(); } public function setWidth(_arg1:Number):void{ this.barWidth = _arg1; updateBorder(); updateBar(); } public function initialize(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):void{ this.x = _arg1; this.y = _arg2; this.barWidth = _arg3; this.barHeight = _arg4; this.colourTop = _arg5; this.colourBottom = _arg6; this.borderThickness = _arg7; this.borderColour = _arg8; border = new MovieClip(); this.addChild(border); updateBorder(); updateBar(); } private function updateBar():void{ var _local1:Number; var _local2:Matrix; _local1 = ((barWidth * percent) / 100); _local2 = new Matrix(); _local2.createGradientBox(_local1, barHeight, (Math.PI / 2), 0, 0); this.graphics.clear(); this.graphics.beginGradientFill("linear", [colourTop, colourBottom], [100, 100], [0, 0xFF], _local2); this.graphics.moveTo(0, 0); this.graphics.lineTo(_local1, 0); this.graphics.lineTo(_local1, barHeight); this.graphics.lineTo(0, barHeight); this.graphics.lineTo(0, 0); this.graphics.endFill(); } public function setColourBottom(_arg1:Number):void{ this.colourBottom = _arg1; updateBar(); } public function setBorderColour(_arg1:Number):void{ this.borderColour = _arg1; updateBorder(); } public function setColourTop(_arg1:Number):void{ this.colourTop = _arg1; updateBar(); } public function setBorderThickness(_arg1:Number):void{ this.borderThickness = _arg1; updateBorder(); } } }//package com.novelgames.flashgames.preloader
Section 49
//Preloader (com.novelgames.flashgames.preloader.Preloader) package com.novelgames.flashgames.preloader { import flash.display.*; import fl.core.*; import flash.events.*; import flash.utils.*; public class Preloader extends UIComponent { private var __minShowTime:Number; private var bytesLoaded:Number; private var startTime:Number; private var __barY:Number; private var __barX:Number; private var __playOrStop:String; private var __barColourBottom:Number; private var __barColourTop:Number; private var __barBorderColour:Number; private var __background:String; private var backgroundMovieClip:MovieClip; private var preloaderReal:MovieClip; private var __barHeight:Number; private var timer:Timer; private var __barWidth:Number; private var __startLabel:String; private var bytesTotal:Number; private var __barBorderThickness:Number; public function set barColourTop(_arg1:Number):void{ __barColourTop = _arg1; invalidate(); } public function get barBorderThickness():Number{ return (__barBorderThickness); } public function set barBorderThickness(_arg1:Number):void{ __barBorderThickness = _arg1; invalidate(); } public function set barHeight(_arg1:Number):void{ __barHeight = _arg1; invalidate(); } public function set background(_arg1:String):void{ __background = _arg1; invalidate(); } public function get barX():Number{ return (__barX); } public function get barY():Number{ return (__barX); } public function get barColourBottom():Number{ return (__barColourBottom); } public function get barBorderColour():Number{ return (__barBorderColour); } public function get playOrStop():String{ return (__playOrStop); } public function set barWidth(_arg1:Number):void{ __barWidth = _arg1; invalidate(); } public function get barHeight():Number{ return (__barHeight); } public function get background():String{ return (__background); } public function get barColourTop():Number{ return (__barColourTop); } override protected function draw():void{ var theClass:Class; var temp:MovieClip; temp = null; try { theClass = Class(getDefinitionByName(__background)); temp = new (theClass); } catch(e) { }; if (!temp){ if (preloaderReal.backgroundMovieClip){ preloaderReal.backgroundHolder.removeChild(preloaderReal.backgroundMovieClip); preloaderReal.backgroundMovieClip = null; }; preloaderReal.white.visible = true; preloaderReal.text.visible = true; } else { preloaderReal.backgroundMovieClip = temp; preloaderReal.white.visible = false; preloaderReal.text.visible = false; preloaderReal.backgroundHolder.addChild(temp); }; preloaderReal.white.width = width; preloaderReal.white.height = height; preloaderReal.text.x = (width / 2); preloaderReal.text.y = (height / 2); preloaderReal.bar.x = __barX; preloaderReal.bar.y = __barY; preloaderReal.bar.setWidth(__barWidth); preloaderReal.bar.setHeight(__barHeight); preloaderReal.bar.setColourTop(__barColourTop); preloaderReal.bar.setColourBottom(__barColourBottom); preloaderReal.bar.setBorderThickness(__barBorderThickness); preloaderReal.bar.setBorderColour(__barBorderColour); } override protected function configUI():void{ super.configUI(); __background = ""; __barX = 250; __barY = 300; __barWidth = 100; __barHeight = 20; __barColourTop = 0xCCCCCC; __barColourBottom = 0x333333; __barBorderThickness = 2; __barBorderColour = 0; __startLabel = "game"; __playOrStop = "stop"; __minShowTime = 1000; Object(parent).stop(); bytesLoaded = stage.loaderInfo.bytesLoaded; bytesTotal = stage.loaderInfo.bytesTotal; startTime = getTimer(); timer = new Timer(1, 0); timer.addEventListener(TimerEvent.TIMER, onTime); timer.start(); preloaderReal = new PreloaderReal(); preloaderReal.white.width = width; preloaderReal.white.height = height; preloaderReal.text.x = (width / 2); preloaderReal.text.y = (height / 2); preloaderReal.bar.initialize(__barX, __barY, __barWidth, __barHeight, __barColourTop, __barColourBottom, __barBorderThickness, __barBorderColour); preloaderReal.bar.setPercent(((bytesLoaded * 100) / bytesTotal)); this.addChild(preloaderReal); } public function set barY(_arg1:Number):void{ __barY = _arg1; invalidate(); } public function set barX(_arg1:Number):void{ __barX = _arg1; invalidate(); } private function onTime(_arg1:TimerEvent):void{ var _local2:Number; var _local3:Number; var _local4:Number; _arg1.updateAfterEvent(); bytesLoaded = stage.loaderInfo.bytesLoaded; _local2 = ((bytesLoaded * 100) / bytesTotal); _local3 = (((getTimer() - startTime) * 100) / minShowTime); _local4 = Math.min(_local2, _local3); preloaderReal.bar.setPercent(_local4); if (_local4 >= 100){ timer.stop(); if (__playOrStop == "play"){ Object(parent).gotoAndPlay(__startLabel); } else { Object(parent).gotoAndStop(__startLabel); }; }; } public function get barWidth():Number{ return (__barWidth); } public function set startLabel(_arg1:String):void{ __startLabel = _arg1; } public function set barColourBottom(_arg1:Number):void{ __barColourBottom = _arg1; invalidate(); } public function set barBorderColour(_arg1:Number):void{ __barBorderColour = _arg1; invalidate(); } public function get startLabel():String{ return (__startLabel); } public function set playOrStop(_arg1:String):void{ __playOrStop = _arg1; } public function set minShowTime(_arg1:Number):void{ __minShowTime = _arg1; } public function get minShowTime():Number{ return (__minShowTime); } } }//package com.novelgames.flashgames.preloader
Section 50
//PreloaderReal (com.novelgames.flashgames.preloader.PreloaderReal) package com.novelgames.flashgames.preloader { import flash.display.*; public dynamic class PreloaderReal extends MovieClip { public var bar:Bar; public var white:MovieClip; public var text:MovieClip; public var backgroundHolder:MovieClip; } }//package com.novelgames.flashgames.preloader
Section 51
//BaseButton (fl.controls.BaseButton) package fl.controls { import flash.display.*; import fl.core.*; import flash.events.*; import flash.utils.*; import fl.events.*; public class BaseButton extends UIComponent { protected var _selected:Boolean;// = false private var unlockedMouseState:String; protected var pressTimer:Timer; protected var mouseState:String; protected var background:DisplayObject; private var _mouseStateLocked:Boolean;// = false protected var _autoRepeat:Boolean;// = false private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35}; public function BaseButton(){ _selected = false; _autoRepeat = false; _mouseStateLocked = false; super(); buttonMode = true; mouseChildren = false; useHandCursor = false; setupMouseEvents(); setMouseState("up"); pressTimer = new Timer(1, 0); pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true); } protected function endPress():void{ pressTimer.reset(); } public function set mouseStateLocked(_arg1:Boolean):void{ _mouseStateLocked = _arg1; if (_arg1 == false){ setMouseState(unlockedMouseState); } else { unlockedMouseState = mouseState; }; } public function get autoRepeat():Boolean{ return (_autoRepeat); } public function set autoRepeat(_arg1:Boolean):void{ _autoRepeat = _arg1; } override public function set enabled(_arg1:Boolean):void{ super.enabled = _arg1; mouseEnabled = _arg1; } public function get selected():Boolean{ return (_selected); } protected function mouseEventHandler(_arg1:MouseEvent):void{ if (_arg1.type == MouseEvent.MOUSE_DOWN){ setMouseState("down"); startPress(); } else { if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){ setMouseState("over"); endPress(); } else { if (_arg1.type == MouseEvent.ROLL_OUT){ setMouseState("up"); endPress(); }; }; }; } public function setMouseState(_arg1:String):void{ if (_mouseStateLocked){ unlockedMouseState = _arg1; return; }; if (mouseState == _arg1){ return; }; mouseState = _arg1; invalidate(InvalidationType.STATE); } protected function startPress():void{ if (_autoRepeat){ pressTimer.delay = Number(getStyleValue("repeatDelay")); pressTimer.start(); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } protected function buttonDown(_arg1:TimerEvent):void{ if (!_autoRepeat){ endPress(); return; }; if (pressTimer.currentCount == 1){ pressTimer.delay = Number(getStyleValue("repeatInterval")); }; dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true)); } public function set selected(_arg1:Boolean):void{ if (_selected == _arg1){ return; }; _selected = _arg1; invalidate(InvalidationType.STATE); } override public function get enabled():Boolean{ return (super.enabled); } override protected function draw():void{ if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; super.draw(); } protected function setupMouseEvents():void{ addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true); addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true); } protected function drawLayout():void{ background.width = width; background.height = height; } protected function drawBackground():void{ var _local1:String; var _local2:DisplayObject; _local1 = (enabled) ? mouseState : "disabled"; if (selected){ _local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1)); }; _local1 = (_local1 + "Skin"); _local2 = background; background = getDisplayObjectInstance(getStyleValue(_local1)); addChildAt(background, 0); if (((!((_local2 == null))) && (!((_local2 == background))))){ removeChild(_local2); }; } public static function getStyleDefinition():Object{ return (defaultStyles); } } }//package fl.controls
Section 52
//Button (fl.controls.Button) package fl.controls { import flash.display.*; import fl.core.*; import fl.managers.*; public class Button extends LabelButton implements IFocusManagerComponent { protected var emphasizedBorder:DisplayObject; protected var _emphasized:Boolean;// = false private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2}; public static var createAccessibilityImplementation:Function; public function Button(){ _emphasized = false; super(); } override public function drawFocus(_arg1:Boolean):void{ var _local2:Number; var _local3:*; super.drawFocus(_arg1); if (_arg1){ _local2 = Number(getStyleValue("emphasizedPadding")); if ((((_local2 < 0)) || (!(_emphasized)))){ _local2 = 0; }; _local3 = getStyleValue("focusRectPadding"); _local3 = ((_local3)==null) ? 2 : _local3; _local3 = (_local3 + _local2); uiFocusRect.x = -(_local3); uiFocusRect.y = -(_local3); uiFocusRect.width = (width + (_local3 * 2)); uiFocusRect.height = (height + (_local3 * 2)); }; } public function set emphasized(_arg1:Boolean):void{ _emphasized = _arg1; invalidate(InvalidationType.STYLES); } override protected function draw():void{ if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){ drawEmphasized(); }; super.draw(); if (emphasizedBorder != null){ setChildIndex(emphasizedBorder, (numChildren - 1)); }; } public function get emphasized():Boolean{ return (_emphasized); } override protected function initializeAccessibility():void{ if (Button.createAccessibilityImplementation != null){ Button.createAccessibilityImplementation(this); }; } protected function drawEmphasized():void{ var _local1:Object; var _local2:Number; if (emphasizedBorder != null){ removeChild(emphasizedBorder); }; emphasizedBorder = null; if (!_emphasized){ return; }; _local1 = getStyleValue("emphasizedSkin"); if (_local1 != null){ emphasizedBorder = getDisplayObjectInstance(_local1); }; if (emphasizedBorder != null){ addChildAt(emphasizedBorder, 0); _local2 = Number(getStyleValue("emphasizedPadding")); emphasizedBorder.x = (emphasizedBorder.y = -(_local2)); emphasizedBorder.width = (width + (_local2 * 2)); emphasizedBorder.height = (height + (_local2 * 2)); }; } public static function getStyleDefinition():Object{ return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles)); } } }//package fl.controls
Section 53
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement) package fl.controls { public class ButtonLabelPlacement { public static const TOP:String = "top"; public static const LEFT:String = "left"; public static const BOTTOM:String = "bottom"; public static const RIGHT:String = "right"; } }//package fl.controls
Section 54
//LabelButton (fl.controls.LabelButton) package fl.controls { import flash.display.*; import fl.core.*; import flash.events.*; import fl.managers.*; import fl.events.*; import flash.text.*; import flash.ui.*; public class LabelButton extends BaseButton implements IFocusManagerComponent { protected var _labelPlacement:String;// = "right" protected var _toggle:Boolean;// = false protected var icon:DisplayObject; protected var oldMouseState:String; protected var mode:String;// = "center" public var textField:TextField; protected var _label:String;// = "Label" private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false}; public static var createAccessibilityImplementation:Function; public function LabelButton(){ _labelPlacement = ButtonLabelPlacement.RIGHT; _toggle = false; _label = "Label"; mode = "center"; super(); } protected function toggleSelected(_arg1:MouseEvent):void{ selected = !(selected); dispatchEvent(new Event(Event.CHANGE, true)); } public function get labelPlacement():String{ return (_labelPlacement); } override protected function keyDownHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ if (oldMouseState == null){ oldMouseState = mouseState; }; setMouseState("down"); startPress(); }; } protected function setEmbedFont(){ var _local1:Object; _local1 = getStyleValue("embedFonts"); if (_local1 != null){ textField.embedFonts = _local1; }; } override protected function keyUpHandler(_arg1:KeyboardEvent):void{ if (!enabled){ return; }; if (_arg1.keyCode == Keyboard.SPACE){ setMouseState(oldMouseState); oldMouseState = null; endPress(); dispatchEvent(new MouseEvent(MouseEvent.CLICK)); }; } override public function get selected():Boolean{ return ((_toggle) ? _selected : false); } public function set labelPlacement(_arg1:String):void{ _labelPlacement = _arg1; invalidate(InvalidationType.SIZE); } public function set toggle(_arg1:Boolean):void{ if (((!(_arg1)) && (super.selected))){ selected = false; }; _toggle = _arg1; if (_toggle){ addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true); } else { removeEventListener(MouseEvent.CLICK, toggleSelected); }; invalidate(InvalidationType.STATE); } public function get label():String{ return (_label); } override public function set selected(_arg1:Boolean):void{ _selected = _arg1; if (_toggle){ invalidate(InvalidationType.STATE); }; } override protected function draw():void{ if (textField.text != _label){ label = _label; }; if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){ drawBackground(); drawIcon(); drawTextFormat(); invalidate(InvalidationType.SIZE, false); }; if (isInvalid(InvalidationType.SIZE)){ drawLayout(); }; if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } public function get toggle():Boolean{ return (_toggle); } override protected function configUI():void{ super.configUI(); textField = new TextField(); textField.type = TextFieldType.DYNAMIC; textField.selectable = false; addChild(textField); } override protected function drawLayout():void{ var _local1:Number; var _local2:String; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; _local1 = Number(getStyleValue("textPadding")); _local2 = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement; textField.height = (textField.textHeight + 4); _local3 = (textField.textWidth + 4); _local4 = (textField.textHeight + 4); _local5 = ((icon)==null) ? 0 : (icon.width + _local1); _local6 = ((icon)==null) ? 0 : (icon.height + _local1); textField.visible = (label.length > 0); if (icon != null){ icon.x = Math.round(((width - icon.width) / 2)); icon.y = Math.round(((height - icon.height) / 2)); }; if (textField.visible == false){ textField.width = 0; textField.height = 0; } else { if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){ _local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1)))); if ((height - 2) > _local4){ _local8 = _local4; } else { _local8 = (height - 2); }; _local3 = _local7; textField.width = _local3; _local4 = _local8; textField.height = _local4; textField.x = Math.round(((width - _local3) / 2)); textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0)); if (icon != null){ icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1)); }; } else { _local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1)))); _local3 = _local7; textField.width = _local3; textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0)); textField.y = Math.round(((height - textField.height) / 2)); if (icon != null){ icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1)); }; }; }; super.drawLayout(); } override protected function initializeAccessibility():void{ if (LabelButton.createAccessibilityImplementation != null){ LabelButton.createAccessibilityImplementation(this); }; } protected function drawIcon():void{ var _local1:DisplayObject; var _local2:String; var _local3:Object; _local1 = icon; _local2 = (enabled) ? mouseState : "disabled"; if (selected){ _local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1)); }; _local2 = (_local2 + "Icon"); _local3 = getStyleValue(_local2); if (_local3 == null){ _local3 = getStyleValue("icon"); }; if (_local3 != null){ icon = getDisplayObjectInstance(_local3); }; if (icon != null){ addChildAt(icon, 1); }; if (((!((_local1 == null))) && (!((_local1 == icon))))){ removeChild(_local1); }; } public function set label(_arg1:String):void{ _label = _arg1; if (textField.text != _label){ textField.text = _label; dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE)); }; invalidate(InvalidationType.SIZE); invalidate(InvalidationType.STYLES); } protected function drawTextFormat():void{ var _local1:Object; var _local2:TextFormat; var _local3:TextFormat; _local1 = UIComponent.getStyleDefinition(); _local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat); textField.setTextFormat(_local2); _local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat); if (_local3 != null){ textField.setTextFormat(_local3); } else { _local3 = _local2; }; textField.defaultTextFormat = _local3; setEmbedFont(); } public static function getStyleDefinition():Object{ return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition())); } } }//package fl.controls
Section 55
//InvalidationType (fl.core.InvalidationType) package fl.core { public class InvalidationType { public static const SIZE:String = "size"; public static const ALL:String = "all"; public static const DATA:String = "data"; public static const SCROLL:String = "scroll"; public static const STATE:String = "state"; public static const STYLES:String = "styles"; public static const SELECTED:String = "selected"; public static const RENDERER_STYLES:String = "rendererStyles"; } }//package fl.core
Section 56
//UIComponent (fl.core.UIComponent) package fl.core { import flash.display.*; import flash.events.*; import fl.managers.*; import flash.utils.*; import fl.events.*; import flash.text.*; import flash.system.*; public class UIComponent extends Sprite { protected var _enabled:Boolean;// = true private var _mouseFocusEnabled:Boolean;// = true protected var startHeight:Number; protected var _height:Number; protected var _oldIMEMode:String;// = null protected var startWidth:Number; public var focusTarget:IFocusManagerComponent; protected var errorCaught:Boolean;// = false protected var uiFocusRect:DisplayObject; protected var _width:Number; public var version:String;// = "3.0.0.15" protected var isFocused:Boolean;// = false protected var callLaterMethods:Dictionary; private var _focusEnabled:Boolean;// = true private var tempText:TextField; protected var invalidateFlag:Boolean;// = false protected var _inspector:Boolean;// = false protected var sharedStyles:Object; protected var invalidHash:Object; protected var isLivePreview:Boolean;// = false protected var _imeMode:String;// = null protected var instanceStyles:Object; protected var _x:Number; protected var _y:Number; public static var inCallLaterPhase:Boolean = false; private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)}; public static var createAccessibilityImplementation:Function; private static var focusManagers:Dictionary = new Dictionary(false); public function UIComponent(){ version = "3.0.0.15"; isLivePreview = false; invalidateFlag = false; _enabled = true; isFocused = false; _focusEnabled = true; _mouseFocusEnabled = true; _imeMode = null; _oldIMEMode = null; errorCaught = false; _inspector = false; super(); instanceStyles = {}; sharedStyles = {}; invalidHash = {}; callLaterMethods = new Dictionary(); StyleManager.registerInstance(this); configUI(); invalidate(InvalidationType.ALL); tabEnabled = (this is IFocusManagerComponent); focusRect = false; if (tabEnabled){ addEventListener(FocusEvent.FOCUS_IN, focusInHandler); addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler); addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); }; initializeFocusManager(); addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true); } public function drawFocus(_arg1:Boolean):void{ var _local2:Number; isFocused = _arg1; if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){ removeChild(uiFocusRect); uiFocusRect = null; }; if (_arg1){ uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite); if (uiFocusRect == null){ return; }; _local2 = Number(getStyleValue("focusRectPadding")); uiFocusRect.x = -(_local2); uiFocusRect.y = -(_local2); uiFocusRect.width = (width + (_local2 * 2)); uiFocusRect.height = (height + (_local2 * 2)); addChildAt(uiFocusRect, 0); }; } private function callLaterDispatcher(_arg1:Event):void{ var _local2:Dictionary; var _local3:Object; if (_arg1.type == Event.ADDED_TO_STAGE){ removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher); stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); return; }; _arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher); if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); return; }; inCallLaterPhase = true; _local2 = callLaterMethods; for (_local3 in _local2) { _local3(); delete _local2[_local3]; }; inCallLaterPhase = false; } private function addedHandler(_arg1:Event):void{ removeEventListener("addedToStage", addedHandler); initializeFocusManager(); } protected function getStyleValue(_arg1:String):Object{ return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]); } protected function isOurFocus(_arg1:DisplayObject):Boolean{ return ((_arg1 == this)); } override public function get scaleX():Number{ return ((width / startWidth)); } override public function get scaleY():Number{ return ((height / startHeight)); } override public function set height(_arg1:Number):void{ if (_height == _arg1){ return; }; setSize(width, _arg1); } protected function keyDownHandler(_arg1:KeyboardEvent):void{ } protected function focusInHandler(_arg1:FocusEvent):void{ var _local2:IFocusManager; if (isOurFocus((_arg1.target as DisplayObject))){ _local2 = focusManager; if (((_local2) && (_local2.showFocusIndicator))){ drawFocus(true); isFocused = true; }; }; } public function setStyle(_arg1:String, _arg2:Object):void{ if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; instanceStyles[_arg1] = _arg2; invalidate(InvalidationType.STYLES); } override public function get visible():Boolean{ return (super.visible); } public function get componentInspectorSetting():Boolean{ return (_inspector); } override public function get x():Number{ return ((isNaN(_x)) ? super.x : _x); } override public function get y():Number{ return ((isNaN(_y)) ? super.y : _y); } protected function setIMEMode(_arg1:Boolean){ var enabled = _arg1; if (_imeMode != null){ if (enabled){ IME.enabled = true; _oldIMEMode = IME.conversionMode; try { if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _imeMode; }; errorCaught = false; } catch(e:Error) { errorCaught = true; throw (new Error(("IME mode not supported: " + _imeMode))); }; } else { if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){ IME.conversionMode = _oldIMEMode; }; IME.enabled = false; }; }; } public function set enabled(_arg1:Boolean):void{ if (_arg1 == _enabled){ return; }; _enabled = _arg1; invalidate(InvalidationType.STATE); } public function setSharedStyle(_arg1:String, _arg2:Object):void{ if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; sharedStyles[_arg1] = _arg2; if (instanceStyles[_arg1] == null){ invalidate(InvalidationType.STYLES); }; } protected function keyUpHandler(_arg1:KeyboardEvent):void{ } public function set focusEnabled(_arg1:Boolean):void{ _focusEnabled = _arg1; } override public function set scaleX(_arg1:Number):void{ setSize((startWidth * _arg1), height); } public function get mouseFocusEnabled():Boolean{ return (_mouseFocusEnabled); } override public function set scaleY(_arg1:Number):void{ setSize(width, (startHeight * _arg1)); } protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{ var classDef:Object; var skin = _arg1; classDef = null; if ((skin is Class)){ return ((new (skin) as DisplayObject)); }; if ((skin is DisplayObject)){ (skin as DisplayObject).x = 0; (skin as DisplayObject).y = 0; return ((skin as DisplayObject)); }; try { classDef = getDefinitionByName(skin.toString()); } catch(e:Error) { try { classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object); } catch(e:Error) { }; }; if (classDef == null){ return (null); }; return ((new (classDef) as DisplayObject)); } protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{ var _local3:String; for (_local3 in _arg2) { _arg1.setStyle(_local3, getStyleValue(_arg2[_local3])); }; } protected function beforeComponentParameters():void{ } protected function callLater(_arg1:Function):void{ if (inCallLaterPhase){ return; }; callLaterMethods[_arg1] = true; if (stage != null){ stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true); stage.invalidate(); } else { addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true); }; } protected function createFocusManager():void{ if (focusManagers[stage] == null){ focusManagers[stage] = new FocusManager(stage); }; } override public function set visible(_arg1:Boolean):void{ var _local2:String; if (super.visible == _arg1){ return; }; super.visible = _arg1; _local2 = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE; dispatchEvent(new ComponentEvent(_local2, true)); } protected function hookAccessibility(_arg1:Event):void{ removeEventListener(Event.ENTER_FRAME, hookAccessibility); initializeAccessibility(); } public function set componentInspectorSetting(_arg1:Boolean):void{ _inspector = _arg1; if (_inspector){ beforeComponentParameters(); } else { afterComponentParameters(); }; } override public function set x(_arg1:Number):void{ move(_arg1, _y); } public function drawNow():void{ draw(); } override public function set y(_arg1:Number):void{ move(_x, _arg1); } protected function checkLivePreview():Boolean{ var className:String; if (parent == null){ return (false); }; try { className = getQualifiedClassName(parent); } catch(e:Error) { }; return ((className == "fl.livepreview::LivePreviewParent")); } protected function focusOutHandler(_arg1:FocusEvent):void{ if (isOurFocus((_arg1.target as DisplayObject))){ drawFocus(false); isFocused = false; }; } public function set mouseFocusEnabled(_arg1:Boolean):void{ _mouseFocusEnabled = _arg1; } public function getFocus():InteractiveObject{ if (stage){ return (stage.focus); }; return (null); } protected function validate():void{ invalidHash = {}; } override public function get height():Number{ return (_height); } public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{ invalidHash[_arg1] = true; if (_arg2){ this.callLater(draw); }; } public function get enabled():Boolean{ return (_enabled); } protected function getScaleX():Number{ return (super.scaleX); } protected function getScaleY():Number{ return (super.scaleY); } public function get focusEnabled():Boolean{ return (_focusEnabled); } protected function afterComponentParameters():void{ } protected function draw():void{ if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){ if (((isFocused) && (focusManager.showFocusIndicator))){ drawFocus(true); }; }; validate(); } protected function configUI():void{ var _local1:Number; var _local2:Number; var _local3:Number; isLivePreview = checkLivePreview(); _local1 = rotation; rotation = 0; _local2 = super.width; _local3 = super.height; var _local4 = 1; super.scaleY = _local4; super.scaleX = _local4; setSize(_local2, _local3); move(super.x, super.y); rotation = _local1; startWidth = _local2; startHeight = _local3; if (numChildren > 0){ removeChildAt(0); }; } protected function setScaleX(_arg1:Number):void{ super.scaleX = _arg1; } protected function setScaleY(_arg1:Number):void{ super.scaleY = _arg1; } private function initializeFocusManager():void{ if (stage == null){ addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true); } else { createFocusManager(); }; } public function set focusManager(_arg1:IFocusManager):void{ UIComponent.focusManagers[this] = _arg1; } public function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } protected function isInvalid(_arg1:String, ... _args):Boolean{ if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){ return (true); }; while (_args.length > 0) { if (invalidHash[_args.pop()]){ return (true); }; }; return (false); } public function setSize(_arg1:Number, _arg2:Number):void{ _width = _arg1; _height = _arg2; invalidate(InvalidationType.SIZE); dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false)); } override public function set width(_arg1:Number):void{ if (_width == _arg1){ return; }; setSize(_arg1, height); } public function setFocus():void{ if (stage){ stage.focus = this; }; } protected function initializeAccessibility():void{ if (UIComponent.createAccessibilityImplementation != null){ UIComponent.createAccessibilityImplementation(this); }; } public function get focusManager():IFocusManager{ var _local1:DisplayObject; _local1 = this; while (_local1) { if (UIComponent.focusManagers[_local1] != null){ return (IFocusManager(UIComponent.focusManagers[_local1])); }; _local1 = _local1.parent; }; return (null); } override public function get width():Number{ return (_width); } public function move(_arg1:Number, _arg2:Number):void{ _x = _arg1; _y = _arg2; super.x = Math.round(_arg1); super.y = Math.round(_arg2); dispatchEvent(new ComponentEvent(ComponentEvent.MOVE)); } public function validateNow():void{ invalidate(InvalidationType.ALL, false); draw(); } public function getStyle(_arg1:String):Object{ return (instanceStyles[_arg1]); } public static function getStyleDefinition():Object{ return (defaultStyles); } public static function mergeStyles(... _args):Object{ var _local2:Object; var _local3:uint; var _local4:uint; var _local5:Object; var _local6:String; _local2 = {}; _local3 = _args.length; _local4 = 0; while (_local4 < _local3) { _local5 = _args[_local4]; for (_local6 in _local5) { if (_local2[_local6] != null){ } else { _local2[_local6] = _args[_local4][_local6]; }; }; _local4++; }; return (_local2); } } }//package fl.core
Section 57
//ComponentEvent (fl.events.ComponentEvent) package fl.events { import flash.events.*; public class ComponentEvent extends Event { public static const HIDE:String = "hide"; public static const BUTTON_DOWN:String = "buttonDown"; public static const MOVE:String = "move"; public static const RESIZE:String = "resize"; public static const ENTER:String = "enter"; public static const LABEL_CHANGE:String = "labelChange"; public static const SHOW:String = "show"; public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){ super(_arg1, _arg2, _arg3); } override public function toString():String{ return (formatToString("ComponentEvent", "type", "bubbles", "cancelable")); } override public function clone():Event{ return (new ComponentEvent(type, bubbles, cancelable)); } } }//package fl.events
Section 58
//FocusManager (fl.managers.FocusManager) package fl.managers { import fl.controls.*; import flash.display.*; import fl.core.*; import flash.events.*; import flash.utils.*; import flash.text.*; import flash.ui.*; public class FocusManager implements IFocusManager { private var focusableObjects:Dictionary; private var _showFocusIndicator:Boolean;// = true private var defButton:Button; private var focusableCandidates:Array; private var _form:DisplayObjectContainer; private var _defaultButtonEnabled:Boolean;// = true private var activated:Boolean;// = false private var _defaultButton:Button; private var calculateCandidates:Boolean;// = true private var lastFocus:InteractiveObject; private var lastAction:String; public function FocusManager(_arg1:DisplayObjectContainer){ activated = false; calculateCandidates = true; _showFocusIndicator = true; _defaultButtonEnabled = true; super(); focusableObjects = new Dictionary(true); if (_arg1 != null){ _form = _arg1; addFocusables(DisplayObject(_arg1)); _arg1.addEventListener(Event.ADDED, addedHandler); _arg1.addEventListener(Event.REMOVED, removedHandler); activate(); }; } public function get showFocusIndicator():Boolean{ return (_showFocusIndicator); } private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{ var _local5:int; var _local6:int; var _local7:DisplayObject; var _local8:IFocusManagerGroup; var _local9:int; var _local10:DisplayObject; var _local11:IFocusManagerGroup; _local5 = focusableCandidates.length; _local6 = _arg1; while (true) { if (_arg2){ _arg1--; } else { _arg1++; }; if (_arg3){ if (((_arg2) && ((_arg1 < 0)))){ break; }; if (((!(_arg2)) && ((_arg1 == _local5)))){ break; }; } else { _arg1 = ((_arg1 + _local5) % _local5); if (_local6 == _arg1){ break; }; }; if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){ _local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1])); if ((_local7 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local7); _local9 = 0; while (_local9 < focusableCandidates.length) { _local10 = focusableCandidates[_local9]; if ((_local10 is IFocusManagerGroup)){ _local11 = IFocusManagerGroup(_local10); if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){ _arg1 = _local9; break; }; }; _local9++; }; }; return (_arg1); }; }; return (_arg1); } public function set form(_arg1:DisplayObjectContainer):void{ _form = _arg1; } private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{ var focusable:IFocusManagerComponent; var io:InteractiveObject; var doc:DisplayObjectContainer; var i:int; var child:DisplayObject; var o = _arg1; var skipTopLevel = _arg2; if (!skipTopLevel){ if ((o is IFocusManagerComponent)){ focusable = IFocusManagerComponent(o); if (focusable.focusEnabled){ if (((focusable.tabEnabled) && (isTabVisible(o)))){ focusableObjects[o] = true; calculateCandidates = true; }; o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; } else { if ((o is InteractiveObject)){ io = (o as InteractiveObject); if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){ focusableObjects[io] = true; calculateCandidates = true; }; io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); }; }; }; if ((o is DisplayObjectContainer)){ doc = DisplayObjectContainer(o); o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){ i = 0; while (i < doc.numChildren) { try { child = doc.getChildAt(i); if (child != null){ addFocusables(doc.getChildAt(i)); }; } catch(error:SecurityError) { }; i = (i + 1); }; }; }; } private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{ return (_arg1.getChildIndex(_arg2)); } private function mouseFocusChangeHandler(_arg1:FocusEvent):void{ if ((_arg1.relatedObject is TextField)){ return; }; _arg1.preventDefault(); } private function focusOutHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; _local2 = (_arg1.target as InteractiveObject); } private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{ var _local3:IFocusManagerGroup; if (!isEnabledAndVisible(_arg1)){ return (false); }; if ((_arg1 is IFocusManagerGroup)){ _local3 = IFocusManagerGroup(_arg1); if (_arg2 == _local3.groupName){ return (false); }; }; return (true); } public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{ var _local2:InteractiveObject; _local2 = _arg1; while (_arg1) { if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){ return (_arg1); }; _arg1 = _arg1.parent; }; return (_local2); } private function sortFocusableObjectsTabIndex():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){ focusableCandidates.push(_local2); }; }; focusableCandidates.sort(sortByTabIndex); } private function removeFocusables(_arg1:DisplayObject):void{ var _local2:Object; var _local3:DisplayObject; if ((_arg1 is DisplayObjectContainer)){ _arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler); _arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler); for (_local2 in focusableObjects) { _local3 = DisplayObject(_local2); if (DisplayObjectContainer(_arg1).contains(_local3)){ if (_local3 == lastFocus){ lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local2]; calculateCandidates = true; }; }; }; } private function addedHandler(_arg1:Event):void{ var _local2:DisplayObject; _local2 = DisplayObject(_arg1.target); if (_local2.stage){ addFocusables(DisplayObject(_arg1.target)); }; } private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{ while (_arg1 != InteractiveObject(form)) { if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){ return (_arg1); }; _arg1 = _arg1.parent; if (_arg1 == null){ break; }; }; return (null); } private function tabChildrenChangeHandler(_arg1:Event):void{ var _local2:DisplayObjectContainer; if (_arg1.target != _arg1.currentTarget){ return; }; calculateCandidates = true; _local2 = DisplayObjectContainer(_arg1.target); if (_local2.tabChildren){ addFocusables(_local2, true); } else { removeFocusables(_local2); }; } public function sendDefaultButtonEvent():void{ defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); } public function getFocus():InteractiveObject{ var _local1:InteractiveObject; _local1 = form.stage.focus; return (findFocusManagerComponent(_local1)); } private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; var _local3:TextField; var _local4:SimpleButton; _local2 = DisplayObject(form).parent; while (_arg1 != _local2) { if ((_arg1 is UIComponent)){ if (!UIComponent(_arg1).enabled){ return (false); }; } else { if ((_arg1 is TextField)){ _local3 = TextField(_arg1); if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){ return (false); }; } else { if ((_arg1 is SimpleButton)){ _local4 = SimpleButton(_arg1); if (!_local4.enabled){ return (false); }; }; }; }; if (!_arg1.visible){ return (false); }; _arg1 = _arg1.parent; }; return (true); } public function set defaultButton(_arg1:Button):void{ var _local2:Button; _local2 = (_arg1) ? Button(_arg1) : null; if (_local2 != _defaultButton){ if (_defaultButton){ _defaultButton.emphasized = false; }; if (defButton){ defButton.emphasized = false; }; _defaultButton = _local2; defButton = _local2; if (_local2){ _local2.emphasized = true; }; }; } private function deactivateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); } public function setFocus(_arg1:InteractiveObject):void{ if ((_arg1 is IFocusManagerComponent)){ IFocusManagerComponent(_arg1).setFocus(); } else { form.stage.focus = _arg1; }; } private function setFocusToNextObject(_arg1:FocusEvent):void{ var _local2:InteractiveObject; if (!hasFocusableObjects()){ return; }; _local2 = getNextFocusManagerComponent(_arg1.shiftKey); if (_local2){ setFocus(_local2); }; } private function hasFocusableObjects():Boolean{ var _local1:Object; for (_local1 in focusableObjects) { return (true); }; return (false); } private function tabIndexChangeHandler(_arg1:Event):void{ calculateCandidates = true; } private function sortFocusableObjects():void{ var _local1:Object; var _local2:InteractiveObject; focusableCandidates = []; for (_local1 in focusableObjects) { _local2 = InteractiveObject(_local1); if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){ sortFocusableObjectsTabIndex(); return; }; focusableCandidates.push(_local2); }; focusableCandidates.sort(sortByDepth); } private function keyFocusChangeHandler(_arg1:FocusEvent):void{ showFocusIndicator = true; if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){ setFocusToNextObject(_arg1); _arg1.preventDefault(); }; } private function getIndexOfFocusedObject(_arg1:DisplayObject):int{ var _local2:int; var _local3:int; _local2 = focusableCandidates.length; _local3 = 0; _local3 = 0; while (_local3 < _local2) { if (focusableCandidates[_local3] == _arg1){ return (_local3); }; _local3++; }; return (-1); } public function hideFocus():void{ } private function removedHandler(_arg1:Event):void{ var _local2:int; var _local3:DisplayObject; var _local4:InteractiveObject; _local3 = DisplayObject(_arg1.target); if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){ if (_local3 == lastFocus){ IFocusManagerComponent(lastFocus).drawFocus(false); lastFocus = null; }; _local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); delete focusableObjects[_local3]; calculateCandidates = true; } else { if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){ _local4 = (_local3 as InteractiveObject); if (_local4){ if (_local4 == lastFocus){ lastFocus = null; }; delete focusableObjects[_local4]; calculateCandidates = true; }; _local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler); }; }; removeFocusables(_local3); } private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{ var _local3:String; var _local4:String; var _local5:int; var _local6:String; var _local7:String; var _local8:String; var _local9:DisplayObject; var _local10:DisplayObject; _local3 = ""; _local4 = ""; _local8 = "0000"; _local9 = DisplayObject(_arg1); _local10 = DisplayObject(_arg2); while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) { _local5 = getChildIndex(_local9.parent, _local9); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local3 = (_local7 + _local3); _local9 = _local9.parent; }; while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) { _local5 = getChildIndex(_local10.parent, _local10); _local6 = _local5.toString(16); if (_local6.length < 4){ _local7 = (_local8.substring(0, (4 - _local6.length)) + _local6); }; _local4 = (_local7 + _local4); _local10 = _local10.parent; }; return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0); } public function get defaultButton():Button{ return (_defaultButton); } private function activateHandler(_arg1:Event):void{ var _local2:InteractiveObject; _local2 = InteractiveObject(_arg1.target); if (lastFocus){ if ((lastFocus is IFocusManagerComponent)){ IFocusManagerComponent(lastFocus).setFocus(); } else { form.stage.focus = lastFocus; }; }; lastAction = "ACTIVATE"; } public function showFocus():void{ } public function set defaultButtonEnabled(_arg1:Boolean):void{ _defaultButtonEnabled = _arg1; } public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{ var _local2:DisplayObject; var _local3:String; var _local4:int; var _local5:Boolean; var _local6:int; var _local7:int; var _local8:IFocusManagerGroup; if (!hasFocusableObjects()){ return (null); }; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; _local2 = form.stage.focus; _local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2))); _local3 = ""; if ((_local2 is IFocusManagerGroup)){ _local8 = IFocusManagerGroup(_local2); _local3 = _local8.groupName; }; _local4 = getIndexOfFocusedObject(_local2); _local5 = false; _local6 = _local4; if (_local4 == -1){ if (_arg1){ _local4 = focusableCandidates.length; }; _local5 = true; }; _local7 = getIndexOfNextObject(_local4, _arg1, _local5, _local3); return (findFocusManagerComponent(focusableCandidates[_local7])); } private function mouseDownHandler(_arg1:MouseEvent):void{ var _local2:InteractiveObject; if (_arg1.isDefaultPrevented()){ return; }; _local2 = getTopLevelFocusTarget(InteractiveObject(_arg1.target)); if (!_local2){ return; }; showFocusIndicator = false; if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){ setFocus(_local2); }; lastAction = "MOUSEDOWN"; } private function isTabVisible(_arg1:DisplayObject):Boolean{ var _local2:DisplayObjectContainer; _local2 = _arg1.parent; while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) { if (!_local2.tabChildren){ return (false); }; _local2 = _local2.parent; }; return (true); } public function get nextTabIndex():int{ return (0); } private function keyDownHandler(_arg1:KeyboardEvent):void{ if (_arg1.keyCode == Keyboard.TAB){ lastAction = "KEY"; if (calculateCandidates){ sortFocusableObjects(); calculateCandidates = false; }; }; if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){ sendDefaultButtonEvent(); }; } private function focusInHandler(_arg1:FocusEvent):void{ var _local2:InteractiveObject; var _local3:Button; _local2 = InteractiveObject(_arg1.target); if (form.contains(_local2)){ lastFocus = findFocusManagerComponent(InteractiveObject(_local2)); if ((lastFocus is Button)){ _local3 = Button(lastFocus); if (defButton){ defButton.emphasized = false; defButton = _local3; _local3.emphasized = true; }; } else { if (((defButton) && (!((defButton == _defaultButton))))){ defButton.emphasized = false; defButton = _defaultButton; _defaultButton.emphasized = true; }; }; }; } private function tabEnabledChangeHandler(_arg1:Event):void{ var _local2:InteractiveObject; var _local3:Boolean; calculateCandidates = true; _local2 = InteractiveObject(_arg1.target); _local3 = (focusableObjects[_local2] == true); if (_local2.tabEnabled){ if (((!(_local3)) && (isTabVisible(_local2)))){ if (!(_local2 is IFocusManagerComponent)){ _local2.focusRect = false; }; focusableObjects[_local2] = true; }; } else { if (_local3){ delete focusableObjects[_local2]; }; }; } public function set showFocusIndicator(_arg1:Boolean):void{ _showFocusIndicator = _arg1; } public function get form():DisplayObjectContainer{ return (_form); } private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{ return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2)); } public function activate():void{ if (activated){ return; }; form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true); form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true); form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true); form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true); form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = true; if (lastFocus){ setFocus(lastFocus); }; } public function deactivate():void{ form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler); form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler); form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true); form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true); form.stage.removeEventListener(Event.ACTIVATE, activateHandler); form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler); form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true); activated = false; } public function get defaultButtonEnabled():Boolean{ return (_defaultButtonEnabled); } } }//package fl.managers
Section 59
//IFocusManager (fl.managers.IFocusManager) package fl.managers { import fl.controls.*; import flash.display.*; public interface IFocusManager { function getFocus():InteractiveObject; function deactivate():void; function set defaultButton(_arg1:Button):void; function set showFocusIndicator(_arg1:Boolean):void; function get defaultButtonEnabled():Boolean; function get nextTabIndex():int; function get defaultButton():Button; function get showFocusIndicator():Boolean; function setFocus(_arg1:InteractiveObject):void; function activate():void; function showFocus():void; function set defaultButtonEnabled(_arg1:Boolean):void; function hideFocus():void; function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject; function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject; } }//package fl.managers
Section 60
//IFocusManagerComponent (fl.managers.IFocusManagerComponent) package fl.managers { public interface IFocusManagerComponent { function set focusEnabled(_arg1:Boolean):void; function drawFocus(_arg1:Boolean):void; function setFocus():void; function get focusEnabled():Boolean; function get tabEnabled():Boolean; function get tabIndex():int; function get mouseFocusEnabled():Boolean; } }//package fl.managers
Section 61
//IFocusManagerGroup (fl.managers.IFocusManagerGroup) package fl.managers { public interface IFocusManagerGroup { function set groupName(_arg1:String):void; function set selected(_arg1:Boolean):void; function get groupName():String; function get selected():Boolean; } }//package fl.managers
Section 62
//StyleManager (fl.managers.StyleManager) package fl.managers { import fl.core.*; import flash.utils.*; import flash.text.*; public class StyleManager { private var globalStyles:Object; private var classToDefaultStylesDict:Dictionary; private var styleToClassesHash:Object; private var classToStylesDict:Dictionary; private var classToInstancesDict:Dictionary; private static var _instance:StyleManager; public function StyleManager(){ styleToClassesHash = {}; classToInstancesDict = new Dictionary(true); classToStylesDict = new Dictionary(true); classToDefaultStylesDict = new Dictionary(true); globalStyles = UIComponent.getStyleDefinition(); } public static function clearComponentStyle(_arg1:Object, _arg2:String):void{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){ delete _local4[_arg2]; invalidateComponentStyle(_local3, _arg2); }; } private static function getClassDef(_arg1:Object):Class{ var component = _arg1; if ((component is Class)){ return ((component as Class)); }; try { return ((getDefinitionByName(getQualifiedClassName(component)) as Class)); } catch(e:Error) { if ((component is UIComponent)){ try { return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class)); } catch(e:Error) { }; }; }; return (null); } public static function clearStyle(_arg1:String):void{ setStyle(_arg1, null); } public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{ var _local4:Class; var _local5:Object; _local4 = getClassDef(_arg1); _local5 = getInstance().classToStylesDict[_local4]; if (_local5 == null){ _local5 = (getInstance().classToStylesDict[_local4] = {}); }; if (_local5 == _arg3){ return; }; _local5[_arg2] = _arg3; invalidateComponentStyle(_local4, _arg2); } private static function setSharedStyles(_arg1:UIComponent):void{ var _local2:StyleManager; var _local3:Class; var _local4:Object; var _local5:String; _local2 = getInstance(); _local3 = getClassDef(_arg1); _local4 = _local2.classToDefaultStylesDict[_local3]; for (_local5 in _local4) { _arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5)); }; } public static function getComponentStyle(_arg1:Object, _arg2:String):Object{ var _local3:Class; var _local4:Object; _local3 = getClassDef(_arg1); _local4 = getInstance().classToStylesDict[_local3]; return (((_local4)==null) ? null : _local4[_arg2]); } private static function getInstance(){ if (_instance == null){ _instance = new (StyleManager); }; return (_instance); } private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{ var _local3:Dictionary; var _local4:Object; var _local5:UIComponent; _local3 = getInstance().classToInstancesDict[_arg1]; if (_local3 == null){ return; }; for (_local4 in _local3) { _local5 = (_local4 as UIComponent); if (_local5 == null){ } else { _local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2)); }; }; } private static function invalidateStyle(_arg1:String):void{ var _local2:Dictionary; var _local3:Object; _local2 = getInstance().styleToClassesHash[_arg1]; if (_local2 == null){ return; }; for (_local3 in _local2) { invalidateComponentStyle(Class(_local3), _arg1); }; } public static function registerInstance(_arg1:UIComponent):void{ var inst:StyleManager; var classDef:Class; var target:Class; var defaultStyles:Object; var styleToClasses:Object; var n:String; var instance = _arg1; inst = getInstance(); classDef = getClassDef(instance); if (classDef == null){ return; }; if (inst.classToInstancesDict[classDef] == null){ inst.classToInstancesDict[classDef] = new Dictionary(true); target = classDef; while (defaultStyles == null) { if (target["getStyleDefinition"] != null){ defaultStyles = target["getStyleDefinition"](); break; }; try { target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class); } catch(err:Error) { try { target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class); } catch(e:Error) { defaultStyles = UIComponent.getStyleDefinition(); break; }; }; }; styleToClasses = inst.styleToClassesHash; for (n in defaultStyles) { if (styleToClasses[n] == null){ styleToClasses[n] = new Dictionary(true); }; styleToClasses[n][classDef] = true; }; inst.classToDefaultStylesDict[classDef] = defaultStyles; inst.classToStylesDict[classDef] = {}; }; inst.classToInstancesDict[classDef][instance] = true; setSharedStyles(instance); } public static function getStyle(_arg1:String):Object{ return (getInstance().globalStyles[_arg1]); } private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{ var _local3:Class; var _local4:StyleManager; var _local5:Object; _local3 = getClassDef(_arg1); _local4 = getInstance(); _local5 = _local4.classToStylesDict[_local3][_arg2]; if (_local5 != null){ return (_local5); }; _local5 = _local4.globalStyles[_arg2]; if (_local5 != null){ return (_local5); }; return (_local4.classToDefaultStylesDict[_local3][_arg2]); } public static function setStyle(_arg1:String, _arg2:Object):void{ var _local3:Object; _local3 = getInstance().globalStyles; if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){ return; }; _local3[_arg1] = _arg2; invalidateStyle(_arg1); } } }//package fl.managers

Library Items

Symbol 1 BitmapUsed by:2
Symbol 2 GraphicUses:1Used by:3
Symbol 3 MovieClip {com.novelgames.flashgames.castledefense.Logo}Uses:2
Symbol 4 GraphicUsed by:13
Symbol 5 GraphicUsed by:6
Symbol 6 MovieClipUses:5Used by:12
Symbol 7 FontUsed by:8
Symbol 8 TextUses:7Used by:9
Symbol 9 MovieClipUses:8Used by:12
Symbol 10 MovieClipUsed by:12
Symbol 11 MovieClip {com.novelgames.flashgames.preloader.Bar}Used by:12
Symbol 12 MovieClip {com.novelgames.flashgames.preloader.PreloaderReal}Uses:6 9 10 11Used by:13
Symbol 13 MovieClip {com.novelgames.flashgames.preloader.Preloader}Uses:4 12Used by:Timeline
Symbol 14 GraphicUsed by:15
Symbol 15 MovieClip {com.novelgames.flashgames.castledefense.Bullet2}Uses:14Used by:Timeline
Symbol 16 GraphicUsed by:17
Symbol 17 MovieClip {com.novelgames.flashgames.castledefense.Bullet1}Uses:16Used by:Timeline
Symbol 18 GraphicUsed by:19
Symbol 19 MovieClip {com.novelgames.flashgames.castledefense.Bullet0}Uses:18Used by:Timeline
Symbol 20 GraphicUsed by:21
Symbol 21 MovieClip {com.novelgames.flashgames.castledefense.CannonSetRange}Uses:20Used by:Timeline
Symbol 22 GraphicUsed by:23
Symbol 23 MovieClip {com.novelgames.flashgames.castledefense.Cross}Uses:22Used by:Timeline
Symbol 24 MovieClip {com.novelgames.flashgames.castledefense.PutDialog}Used by:94  Timeline
Symbol 25 GraphicUsed by:26
Symbol 26 MovieClipUses:25Used by:31
Symbol 27 FontUsed by:28 29 36 44 46 48 54 57 60 61 62 63 64 66 68 70 72 85 87 89 91 92 93 95 97 99 109 112 116 118 120
Symbol 28 EditableTextUses:27Used by:31
Symbol 29 TextUses:27Used by:30
Symbol 30 MovieClipUses:29Used by:31
Symbol 31 MovieClip {castledefense_fla.sellBubble_8}Uses:26 28 30Used by:32
Symbol 32 MovieClip {com.novelgames.flashgames.castledefense.SellDialog}Uses:31Used by:94  Timeline
Symbol 33 GraphicUsed by:34
Symbol 34 MovieClipUses:33Used by:43
Symbol 35 GraphicUsed by:42
Symbol 36 TextUses:27Used by:37
Symbol 37 MovieClipUses:36Used by:42
Symbol 38 GraphicUsed by:42
Symbol 39 GraphicUsed by:40
Symbol 40 MovieClipUses:39Used by:42
Symbol 41 GraphicUsed by:42
Symbol 42 MovieClip {com.novelgames.flashgames.castledefense.LifeBubble}Uses:35 37 38 40 41Used by:43  Timeline
Symbol 43 MovieClip {com.novelgames.flashgames.castledefense.Castle}Uses:34 42Used by:Timeline
Symbol 44 TextUses:27Used by:45
Symbol 45 MovieClipUses:44Used by:50
Symbol 46 TextUses:27Used by:47
Symbol 47 MovieClipUses:46Used by:50
Symbol 48 TextUses:27Used by:49
Symbol 49 MovieClipUses:48Used by:50
Symbol 50 MovieClip {com.novelgames.flashgames.castledefense.Message}Uses:45 47 49Used by:94  Timeline
Symbol 51 MovieClipUsed by:75 94
Symbol 52 GraphicUsed by:53 56 59 74
Symbol 53 MovieClipUses:52Used by:56 59 74 103
Symbol 54 TextUses:27Used by:55 56
Symbol 55 MovieClipUses:54Used by:56
Symbol 56 ButtonUses:53 55 52 54Used by:94
Symbol 57 TextUses:27Used by:58 59
Symbol 58 MovieClipUses:57Used by:59
Symbol 59 ButtonUses:53 58 52 57Used by:75 94
Symbol 60 EditableTextUses:27Used by:75
Symbol 61 EditableTextUses:27Used by:75
Symbol 62 EditableTextUses:27Used by:75
Symbol 63 EditableTextUses:27Used by:75
Symbol 64 TextUses:27Used by:65
Symbol 65 MovieClipUses:64Used by:75
Symbol 66 TextUses:27Used by:67
Symbol 67 MovieClipUses:66Used by:75
Symbol 68 TextUses:27Used by:69
Symbol 69 MovieClipUses:68Used by:75
Symbol 70 TextUses:27Used by:71
Symbol 71 MovieClipUses:70Used by:75
Symbol 72 TextUses:27Used by:73 74
Symbol 73 MovieClipUses:72Used by:74
Symbol 74 ButtonUses:53 73 52 72Used by:75
Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog}Uses:51 60 61 62 63 65 67 69 71 59 74Used by:94  Timeline
Symbol 76 GraphicUsed by:94
Symbol 77 GraphicUsed by:78
Symbol 78 MovieClipUses:77Used by:94
Symbol 79 GraphicUsed by:82
Symbol 80 GraphicUsed by:82
Symbol 81 GraphicUsed by:82
Symbol 82 MovieClip {com.novelgames.flashgames.common.MuteButton}Uses:79 80 81Used by:94  Timeline
Symbol 83 GraphicUsed by:84
Symbol 84 MovieClip {com.novelgames.flashgames.common.InstructionsButton}Uses:83Used by:94  Timeline
Symbol 85 TextUses:27Used by:86
Symbol 86 MovieClipUses:85Used by:94
Symbol 87 TextUses:27Used by:88
Symbol 88 MovieClipUses:87Used by:94
Symbol 89 TextUses:27Used by:90
Symbol 90 MovieClipUses:89Used by:94
Symbol 91 EditableTextUses:27Used by:94
Symbol 92 EditableTextUses:27Used by:94
Symbol 93 EditableTextUses:27Used by:94
Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game}Uses:51 56 59 75 24 32 76 78 82 84 86 88 90 91 92 93 50Used by:Timeline
Symbol 95 TextUses:27Used by:96
Symbol 96 MovieClipUses:95Used by:103
Symbol 97 TextUses:27Used by:98
Symbol 98 MovieClipUses:97Used by:103
Symbol 99 TextUses:27Used by:100
Symbol 100 MovieClipUses:99Used by:102
Symbol 101 GraphicUsed by:102 111 114
Symbol 102 ButtonUses:100 101Used by:103 108
Symbol 103 MovieClip {com.novelgames.flashgames.common.Instructions}Uses:53 96 98 102Used by:Timeline
Symbol 104 BitmapUsed by:105
Symbol 105 GraphicUses:104Used by:106
Symbol 106 MovieClipUses:105Used by:108
Symbol 107 GraphicUsed by:108
Symbol 108 MovieClip {com.novelgames.flashgames.common.Title}Uses:102 106 107Used by:Timeline
Symbol 109 TextUses:27Used by:110
Symbol 110 MovieClipUses:109Used by:111
Symbol 111 ButtonUses:110 101Used by:115
Symbol 112 TextUses:27Used by:113
Symbol 113 MovieClipUses:112Used by:114
Symbol 114 ButtonUses:113 101Used by:115
Symbol 115 MovieClip {com.novelgames.flashgames.castledefense.MessagePlayAgain}Uses:111 114Used by:Timeline
Symbol 116 EditableTextUses:27Used by:117
Symbol 117 MovieClip {com.novelgames.flashgames.castledefense.MoneyPopup}Uses:116Used by:Timeline
Symbol 118 TextUses:27Used by:119
Symbol 119 MovieClipUses:118Used by:121
Symbol 120 EditableTextUses:27Used by:121
Symbol 121 MovieClip {com.novelgames.flashgames.castledefense.MessageLevel}Uses:119 120Used by:Timeline
Symbol 122 GraphicUsed by:128
Symbol 123 GraphicUsed by:128
Symbol 124 GraphicUsed by:128
Symbol 125 GraphicUsed by:128
Symbol 126 GraphicUsed by:128
Symbol 127 GraphicUsed by:128
Symbol 128 MovieClip {com.novelgames.flashgames.castledefense.Road}Uses:122 123 124 125 126 127Used by:Timeline
Symbol 129 GraphicUsed by:130
Symbol 130 MovieClipUses:129Used by:133
Symbol 131 GraphicUsed by:132
Symbol 132 MovieClipUses:131Used by:133
Symbol 133 MovieClip {com.novelgames.flashgames.castledefense.CannonSet0}Uses:130 132Used by:Timeline
Symbol 134 GraphicUsed by:135
Symbol 135 MovieClipUses:134Used by:138
Symbol 136 GraphicUsed by:137
Symbol 137 MovieClipUses:136Used by:138
Symbol 138 MovieClip {com.novelgames.flashgames.castledefense.CannonSet2}Uses:135 137Used by:Timeline
Symbol 139 GraphicUsed by:140
Symbol 140 MovieClipUses:139Used by:142 144 146
Symbol 141 GraphicUsed by:142
Symbol 142 MovieClip {com.novelgames.flashgames.castledefense.Enemy1}Uses:140 141Used by:Timeline
Symbol 143 GraphicUsed by:144
Symbol 144 MovieClip {com.novelgames.flashgames.castledefense.Enemy2}Uses:140 143Used by:Timeline
Symbol 145 GraphicUsed by:146
Symbol 146 MovieClip {com.novelgames.flashgames.castledefense.Enemy0}Uses:140 145Used by:Timeline
Symbol 147 GraphicUsed by:148
Symbol 148 MovieClipUses:147Used by:151
Symbol 149 GraphicUsed by:150
Symbol 150 MovieClipUses:149Used by:151
Symbol 151 MovieClip {com.novelgames.flashgames.castledefense.CannonSet1}Uses:148 150Used by:Timeline
Symbol 152 ShapeTweeningUsed by:157
Symbol 153 GraphicUsed by:154
Symbol 154 MovieClipUses:153Used by:157 163
Symbol 155 ShapeTweeningUsed by:157
Symbol 156 GraphicUsed by:157
Symbol 157 MovieClip {com.novelgames.flashgames.castledefense.ExplosionEnemy}Uses:152 154 155 156Used by:Timeline
Symbol 158 ShapeTweeningUsed by:162
Symbol 159 ShapeTweeningUsed by:162
Symbol 160 GraphicUsed by:162
Symbol 161 GraphicUsed by:162
Symbol 162 MovieClip {com.novelgames.flashgames.castledefense.ExplosionBullet}Uses:158 159 160 161Used by:Timeline
Symbol 163 MovieClip {com.novelgames.flashgames.castledefense.ExplosionCastle}Uses:154Used by:Timeline
Symbol 164 Sound {com.novelgames.flashgames.castledefense.MusicGame}Used by:Timeline
Symbol 165 Sound {com.novelgames.flashgames.castledefense.SoundAllClear}Used by:Timeline
Symbol 166 Sound {com.novelgames.flashgames.castledefense.SoundBuySell}Used by:Timeline
Symbol 167 Sound {com.novelgames.flashgames.castledefense.SoundCastle}Used by:Timeline
Symbol 168 Sound {com.novelgames.flashgames.castledefense.SoundEnemy}Used by:Timeline
Symbol 169 Sound {com.novelgames.flashgames.castledefense.SoundGameOver}Used by:Timeline
Symbol 170 Sound {com.novelgames.flashgames.castledefense.SoundLevelClear}Used by:Timeline
Symbol 171 BitmapUsed by:172
Symbol 172 GraphicUses:171Used by:Timeline

Instance Names

"__id0_"Frame 1Symbol 13 MovieClip {com.novelgames.flashgames.preloader.Preloader}
"title"Frame 21Symbol 108 MovieClip {com.novelgames.flashgames.common.Title}
"white"Symbol 12 MovieClip {com.novelgames.flashgames.preloader.PreloaderReal} Frame 1Symbol 6 MovieClip
"text"Symbol 12 MovieClip {com.novelgames.flashgames.preloader.PreloaderReal} Frame 1Symbol 9 MovieClip
"backgroundHolder"Symbol 12 MovieClip {com.novelgames.flashgames.preloader.PreloaderReal} Frame 1Symbol 10 MovieClip
"bar"Symbol 12 MovieClip {com.novelgames.flashgames.preloader.PreloaderReal} Frame 1Symbol 11 MovieClip {com.novelgames.flashgames.preloader.Bar}
"moneyText"Symbol 31 MovieClip {castledefense_fla.sellBubble_8} Frame 1Symbol 28 EditableText
"sellBubble"Symbol 32 MovieClip {com.novelgames.flashgames.castledefense.SellDialog} Frame 1Symbol 31 MovieClip {castledefense_fla.sellBubble_8}
"barMask"Symbol 42 MovieClip {com.novelgames.flashgames.castledefense.LifeBubble} Frame 1Symbol 40 MovieClip
"castle"Symbol 43 MovieClip {com.novelgames.flashgames.castledefense.Castle} Frame 1Symbol 34 MovieClip
"lifeBubble"Symbol 43 MovieClip {com.novelgames.flashgames.castledefense.Castle} Frame 1Symbol 42 MovieClip {com.novelgames.flashgames.castledefense.LifeBubble}
"shadeHolder"Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog} Frame 1Symbol 51 MovieClip
"backgroundHolder"Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog} Frame 1Symbol 51 MovieClip
"powerText"Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog} Frame 1Symbol 60 EditableText
"frequencyText"Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog} Frame 1Symbol 61 EditableText
"rangeText"Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog} Frame 1Symbol 62 EditableText
"priceText"Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog} Frame 1Symbol 63 EditableText
"buyButton"Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog} Frame 1Symbol 59 Button
"cancelButton"Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog} Frame 1Symbol 74 Button
"cannonsHolder"Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog} Frame 1Symbol 51 MovieClip
"roadsHolder"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 51 MovieClip
"enemiesHolder"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 51 MovieClip
"cannonSetsHolder"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 51 MovieClip
"bulletsHolder"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 51 MovieClip
"explosionsHolder"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 51 MovieClip
"moneysHolder"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 51 MovieClip
"sellButton"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 56 Button
"buyButton"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 59 Button
"buyDialog"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 75 MovieClip {com.novelgames.flashgames.castledefense.BuyDialog}
"putDialog"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 24 MovieClip {com.novelgames.flashgames.castledefense.PutDialog}
"sellDialog"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 32 MovieClip {com.novelgames.flashgames.castledefense.SellDialog}
"levelText"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 91 EditableText
"scoreText"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 92 EditableText
"moneyText"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 93 EditableText
"message"Symbol 94 MovieClip {com.novelgames.flashgames.castledefense.Game} Frame 1Symbol 50 MovieClip {com.novelgames.flashgames.castledefense.Message}
"startButton"Symbol 103 MovieClip {com.novelgames.flashgames.common.Instructions} Frame 1Symbol 102 Button
"startButton"Symbol 108 MovieClip {com.novelgames.flashgames.common.Title} Frame 1Symbol 102 Button
"playAgainButton"Symbol 115 MovieClip {com.novelgames.flashgames.castledefense.MessagePlayAgain} Frame 1Symbol 111 Button
"homeButton"Symbol 115 MovieClip {com.novelgames.flashgames.castledefense.MessagePlayAgain} Frame 1Symbol 114 Button
"moneyText"Symbol 117 MovieClip {com.novelgames.flashgames.castledefense.MoneyPopup} Frame 1Symbol 116 EditableText
"levelText"Symbol 121 MovieClip {com.novelgames.flashgames.castledefense.MessageLevel} Frame 1Symbol 120 EditableText
"background"Symbol 133 MovieClip {com.novelgames.flashgames.castledefense.CannonSet0} Frame 1Symbol 130 MovieClip
"cannon"Symbol 133 MovieClip {com.novelgames.flashgames.castledefense.CannonSet0} Frame 1Symbol 132 MovieClip
"background"Symbol 138 MovieClip {com.novelgames.flashgames.castledefense.CannonSet2} Frame 1Symbol 135 MovieClip
"cannon"Symbol 138 MovieClip {com.novelgames.flashgames.castledefense.CannonSet2} Frame 1Symbol 137 MovieClip
"background"Symbol 151 MovieClip {com.novelgames.flashgames.castledefense.CannonSet1} Frame 1Symbol 148 MovieClip
"cannon"Symbol 151 MovieClip {com.novelgames.flashgames.castledefense.CannonSet1} Frame 1Symbol 150 MovieClip

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
Protect (24)Timeline Frame 10 bytes ""

Labels

"preloader"Frame 1
"exports"Frame 11
"game"Frame 21
"hide"Symbol 50 MovieClip {com.novelgames.flashgames.castledefense.Message} Frame 1
"levelClear"Symbol 50 MovieClip {com.novelgames.flashgames.castledefense.Message} Frame 6
"allClear"Symbol 50 MovieClip {com.novelgames.flashgames.castledefense.Message} Frame 14
"gameOver"Symbol 50 MovieClip {com.novelgames.flashgames.castledefense.Message} Frame 22
"on"Symbol 82 MovieClip {com.novelgames.flashgames.common.MuteButton} Frame 1
"off"Symbol 82 MovieClip {com.novelgames.flashgames.common.MuteButton} Frame 6
"LR"Symbol 128 MovieClip {com.novelgames.flashgames.castledefense.Road} Frame 1
"UD"Symbol 128 MovieClip {com.novelgames.flashgames.castledefense.Road} Frame 5
"UL"Symbol 128 MovieClip {com.novelgames.flashgames.castledefense.Road} Frame 10
"LD"Symbol 128 MovieClip {com.novelgames.flashgames.castledefense.Road} Frame 15
"UR"Symbol 128 MovieClip {com.novelgames.flashgames.castledefense.Road} Frame 20
"DR"Symbol 128 MovieClip {com.novelgames.flashgames.castledefense.Road} Frame 25




http://swfchan.com/17/82797/info.shtml
Created: 1/4 -2019 05:40:22 Last modified: 1/4 -2019 05:40:22 Server time: 03/05 -2024 13:10:08