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

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

La2.swf

This is the info page for
Flash #89820

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


ActionScript [AS3]
Section 1
//Bar (abagames.la2.barrage.Bar) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class Bar extends Barrage { private const FIRE_INTERVAL:Number = 60; private const FIRE_SPEED:Number = 1; public function Bar(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ super(_arg1, _arg2, _arg3); } override public function update(_arg1:Vector, _arg2:BarrageState):void{ var _local3:int; var _local4:int; var _local5:Number; _local3 = (2 + (_arg2.rank * 4)); _local4 = _arg2.cnt; if (!_arg2.update(((FIRE_INTERVAL * _arg2.interval) / (1 + _arg2.rank)), (_local3 * 7))){ return; }; if ((_local4 % 7) != 0){ return; }; if (!_arg2.fires){ _arg2.fires = true; _arg2.fireDeg = Math.atan2((player.pos.x - _arg1.x), (player.pos.y - _arg1.y)); _arg2.firePos.x = _arg1.x; _arg2.firePos.y = _arg1.y; }; _local5 = ((FIRE_SPEED * _arg2.speed) * (1 + _arg2.rank)); fire(_arg2.firePos, _arg2.fireDeg, _local5, _arg2.tainted); } } }//package abagames.la2.barrage
Section 2
//Barrage (abagames.la2.barrage.Barrage) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class Barrage { protected var player:Player; protected var bullets:BulletPool; protected var particles:ParticlePool; public function Barrage(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ this.bullets = _arg1; this.particles = _arg2; this.player = _arg3; } protected function fire(_arg1:Vector, _arg2:Number, _arg3:Number, _arg4:Boolean=false):Boolean{ var _local5:Bullet; var _local6:int; var _local7:Particle; if (!bullets.hasNextInstance){ return (false); }; _local5 = Bullet(bullets.getInstance()); _local5.add(_arg1.x, _arg1.y, _arg2, _arg3, _arg4); _local6 = 0; while (_local6 < 5) { _local7 = Particle(particles.getInstanceForced()); _local7.add(_arg1.x, _arg1.y, ((_arg2 + (Math.random() * 0.2)) - 0.1), (_arg3 * (2 + Math.random())), 100, 200, 200); _local6++; }; return (true); } public function update(_arg1:Vector, _arg2:BarrageState):void{ } } }//package abagames.la2.barrage
Section 3
//BarrageState (abagames.la2.barrage.BarrageState) package abagames.la2.barrage { import abagames.util.*; public class BarrageState { public var tainted:Boolean; private var _speed:Number; private var _rank:Number; public var fireDegVel:Number; public var fireCnt:int; public var onCell:Boolean; private var _interval:Number; private var _cnt:int; private var isFirst:Boolean; public var fireDeg:Number; public var fires:Boolean; public var firePos:Vector; public function BarrageState(){ firePos = new Vector(); } public function get interval():Number{ return (_interval); } public function get speed():Number{ return (_speed); } public function update(_arg1:int, _arg2:int=1):Boolean{ if (tainted){ _rank = (_rank + ((1 - _rank) * 0.003)); }; _cnt--; if (_cnt >= _arg2){ return (false); }; if (_cnt <= 0){ _cnt = _arg1; if (!onCell){ _cnt = (_cnt * 2); }; fires = false; }; if (isFirst){ isFirst = false; return (false); }; return (true); } public function init(_arg1:Number, _arg2:Number):void{ tainted = false; onCell = true; fireCnt = 0; fireDeg = 0; fireDegVel = 1; fires = false; _cnt = 0; _rank = 0; _interval = _arg1; _speed = _arg2; isFirst = true; } public function get cnt():int{ return (_cnt); } public function get rank():Number{ return (_rank); } } }//package abagames.la2.barrage
Section 4
//Nway (abagames.la2.barrage.Nway) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class Nway extends Barrage { private const FIRE_INTERVAL:Number = 100; private const FIRE_SPEED:Number = 1; public function Nway(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ super(_arg1, _arg2, _arg3); } override public function update(_arg1:Vector, _arg2:BarrageState):void{ var _local3:Number; var _local4:int; var _local5:Number; var _local6:Number; var _local7:int; if (!_arg2.update(((FIRE_INTERVAL * _arg2.interval) / (1 + _arg2.rank)))){ return; }; _local3 = ((FIRE_SPEED * _arg2.speed) * (1 + _arg2.rank)); _local4 = (3 + (int((_arg2.rank * 5)) * 2)); _local5 = Math.atan2((player.pos.x - _arg1.x), (player.pos.y - _arg1.y)); _local6 = (((Math.PI / 3) * 2) / (_local4 - 1)); _local5 = (_local5 - (Math.PI / 3)); _local7 = 0; while (_local7 < _local4) { fire(_arg1, _local5, _local3, _arg2.tainted); _local5 = (_local5 + _local6); _local7++; }; } } }//package abagames.la2.barrage
Section 5
//NwayHat (abagames.la2.barrage.NwayHat) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class NwayHat extends Barrage { private const FIRE_INTERVAL:Number = 100; private const FIRE_SPEED:Number = 1; public function NwayHat(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ super(_arg1, _arg2, _arg3); } override public function update(_arg1:Vector, _arg2:BarrageState):void{ var _local3:Number; var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:int; if (!_arg2.update(((FIRE_INTERVAL * _arg2.interval) / (1 + _arg2.rank)))){ return; }; _local3 = ((FIRE_SPEED * _arg2.speed) * (1 + _arg2.rank)); _local4 = (3 + (int((_arg2.rank * 5)) * 2)); _local5 = Math.atan2((player.pos.x - _arg1.x), (player.pos.y - _arg1.y)); _local6 = (Math.PI / (_local4 - 1)); _local7 = _local5; _local8 = _local3; _local9 = 0; while (_local9 < int(((_local4 + 1) / 2))) { fire(_arg1, _local7, _local8, _arg2.tainted); _local8 = (_local8 + (_local3 * 0.22)); _local7 = (_local7 + _local6); _local9++; }; _local7 = _local5; _local8 = _local3; _local9 = 0; while (_local9 < int(((_local4 + 1) / 2))) { fire(_arg1, _local7, _local8, _arg2.tainted); _local8 = (_local8 + (_local3 * 0.22)); _local7 = (_local7 - _local6); _local9++; }; } } }//package abagames.la2.barrage
Section 6
//Random (abagames.la2.barrage.Random) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class Random extends Barrage { private const FIRE_INTERVAL:Number = 60; private const FIRE_SPEED:Number = 1; public function Random(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ super(_arg1, _arg2, _arg3); } override public function update(_arg1:Vector, _arg2:BarrageState):void{ var _local3:Number; var _local4:Number; if (!_arg2.update(((FIRE_INTERVAL * _arg2.interval) * (1 - (_arg2.rank * 0.95))))){ return; }; _local3 = ((FIRE_SPEED * _arg2.speed) * (1 + _arg2.rank)); _local4 = (Math.atan2((player.pos.x - _arg1.x), (player.pos.y - _arg1.y)) + (((Math.random() - 0.5) * Math.PI) / 3)); fire(_arg1, _local4, _local3, _arg2.tainted); } } }//package abagames.la2.barrage
Section 7
//Rapid (abagames.la2.barrage.Rapid) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class Rapid extends Barrage { private const FIRE_INTERVAL:Number = 40; private const FIRE_SPEED:Number = 1; public function Rapid(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ super(_arg1, _arg2, _arg3); } override public function update(_arg1:Vector, _arg2:BarrageState):void{ var _local3:Number; var _local4:Number; if (!_arg2.update(((FIRE_INTERVAL * _arg2.interval) * (1 - (_arg2.rank * 0.95))))){ return; }; _local3 = ((FIRE_SPEED * _arg2.speed) * (1 + _arg2.rank)); _local4 = Math.atan2((player.pos.x - _arg1.x), (player.pos.y - _arg1.y)); fire(_arg1, _local4, _local3, _arg2.tainted); } } }//package abagames.la2.barrage
Section 8
//Shotgun (abagames.la2.barrage.Shotgun) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class Shotgun extends Barrage { private const FIRE_INTERVAL:Number = 80; private const FIRE_SPEED:Number = 1; public function Shotgun(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ super(_arg1, _arg2, _arg3); } override public function update(_arg1:Vector, _arg2:BarrageState):void{ var _local3:Number; var _local4:int; var _local5:Number; var _local6:int; if (!_arg2.update(((FIRE_INTERVAL * _arg2.interval) / (1 + _arg2.rank)))){ return; }; _local3 = ((FIRE_SPEED * _arg2.speed) * (1 + _arg2.rank)); _local4 = (2 + int((_arg2.rank * 10))); _local5 = Math.atan2((player.pos.x - _arg1.x), (player.pos.y - _arg1.y)); _local6 = 0; while (_local6 < _local4) { fire(_arg1, (_local5 + ((Math.random() - 0.5) * 0.3)), (_local3 * (1 + ((Math.random() - 0.5) * 0.3))), _arg2.tainted); _local6++; }; } } }//package abagames.la2.barrage
Section 9
//Spray (abagames.la2.barrage.Spray) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class Spray extends Barrage { private const FIRE_INTERVAL:Number = 30; private const FIRE_SPEED:Number = 1; public function Spray(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ super(_arg1, _arg2, _arg3); } override public function update(_arg1:Vector, _arg2:BarrageState):void{ var _local3:Number; var _local4:Number; var _local5:int; var _local6:Number; if (!_arg2.update(((FIRE_INTERVAL * _arg2.interval) * (1 - (_arg2.rank * 0.9))))){ return; }; _local3 = ((FIRE_SPEED * _arg2.speed) * (1 + _arg2.rank)); _local4 = Math.atan2((player.pos.x - _arg1.x), (player.pos.y - _arg1.y)); _local5 = (3 + (int((_arg2.rank * 5)) * 2)); _local6 = (Math.PI / (_local5 + 1)); _arg2.fireCnt = (_arg2.fireCnt + _arg2.fireDegVel); if ((((_arg2.fireCnt >= ((_local5 + 1) / 2))) || ((_arg2.fireCnt <= (-((_local5 + 1)) / 2))))){ _arg2.fireDegVel = (_arg2.fireDegVel * -1); _arg2.fireCnt = (_arg2.fireCnt + (_arg2.fireDegVel * 2)); }; fire(_arg1, (_local4 + (_local6 * _arg2.fireCnt)), _local3, _arg2.tainted); } } }//package abagames.la2.barrage
Section 10
//Wave (abagames.la2.barrage.Wave) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class Wave extends Barrage { private const FIRE_INTERVAL:Number = 60; private const FIRE_SPEED:Number = 1; public function Wave(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ super(_arg1, _arg2, _arg3); } override public function update(_arg1:Vector, _arg2:BarrageState):void{ var _local3:Number; var _local4:int; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:int; if (!_arg2.update(((FIRE_INTERVAL * _arg2.interval) / (1 + _arg2.rank)))){ return; }; _local3 = ((FIRE_SPEED * _arg2.speed) * (1 + _arg2.rank)); _local4 = (3 + (int((_arg2.rank * 5)) * 2)); _local5 = ((Math.PI / 3) / (_local4 + 2)); _arg2.fireCnt++; if ((_arg2.fireCnt % 2) == 0){ _local5 = (_local5 * -1); }; _local6 = Math.atan2((player.pos.x - _arg1.x), (player.pos.y - _arg1.y)); _local7 = _local3; _local8 = 0; while (_local8 < int(((_local4 + 1) / 2))) { fire(_arg1, _local6, _local7, _arg2.tainted); _local7 = (_local7 - (_local3 * 0.08)); _local6 = (_local6 + _local5); _local8++; }; } } }//package abagames.la2.barrage
Section 11
//Whip (abagames.la2.barrage.Whip) package abagames.la2.barrage { import abagames.util.*; import abagames.la2.*; public class Whip extends Barrage { private const FIRE_INTERVAL:Number = 80; private const FIRE_SPEED:Number = 1; public function Whip(_arg1:BulletPool, _arg2:ParticlePool, _arg3:Player){ super(_arg1, _arg2, _arg3); } override public function update(_arg1:Vector, _arg2:BarrageState):void{ var _local3:int; var _local4:int; var _local5:Number; var _local6:Number; _local3 = (2 + (_arg2.rank * 5)); _local4 = _arg2.cnt; if (!_arg2.update(((FIRE_INTERVAL * _arg2.interval) / (1 + _arg2.rank)), (_local3 * 3))){ return; }; if ((_local4 % 3) != 0){ return; }; _local5 = ((FIRE_SPEED * _arg2.speed) * (1 + _arg2.rank)); _local5 = (_local5 * (1 + ((_local3 - int((_local4 / 3))) * 0.2))); _local6 = Math.atan2((player.pos.x - _arg1.x), (player.pos.y - _arg1.y)); fire(_arg1, _local6, _local5, _arg2.tainted); } } }//package abagames.la2.barrage
Section 12
//Background (abagames.la2.Background) package abagames.la2 { import flash.display.*; import abagames.util.*; import flash.geom.*; public class Background { private var buffer:BitmapData; private var heightMapX:Number; private var heightMapY:Number; private var field:Field; private var shadowIdxNext:int; private var heightMapWidth:int; private var shadows:Array; private var shadowRect:Rectangle; private var heightMapYScroll:Number; private var heightMap:Array; private var heightMapSquareRect:Rectangle; private var heightMapHeight:int; private var shadowIdx:int; public static const HEIGHT_MAP_SQUARE_SIZE:Number = 20; public function Background(_arg1:BitmapData, _arg2:Field){ var _local3:int; var _local4:int; var _local5:Array; var _local6:int; var _local7:Number; super(); this.buffer = _arg1; this.field = _arg2; heightMapWidth = (_arg2.size.x / HEIGHT_MAP_SQUARE_SIZE); heightMapHeight = (_arg2.size.y / HEIGHT_MAP_SQUARE_SIZE); heightMap = new Array(); _local3 = 0; while (_local3 <= heightMapWidth) { _local5 = new Array(); _local6 = 0; while (_local6 <= heightMapHeight) { _local7 = 0; if (((!(((_local3 % 10) == 0))) && (!(((_local6 % 10) == 0))))){ _local7 = (Math.random() * 25); }; _local5.push(_local7); _local6++; }; heightMap.push(_local5); _local3++; }; heightMapSquareRect = new Rectangle(0, 0, HEIGHT_MAP_SQUARE_SIZE, HEIGHT_MAP_SQUARE_SIZE); shadows = new Array(); _local4 = 0; while (_local4 < 0x0400) { shadows.push(new Shadow()); _local4++; }; shadowIdx = (shadowIdxNext = 0); shadowRect = new Rectangle(); heightMapX = (heightMapY = (heightMapYScroll = 0)); } public function update():void{ var _local1:Number; var _local2:int; var _local3:int; var _local4:Number; var _local5:int; var _local6:Number; var _local7:int; var _local8:int; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:int; heightMapX = (field.offset.x * 0.5); heightMapY = (field.offset.y * 0.5); _local1 = (heightMapY + heightMapYScroll); if (_local1 < 0){ _local1 = (_local1 + field.size.y); }; if (_local1 >= field.size.y){ _local1 = (_local1 - field.size.y); }; _local3 = (heightMapX / HEIGHT_MAP_SQUARE_SIZE); _local4 = (heightMapX % HEIGHT_MAP_SQUARE_SIZE); _local5 = (_local1 / HEIGHT_MAP_SQUARE_SIZE); _local6 = (_local1 % HEIGHT_MAP_SQUARE_SIZE); _local7 = 0; while (_local7 <= ((heightMapHeight / Field.SIZE_RATIO) + 1)) { _local2 = _local3; _local8 = 0; while (_local8 <= ((heightMapWidth / Field.SIZE_RATIO) + 1)) { _local9 = heightMap[_local2][_local5]; heightMapSquareRect.x = (((_local8 * HEIGHT_MAP_SQUARE_SIZE) - _local4) - _local9); heightMapSquareRect.y = (((_local7 * HEIGHT_MAP_SQUARE_SIZE) - _local6) - _local9); _local10 = (((_local8 * HEIGHT_MAP_SQUARE_SIZE) - _local4) - 200); _local11 = (((_local7 * HEIGHT_MAP_SQUARE_SIZE) - _local6) - 150); _local12 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11))); _local12 = (_local12 * 0.012); _local12 = (1.5 - _local12); if (_local12 > 1){ _local12 = 1; }; if (_local12 > 0){ _local13 = (((int((85 * _local12)) * 65536) + (int((51 * _local12)) * 0x0100)) + int((153 * _local12))); buffer.fillRect(heightMapSquareRect, _local13); }; _local2++; _local8++; }; _local5++; if (_local5 >= heightMapHeight){ _local5 = (_local5 - heightMapHeight); }; _local7++; }; drawShadows(); heightMapYScroll = (heightMapYScroll - 0.1); if (heightMapYScroll < 0){ heightMapYScroll = (heightMapYScroll + field.size.y); }; } public function addShadow(_arg1:Number, _arg2:Number, _arg3:Vector):void{ shadows[shadowIdxNext].set(_arg1, _arg2, _arg3.x, _arg3.y); shadowIdxNext--; if (shadowIdxNext < 0){ shadowIdxNext = (shadowIdxNext + shadows.length); }; } public function drawShadows():void{ var _local1:int; var _local2:Shadow; var _local3:Number; var _local4:int; var _local5:Number; var _local6:Number; var _local7:int; var _local8:Number; _local1 = 0; while (_local1 < shadows.length) { if (shadowIdx == shadowIdxNext){ break; }; _local2 = shadows[shadowIdx]; _local3 = ((_local2.pos.x * 0.5) - heightMapX); _local4 = ((_local2.pos.x * 0.5) / HEIGHT_MAP_SQUARE_SIZE); _local5 = ((_local2.pos.y * 0.5) - heightMapY); _local6 = ((_local2.pos.y * 0.5) - heightMapY); if (_local6 < 0){ _local6 = (_local6 + field.size.y); }; _local7 = (_local6 / HEIGHT_MAP_SQUARE_SIZE); _local8 = heightMap[_local4][_local7]; shadowRect.x = (_local3 - _local8); shadowRect.y = (_local5 - _local8); shadowRect.width = (_local2.size.x * 0.5); shadowRect.height = (_local2.size.y * 0.5); buffer.fillRect(shadowRect, 0); shadowIdx--; if (shadowIdx < 0){ shadowIdx = (shadowIdx + shadows.length); }; _local1++; }; } } }//package abagames.la2 import abagames.util.*; class Shadow { public var size:Vector; public var pos:Vector; private function Shadow(){ pos = new Vector(); size = new Vector(); } public function set(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):void{ pos.x = (_arg1 + 250); pos.y = (_arg2 + 150); size.x = _arg3; size.y = _arg4; } }
Section 13
//Bullet (abagames.la2.Bullet) package abagames.la2 { import flash.display.*; import abagames.util.*; public class Bullet extends Actor { private var buffer:BitmapData; private var deg:Number; private var speed:Number; private var _tainted:Boolean; private var _pos:Vector; private var player:Player; private var particles:ParticlePool; private var cnt:int; private var shapes:Array; private var bullets:BulletPool; private var field:Field; private static const SIZE:Number = 4; public function Bullet(_arg1:BitmapData, _arg2:Player, _arg3:Field, _arg4:Background, _arg5:BulletPool, _arg6:ParticlePool){ var _local7:Shape; super(); this.buffer = _arg1; this.player = _arg2; this.field = _arg3; this.bullets = _arg5; this.particles = _arg6; _pos = new Vector(); shapes = new Array(); _local7 = new Shape(_arg1, _arg3, _arg4); _local7.addBox(0, 0, (SIZE * 2), (SIZE * 2), 2, 0, 220, 220); shapes.push(_local7); _local7 = new Shape(_arg1, _arg3, _arg4); _local7.addBox(0, 0, (SIZE * 2), (SIZE * 2), 2, 180, 180, 250); shapes.push(_local7); } public function get tainted():Boolean{ return (_tainted); } override public function update():void{ var _local1:Number; var _local2:int; _pos.x = (_pos.x + (Math.sin(deg) * speed)); _pos.y = (_pos.y + (Math.cos(deg) * speed)); if (!field.isIn(_pos)){ remove(); return; }; if (((!(_tainted)) && (((((((field.existsTaintedCellScreen((_pos.x - SIZE), (_pos.y - SIZE))) || (field.existsTaintedCellScreen((_pos.x + SIZE), (_pos.y - SIZE))))) || (field.existsTaintedCellScreen((_pos.x - SIZE), (_pos.y + SIZE))))) || (field.existsTaintedCellScreen((_pos.x + SIZE), (_pos.y + SIZE))))))){ addParticles(Math.PI); remove(); return; }; _local2 = (cnt % 30); if (_local2 < 15){ _local1 = (_local2 * (1 / 15)); } else { _local1 = (2 - (_local2 * (1 / 15))); }; if (_tainted){ shapes[1].drawDistorted(_pos, _local1); } else { shapes[0].drawDistorted(_pos, _local1); }; cnt++; } public function addParticles(_arg1:Number=0):void{ var _local2:int; var _local3:Particle; _local2 = 0; while (_local2 < 7) { _local3 = Particle(particles.getInstanceForced()); _local3.add(_pos.x, _pos.y, (((deg + _arg1) + (Math.random() * 0.4)) - 0.2), (speed * (2 + Math.random())), 100, 200, 200); _local2++; }; } public function get pos():Vector{ return (_pos); } public function checkHitToPlayer(_arg1:Vector):Boolean{ return ((_pos.dist(_arg1) < Player.BULLET_HIT_SIZE)); } public function add(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Boolean=false):void{ _pos.x = _arg1; _pos.y = _arg2; deg = _arg3; speed = _arg4; _tainted = _arg5; cnt = 0; } } }//package abagames.la2
Section 14
//BulletPool (abagames.la2.BulletPool) package abagames.la2 { import flash.display.*; import abagames.util.*; public class BulletPool extends ActorPool { private var buffer:BitmapData; private var particles:ParticlePool; private var player:Player; private var background:Background; private var field:Field; public function BulletPool(_arg1:int, _arg2:BitmapData, _arg3:Player, _arg4:Field, _arg5:Background, _arg6:ParticlePool){ this.buffer = _arg2; this.player = _arg3; this.field = _arg4; this.background = _arg5; this.particles = _arg6; super(_arg1); } public function checkHitToPlayer(_arg1:Vector):Boolean{ var _local2:int; _local2 = 0; while (_local2 < actorNum) { if (Bullet(actors[_local2]).checkHitToPlayer(_arg1)){ return (true); }; _local2++; }; return (false); } override protected function createActor():Actor{ return (new Bullet(buffer, player, field, background, this, particles)); } public function removeTainted(_arg1:ScoreboardPool, _arg2:Boolean):int{ var _local3:int; var _local4:int; var _local5:Bullet; var _local6:Scoreboard; _local3 = 0; _local4 = 0; while (_local4 < actorNum) { _local5 = Bullet(actors[_local4]); if (_local5.tainted){ _local5.addParticles(); if (_arg2){ _local3++; if (_arg1.hasNextInstance){ _local6 = Scoreboard(_arg1.getInstance()); _local6.add(_local5.pos.x, _local5.pos.y, _local3, _local3, 10); } else { field.addScore(_local3); }; }; _local5.remove(); _local4--; }; _local4++; }; return (_local3); } } }//package abagames.la2
Section 15
//Field (abagames.la2.Field) package abagames.la2 { import flash.display.*; import abagames.util.*; import abagames.la2.barrage.*; import flash.geom.*; public class Field { private const DEFAULT_FIRE_INTERVAL:Number = 1; private const DEFAULT_TURRET_INSTANCES_NUM:Number = 3; private const DEFAULT_UPDATE_INTERVAL:Number = 6; private const DEFAULT_FIRE_SPEED:Number = 1; private var _taintedCellsCenterPosX:Number; private var left:int; private var _cellsHeight:int; private var leftShapePos:Vector; private var fireInterval:Number; private var cellsTaintNext:Array; private var turretInstancesNum:Number; private var buffer:BitmapData; private var screenPos:Vector; private var cells:Array; private var cellsCnt:Array; private var scoreboards:ScoreboardPool; private var cellRect:Rectangle; private var keyState:KeyState; private var turrets:TurretPool; private var aPressed:Boolean; private var cellsTaint:Array; private var score:int; public var offset:Vector; private var _cellsWidth:int; private var barrageChangeCnt:int; private var barrages:Array; private var _outerSize:Vector; private var particles:ParticlePool; private var updateInterval:Number; private var bullets:BulletPool; private var fireSpeed:Number; private var barrageIdx:int; private var gameoverCnt:int; private var _taintedCellsNum:int; private var updateCnt:Number; private var player:Player; private var _size:Vector; private var titleCnt:int; private var shapes:Array; private var lineRect:Rectangle; private var mainLoop:MainLoop; public static const SIZE_RATIO:Number = 1.25; public static const CELLS_SQUARE_SIZE:Number = 12; private static const GLIDER:Array = [[[-1, 1], [0, 1], [1, 1], [1, 0], [0, -1]], [[1, -1], [1, 0], [1, 1], [0, -1], [-1, 0]], [[-1, -1], [0, -1], [1, -1], [-1, 0], [0, 1]], [[-1, -1], [-1, 0], [-1, 1], [0, 1], [1, 0]]]; public static const SIZE_OFFSET_RATIO:Number = 0.2; public function Field(_arg1:BitmapData){ var _local2:Number; var _local3:int; var _local4:Array; var _local5:Array; var _local6:Array; var _local7:Array; var _local8:int; super(); this.buffer = _arg1; _local2 = (La2.SCREEN_WIDTH * SIZE_RATIO); _local2 = ((int((_local2 / Background.HEIGHT_MAP_SQUARE_SIZE)) + 1) * Background.HEIGHT_MAP_SQUARE_SIZE); _size = new Vector(_local2, _local2); _outerSize = new Vector((_size.x * 1.05), (_size.y * 1.05)); _cellsWidth = (_size.x / CELLS_SQUARE_SIZE); _cellsHeight = (_size.y / CELLS_SQUARE_SIZE); cells = new Array(); cellsCnt = new Array(); cellsTaint = new Array(); cellsTaintNext = new Array(); _local3 = 0; while (_local3 <= _cellsWidth) { _local4 = new Array(); _local5 = new Array(); _local6 = new Array(); _local7 = new Array(); _local8 = 0; while (_local8 <= _cellsHeight) { _local4.push(false); _local5.push(false); _local6.push(false); _local7.push(false); _local8++; }; cells.push(_local4); cellsCnt.push(_local5); cellsTaint.push(_local6); cellsTaintNext.push(_local7); _local3++; }; offset = new Vector(); screenPos = new Vector(); leftShapePos = new Vector(); leftShapePos.y = 12; lineRect = new Rectangle(); } public function get size():Vector{ return (_size); } public function appearedTurret():void{ var _local1:int; barrageChangeCnt--; if (barrageChangeCnt <= 0){ barrageChangeCnt = 8; _local1 = barrageIdx; barrageIdx = int((Math.random() * barrages.length)); if (barrageIdx == _local1){ barrageIdx++; if (barrageIdx >= barrages.length){ barrageIdx = 0; }; }; }; } public function removeCell(_arg1:int, _arg2:int):void{ cells[_arg1][_arg2] = false; cellsTaint[_arg1][_arg2] = false; } public function startTitle():void{ init(); aPressed = true; left = 0; titleCnt = 0; turretInstancesNum = 0; turrets.instancesNum = 0; updateCnt = (updateInterval = 15); } public function get outerSize():Vector{ return (_outerSize); } public function get taintedCellsNum():int{ return (_taintedCellsNum); } private function init():void{ gameoverCnt = -1; updateCnt = (updateInterval = DEFAULT_UPDATE_INTERVAL); fireInterval = DEFAULT_FIRE_INTERVAL; fireSpeed = DEFAULT_FIRE_SPEED; turretInstancesNum = DEFAULT_TURRET_INSTANCES_NUM; removeAllCells(); } private function updateCells():void{ var _local1:int; var _local2:int; var _local3:int; var _local4:int; var _local5:Turret; var _local6:Boolean; var _local7:int; var _local8:int; var _local9:int; var _local10:Particle; updateCnt--; if (updateCnt <= 0){ updateCnt = updateInterval; _local2 = 0; while (_local2 < _cellsHeight) { _local1 = 0; while (_local1 < _cellsWidth) { if ((((((((_local1 > 0)) && ((_local1 < (_cellsWidth - 1))))) && ((_local2 > 0)))) && ((_local2 < (_cellsHeight - 1))))){ } else { if (Math.random() < 0.3){ cells[_local1][_local2] = true; if ((((Math.random() < 0.01)) && (turrets.hasNextInstance))){ _local4 = int(((Math.atan2((_local1 - (_cellsWidth / 2)), (-(_local2) + (_cellsHeight / 2))) / Math.PI) * 4)); if (_local4 < 0){ _local4 = (_local4 + 8); }; _local5 = Turret(turrets.getInstance()); _local5.add(_local1, _local2, _local4, fireInterval, fireSpeed, barrages[barrageIdx]); }; } else { cells[_local1][_local2] = false; }; cellsTaint[_local1][_local2] = false; }; _local1++; }; _local2++; }; _local2 = 1; while (_local2 < (_cellsHeight - 1)) { _local1 = 1; while (_local1 < (_cellsWidth - 1)) { _local3 = 0; _local6 = false; _local7 = -1; while (_local7 <= 1) { _local8 = -1; while (_local8 <= 1) { if (cells[(_local1 + _local8)][(_local2 + _local7)]){ _local3++; }; if (cellsTaint[(_local1 + _local8)][(_local2 + _local7)]){ _local6 = true; }; _local8++; }; _local7++; }; cellsCnt[_local1][_local2] = _local3; cellsTaintNext[_local1][_local2] = _local6; _local1++; }; _local2++; }; _local2 = 1; while (_local2 < (_cellsHeight - 1)) { _local1 = 1; while (_local1 < (_cellsWidth - 1)) { _local3 = cellsCnt[_local1][_local2]; if (cells[_local1][_local2]){ if ((((_local3 < 3)) || ((_local3 > 4)))){ cells[_local1][_local2] = false; }; } else { if (_local3 == 3){ cells[_local1][_local2] = true; }; }; cellsTaint[_local1][_local2] = ((cells[_local1][_local2]) && (cellsTaintNext[_local1][_local2])); _local1++; }; _local2++; }; }; _taintedCellsNum = 0; _taintedCellsCenterPosX = 0; _local2 = 0; while (_local2 < _cellsHeight) { _local1 = 0; while (_local1 < _cellsWidth) { if (cells[_local1][_local2]){ getScreenPos(_local1, _local2); _local9 = 0; if (cellsTaint[_local1][_local2]){ _local9++; _taintedCellsNum++; _taintedCellsCenterPosX = (_taintedCellsCenterPosX + _local1); }; if ((((((((_local1 == 0)) || ((_local1 == (_cellsWidth - 1))))) || ((_local2 == 0)))) || ((_local2 == (_cellsHeight - 1))))){ _local9 = (_local9 + 2); }; if ((((_local9 == 0)) && ((updateCnt <= 1)))){ _local10 = Particle(particles.getInstanceForced()); _local10.add(screenPos.x, screenPos.y, ((Math.random() * Math.PI) * 2), ((Math.random() * 3) + 1), 100, 250, 100); }; shapes[_local9].draw(screenPos); }; _local1++; }; _local2++; }; if (taintedCellsNum > 0){ _taintedCellsCenterPosX = (_taintedCellsCenterPosX / _taintedCellsNum); } else { _taintedCellsCenterPosX = -1; }; } public function drawStatus():void{ var _local1:int; Letter.drawNum(score, (La2.SCREEN_WIDTH - 16), 16); _local1 = 0; while (_local1 < left) { leftShapePos.x = ((_local1 * 16) + 12); player.drawShape(leftShapePos); _local1++; }; if (titleCnt >= 0){ titleCnt++; Letter.drawString("L.A.2", 100, 100, 1); lineRect.x = 0; lineRect.y = 120; lineRect.width = 200; lineRect.height = 4; buffer.fillRect(lineRect, 0x606060); lineRect.y = (lineRect.y - 2); lineRect.width = (lineRect.width - 2); buffer.fillRect(lineRect, 0xC0C0C0); if ((titleCnt % 60) < 30){ Letter.drawString("PUSH Z", 260, 340, 0.8); }; if (keyState.a){ if (!aPressed){ mainLoop.startInGame(); }; } else { aPressed = false; }; }; if (gameoverCnt >= 0){ gameoverCnt++; if (gameoverCnt > 30){ Letter.drawString("GAME OVER", 100, 150); if (keyState.a){ if (!aPressed){ mainLoop.startTitle(); return; }; } else { aPressed = false; }; if (gameoverCnt > 450){ mainLoop.startTitle(); }; }; }; } private function startGameover():void{ mainLoop.fadeoutBgm(); gameoverCnt = 0; aPressed = true; } public function destroyedPlayer():Boolean{ removeTaintedCells(false); left--; if (left < 0){ startGameover(); }; return ((left >= 0)); } private function updateDifficulty():void{ updateInterval = (updateInterval * 0.99995); if (updateInterval < 2){ updateInterval = 2; }; fireInterval = (fireInterval * 0.99995); if (fireInterval < 0.2){ fireInterval = 0.2; }; fireSpeed = (fireSpeed * 1.0001); if (fireSpeed > 2){ fireSpeed = 2; }; turretInstancesNum = (turretInstancesNum * 1.00005); if (turretInstancesNum >= turrets.maxInstancesNum){ turretInstancesNum = turrets.maxInstancesNum; }; turrets.instancesNum = int(turretInstancesNum); } public function resetDifficulty():void{ updateInterval = (updateInterval + ((DEFAULT_UPDATE_INTERVAL - updateInterval) * 0.5)); fireInterval = (fireInterval + ((DEFAULT_FIRE_INTERVAL - fireInterval) * 0.5)); fireSpeed = (fireSpeed + ((DEFAULT_FIRE_SPEED - fireSpeed) * 0.5)); turretInstancesNum = (turretInstancesNum + ((DEFAULT_TURRET_INSTANCES_NUM - turretInstancesNum) * 0.5)); } public function addGlider(_arg1:Vector, _arg2:Number):void{ var _local3:int; var _local4:int; var _local5:Number; var _local6:int; var _local7:int; var _local8:int; var _local9:int; _local3 = int(((_arg1.x + (CELLS_SQUARE_SIZE / 2)) / CELLS_SQUARE_SIZE)); _local4 = int(((_arg1.y + (CELLS_SQUARE_SIZE / 2)) / CELLS_SQUARE_SIZE)); _local5 = _arg2; if (_local5 < 0){ _local5 = (_local5 + (Math.PI * 2)); }; _local6 = int(((_local5 / Math.PI) * 2)); _local7 = 0; while (_local7 < 5) { _local8 = (_local3 + GLIDER[_local6][_local7][0]); _local9 = (_local4 + GLIDER[_local6][_local7][1]); if ((((((((_local8 >= 0)) && ((_local8 < _cellsWidth)))) && ((_local9 >= 0)))) && ((_local9 <= _cellsHeight)))){ cells[_local8][_local9] = true; cellsTaint[_local8][_local9] = true; }; _local7++; }; } public function addScore(_arg1:int):void{ score = (score + _arg1); } public function existsTaintedCell(_arg1:Number, _arg2:Number):Boolean{ if ((((((((_arg1 < 0)) || ((_arg1 >= _cellsWidth)))) || ((_arg2 < 0)))) || ((_arg2 >= _cellsHeight)))){ return (false); }; return (cellsTaint[int(_arg1)][int(_arg2)]); } public function setParams(_arg1:TurretPool, _arg2:BulletPool, _arg3:ParticlePool, _arg4:ScoreboardPool, _arg5:Background, _arg6:Player, _arg7:KeyState, _arg8:MainLoop):void{ var _local9:Shape; this.turrets = _arg1; this.bullets = _arg2; this.particles = _arg3; this.scoreboards = _arg4; this.player = _arg6; this.keyState = _arg7; this.mainLoop = _arg8; shapes = new Array(); _local9 = new Shape(buffer, this, _arg5); _local9.addBox(0, 0, (CELLS_SQUARE_SIZE - 2), (CELLS_SQUARE_SIZE - 2), 2, 0, 250, 100); shapes.push(_local9); _local9 = new Shape(buffer, this, _arg5); _local9.addBox(0, 0, (CELLS_SQUARE_SIZE - 2), (CELLS_SQUARE_SIZE - 2), 2, 200, 150, 100); shapes.push(_local9); _local9 = new Shape(buffer, this, _arg5); _local9.addBox(0, 0, (CELLS_SQUARE_SIZE - 2), (CELLS_SQUARE_SIZE - 2), 2, 0, 100, 50); shapes.push(_local9); _local9 = new Shape(buffer, this, _arg5); _local9.addBox(0, 0, (CELLS_SQUARE_SIZE - 2), (CELLS_SQUARE_SIZE - 2), 2, 100, 50, 0); shapes.push(_local9); barrages = new Array(); barrages.push(new Nway(_arg2, _arg3, _arg6)); barrages.push(new NwayHat(_arg2, _arg3, _arg6)); barrages.push(new Wave(_arg2, _arg3, _arg6)); barrages.push(new Rapid(_arg2, _arg3, _arg6)); barrages.push(new Random(_arg2, _arg3, _arg6)); barrages.push(new Spray(_arg2, _arg3, _arg6)); barrages.push(new Whip(_arg2, _arg3, _arg6)); barrages.push(new Bar(_arg2, _arg3, _arg6)); barrages.push(new Shotgun(_arg2, _arg3, _arg6)); } public function getScreenPos(_arg1:Number, _arg2:Number):Vector{ screenPos.x = ((_arg1 * CELLS_SQUARE_SIZE) + (CELLS_SQUARE_SIZE / 2)); screenPos.y = ((_arg2 * CELLS_SQUARE_SIZE) + (CELLS_SQUARE_SIZE / 2)); return (screenPos); } public function startInGame():void{ init(); score = 0; left = 2; titleCnt = -1; barrageIdx = -1; barrageChangeCnt = 0; appearedTurret(); } public function existsNotTaintedCellScreen(_arg1:Vector):Boolean{ var _local2:int; var _local3:int; _local2 = int(((_arg1.x + (CELLS_SQUARE_SIZE / 2)) / CELLS_SQUARE_SIZE)); _local3 = int(((_arg1.y + (CELLS_SQUARE_SIZE / 2)) / CELLS_SQUARE_SIZE)); if ((((((((_local2 < 0)) || ((_local2 >= _cellsWidth)))) || ((_local3 < 0)))) || ((_local3 >= _cellsHeight)))){ return (false); }; return (((cells[_local2][_local3]) && (!(cellsTaint[_local2][_local3])))); } public function update():void{ if (titleCnt < 0){ updateDifficulty(); }; updateCells(); } public function existsTaintedCellScreen(_arg1:Number, _arg2:Number):Boolean{ var _local3:int; var _local4:int; _local3 = int(((_arg1 + (CELLS_SQUARE_SIZE / 2)) / CELLS_SQUARE_SIZE)); _local4 = int(((_arg2 + (CELLS_SQUARE_SIZE / 2)) / CELLS_SQUARE_SIZE)); if ((((((((_local3 < 0)) || ((_local3 >= _cellsWidth)))) || ((_local4 < 0)))) || ((_local4 >= _cellsHeight)))){ return (false); }; return (cellsTaint[_local3][_local4]); } private function removeAllCells():void{ var _local1:int; var _local2:int; _local1 = 0; while (_local1 < _cellsHeight) { _local2 = 0; while (_local2 < _cellsWidth) { removeCell(_local2, _local1); _local2++; }; _local1++; }; } public function get cellsHeight():Number{ return (_cellsHeight); } public function isInOuter(_arg1:Vector):Boolean{ return ((((((((_arg1.x >= 0)) && ((_arg1.x < _outerSize.x)))) && ((_arg1.y >= 0)))) && ((_arg1.y < _outerSize.y)))); } public function existsCell(_arg1:Number, _arg2:Number):Boolean{ if ((((((((_arg1 < 0)) || ((_arg1 >= _cellsWidth)))) || ((_arg2 < 0)))) || ((_arg2 >= _cellsHeight)))){ return (false); }; return (cells[int(_arg1)][int(_arg2)]); } public function get taintedCellsCenterPosX():Number{ return (_taintedCellsCenterPosX); } public function isIn(_arg1:Vector):Boolean{ return ((((((((_arg1.x >= 0)) && ((_arg1.x < _size.x)))) && ((_arg1.y >= 0)))) && ((_arg1.y < _size.y)))); } public function removeTaintedCells(_arg1:Boolean=true):int{ var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:Boolean; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:Particle; var _local12:Scoreboard; _local4 = 0; _local5 = turrets.removeTainted(); _local3 = 0; while (_local3 < _cellsHeight) { _local2 = 0; while (_local2 < _cellsWidth) { if (((cells[_local2][_local3]) && (cellsTaint[_local2][_local3]))){ _local4++; }; _local2++; }; _local3++; }; if (!_arg1){ _local5 = 0; }; _local6 = true; if ((((_local5 <= 0)) || ((_local4 <= 0)))){ _local6 = false; }; _local7 = bullets.removeTainted(scoreboards, _local6); _local8 = _local7; _local9 = 0; _local3 = 0; while (_local3 < _cellsHeight) { _local2 = 0; while (_local2 < _cellsWidth) { if (((cells[_local2][_local3]) && (cellsTaint[_local2][_local3]))){ removeCell(_local2, _local3); getScreenPos(_local2, _local3); _local10 = 0; while (_local10 < 17) { _local11 = Particle(particles.getInstanceForced()); _local11.add(screenPos.x, screenPos.y, ((Math.random() * Math.PI) * 2), ((Math.random() * 6) + 1), 250, 50, 50); _local10++; }; _local8 = (_local8 + _local5); _local9++; if (_local8 > 0){ if (scoreboards.hasNextInstance){ _local12 = Scoreboard(scoreboards.getInstance()); if (_local9 == _local4){ _local12.add(screenPos.x, screenPos.y, _local8, (_local9 + _local7), 60); } else { _local12.add(screenPos.x, screenPos.y, _local8, (_local9 + _local7), 20); }; } else { addScore(_local8); }; }; }; _local2++; }; _local3++; }; return (_local4); } public function get cellsWidth():Number{ return (_cellsWidth); } } }//package abagames.la2
Section 16
//Letter (abagames.la2.Letter) package abagames.la2 { import flash.display.*; import abagames.util.*; public class Letter { private static var shapes:Array; private static var pos:Vector; private static var patterns:Array = [[[0, 1.15, 0.65, 0.3, 0], [-0.6, 0.55, 0.65, 0.3, 90], [0.6, 0.55, 0.65, 0.3, 90], [-0.6, -0.55, 0.65, 0.3, 90], [0.6, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0.5, 0.55, 0.65, 0.3, 90], [0.5, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [0.65, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [0.65, 0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[-0.18, 1.15, 0.45, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.45, 0.55, 0.65, 0.3, 90], [-0.18, 0, 0.45, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [-0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[-0.15, 1.15, 0.45, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.45, 0.45, 0.65, 0.3, 90], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.05, 0, 0.3, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 0.55, 0.65, 0.3, 90], [0, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0.65, 0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [-0.7, -0.7, 0.3, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[-0.65, 0.55, 0.65, 0.3, 90], [0.4, 0.55, 0.65, 0.3, 100], [-0.25, 0, 0.45, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0.6, -0.55, 0.65, 0.3, 80], [0, 0, 0, 0, 99999]], [[-0.65, 0.55, 0.65, 0.3, 90], [-0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[-0.5, 1.15, 0.3, 0.3, 0], [0.1, 1.15, 0.3, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, 0.55, 0.65, 0.3, 90], [0, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0.05, -0.55, 0.45, 0.3, 60], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [-0.2, 0, 0.45, 0.3, 0], [-0.65, -0.55, 0.65, 0.3, 90], [0.45, -0.55, 0.65, 0.3, 80], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [-0.65, 0.55, 0.65, 0.3, 90], [0, 0, 0.65, 0.3, 0], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[-0.5, 1.15, 0.55, 0.3, 0], [0.5, 1.15, 0.55, 0.3, 0], [0.1, 0.55, 0.65, 0.3, 90], [0.1, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [-0.5, -0.55, 0.65, 0.3, 90], [0.5, -0.55, 0.65, 0.3, 90], [-0.1, -1.15, 0.45, 0.3, 0], [0, 0, 0, 0, 99999]], [[-0.65, 0.55, 0.65, 0.3, 90], [0.65, 0.55, 0.65, 0.3, 90], [-0.65, -0.55, 0.65, 0.3, 90], [0.65, -0.55, 0.65, 0.3, 90], [-0.5, -1.15, 0.3, 0.3, 0], [0.1, -1.15, 0.3, 0.3, 0], [0, 0.55, 0.65, 0.3, 90], [0, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[-0.4, 0.6, 0.85, 0.3, (360 - 120)], [0.4, 0.6, 0.85, 0.3, (360 - 60)], [-0.4, -0.6, 0.85, 0.3, (360 - 240)], [0.4, -0.6, 0.85, 0.3, (360 - 300)], [0, 0, 0, 0, 99999]], [[-0.4, 0.6, 0.85, 0.3, (360 - 120)], [0.4, 0.6, 0.85, 0.3, (360 - 60)], [-0.1, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 1.15, 0.65, 0.3, 0], [0.3, 0.4, 0.65, 0.3, 120], [-0.3, -0.4, 0.65, 0.3, 120], [0, -1.15, 0.65, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, -1.15, 0.3, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, -1.15, 0.8, 0.3, 0], [0, 0, 0, 0, 99999]], [[0, 0, 0.9, 0.3, 0], [0, 0, 0, 0, 99999]], [[-0.5, 0, 0.45, 0.3, 0], [0.45, 0, 0.45, 0.3, 0], [0.1, 0.55, 0.65, 0.3, 90], [0.1, -0.55, 0.65, 0.3, 90], [0, 0, 0, 0, 99999]], [[0, 1, 0.4, 0.2, 90], [0, 0, 0, 0, 99999]], [[-0.19, 1, 0.4, 0.2, 90], [0.2, 1, 0.4, 0.2, 90], [0, 0, 0, 0, 99999]], [[0.56, 0.25, 1.1, 0.3, 90], [0, -1, 0.3, 0.3, 90], [0, 0, 0, 0, 99999]], [[0.8, 0, 1.75, 0.3, 120], [0, 0, 0, 0, 99999]]]; public static function init(_arg1:BitmapData, _arg2:Field, _arg3:Background):void{ var _local4:Shape; shapes = new Array(); _local4 = new Shape(_arg1, _arg2, _arg3); _local4.addBox(0, 0, 10, 4, 2, 220, 220, 220); shapes.push(_local4); _local4 = new Shape(_arg1, _arg2, _arg3); _local4.addBox(0, 0, 4, 10, 2, 220, 220, 220); shapes.push(_local4); _local4 = new Shape(_arg1, _arg2, _arg3); _local4.addBox(0, 0, 4, 4, 2, 220, 220, 220); _local4.addBox(3, -4, 4, 4, 2, 220, 220, 220); _local4.addBox(-3, 4, 4, 4, 2, 220, 220, 220); shapes.push(_local4); pos = new Vector(); } public static function drawNum(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number=1, _arg5:Boolean=false):void{ var _local6:Number; var _local7:int; var _local8:int; _local6 = _arg2; _local7 = _arg1; while (true) { _local8 = (_local7 % 10); draw(_local8, _local6, _arg3, _arg4, _arg5); _local6 = (_local6 - (20 * _arg4)); _local7 = (_local7 / 10); if (_local7 <= 0){ return; }; }; } public static function draw(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number=1, _arg5:Boolean=false):void{ var _local6:Array; _local6 = patterns[_arg1]; _arg1 = 0; while (_local6[_arg1][4] != 99999) { pos.x = (((_local6[_arg1][0] * 12) * _arg4) + _arg2); pos.y = (((-(_local6[_arg1][1]) * 11) * _arg4) + _arg3); if ((((_local6[_arg1][4] >= 75)) && ((_local6[_arg1][4] <= 105)))){ shapes[1].draw(pos, 1, _arg5); } else { if (_local6[_arg1][4] == 120){ shapes[2].draw(pos, 1, _arg5); } else { shapes[0].draw(pos, 1, _arg5); }; }; _arg1++; }; } public static function drawString(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Number=1, _arg5:Boolean=false):void{ var _local6:Number; var _local7:int; var _local8:int; _local6 = _arg2; _local7 = 0; while (_local7 < _arg1.length) { _local8 = int(_arg1.charCodeAt(_local7)); if (_local8 != 32){ draw(convertCharToInt(_local8), _local6, _arg3, _arg4, _arg5); }; _local6 = (_local6 + (20 * _arg4)); _local7++; }; } private static function convertCharToInt(_arg1:int):int{ var _local2:int; if ((((_arg1 >= 48)) && ((_arg1 <= 57)))){ _local2 = (_arg1 - 48); } else { if ((((_arg1 >= 65)) && ((_arg1 <= 90)))){ _local2 = ((_arg1 - 65) + 10); } else { if ((((_arg1 >= 97)) && ((_arg1 <= 122)))){ _local2 = ((_arg1 - 97) + 10); } else { if (_arg1 == 46){ _local2 = 36; } else { if (_arg1 == 45){ _local2 = 38; } else { if (_arg1 == 43){ _local2 = 39; } else { if (_arg1 == 95){ _local2 = 37; } else { if (_arg1 == 33){ _local2 = 42; } else { if (_arg1 == 47){ _local2 = 43; }; }; }; }; }; }; }; }; }; return (_local2); } } }//package abagames.la2
Section 17
//MainLoop (abagames.la2.MainLoop) package abagames.la2 { import flash.display.*; import abagames.util.*; import flash.media.*; public class MainLoop { private var buffer:BitmapData; private var turrets:TurretPool; private var sounds:Array; private var bgmTransform:SoundTransform; private var rootSprite:Sprite; private var bgmChannel:SoundChannel; private var scoreboards:ScoreboardPool; private var player:Player; private var bgmFadeout:Boolean; private var screen:Bitmap; private var particles:ParticlePool; private var background:Background; private var bullets:BulletPool; private var keyState:KeyState; private var field:Field; public function update():void{ buffer.fillRect(buffer.rect, 0); if (bgmChannel != null){ Shape.distortion = (0.7 + ((bgmChannel.leftPeak + bgmChannel.rightPeak) * 0.3)); if (bgmFadeout){ bgmTransform.volume = (bgmTransform.volume - 0.01); if (bgmTransform.volume <= 0.05){ bgmTransform.volume = 0; bgmFadeout = false; }; bgmChannel.soundTransform = bgmTransform; }; }; background.update(); particles.update(); scoreboards.update(); field.update(); turrets.update(); bullets.update(); player.update(); field.drawStatus(); } private function startBgm():void{ bgmTransform.volume = 1; bgmFadeout = false; bgmChannel = sounds[0].play(0, 99999, bgmTransform); } public function init(_arg1:Sprite, _arg2:KeyState, _arg3:BitmapData, _arg4:Bitmap, _arg5:Array):void{ this.rootSprite = _arg1; this.keyState = _arg2; this.buffer = _arg3; this.screen = _arg4; this.sounds = _arg5; field = new Field(_arg3); background = new Background(_arg3, field); particles = new ParticlePool(0x0200, _arg3, field, background); scoreboards = new ScoreboardPool(0x0100, field); player = new Player(_arg3, _arg2, field, background, this); bullets = new BulletPool(0x0100, _arg3, player, field, background, particles); turrets = new TurretPool(8, _arg3, player, field, bullets, particles); player.setParams(bullets, particles, turrets); field.setParams(turrets, bullets, particles, scoreboards, background, player, _arg2, this); Letter.init(_arg3, field, background); startTitle(); bgmTransform = new SoundTransform(); } public function startTitle():void{ initPools(); player.init(); player.setHidden(); field.startTitle(); stopBgm(); } public function fadeoutBgm():void{ bgmFadeout = true; } public function stopBgm():void{ bgmFadeout = false; if (bgmChannel != null){ bgmChannel.stop(); }; bgmChannel = null; } private function initPools():void{ particles.clear(); scoreboards.clear(); bullets.clear(); turrets.clear(); } public function playSe(_arg1:int, _arg2:int=1, _arg3:SoundTransform=null):SoundChannel{ return (sounds[_arg1].play(0, _arg2, _arg3)); } public function startInGame():void{ initPools(); player.init(); field.startInGame(); startBgm(); } } }//package abagames.la2
Section 18
//Particle (abagames.la2.Particle) package abagames.la2 { import flash.display.*; import abagames.util.*; import flash.geom.*; public class Particle extends Actor { private var buffer:BitmapData; private var size:Vector; private var field:Field; private var pos:Vector; private var b:int; private var vel:Vector; private var g:int; private var cnt:int; private var color:int; private var rect:Rectangle; private var background:Background; private var r:int; public function Particle(_arg1:BitmapData, _arg2:Field, _arg3:Background){ this.buffer = _arg1; this.field = _arg2; this.background = _arg3; pos = new Vector(); vel = new Vector(); rect = new Rectangle(0, 0, 3, 3); size = new Vector(3, 3); } override public function update():void{ pos.x = (pos.x + vel.x); pos.y = (pos.y + vel.y); vel.x = (vel.x * 0.92); vel.y = (vel.y * 0.92); rect.x = ((pos.x - 1) - field.offset.x); rect.y = ((pos.y - 1) - field.offset.y); color = (((65536 * int((r * Math.random()))) + (0x0100 * int((g * Math.random())))) + int((b * Math.random()))); buffer.fillRect(rect, color); background.addShadow((pos.x - 1), (pos.y - 1), size); cnt--; if (cnt <= 0){ remove(); }; } public function add(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:int, _arg6:int, _arg7:int):void{ pos.x = _arg1; pos.y = _arg2; vel.x = (Math.sin(_arg3) * _arg4); vel.y = (Math.cos(_arg3) * _arg4); this.r = _arg5; this.g = _arg6; this.b = _arg7; cnt = ((Math.random() * 15) + 45); } } }//package abagames.la2
Section 19
//ParticlePool (abagames.la2.ParticlePool) package abagames.la2 { import flash.display.*; import abagames.util.*; public class ParticlePool extends ActorPool { private var buffer:BitmapData; private var background:Background; private var field:Field; public function ParticlePool(_arg1:int, _arg2:BitmapData, _arg3:Field, _arg4:Background){ this.buffer = _arg2; this.field = _arg3; this.background = _arg4; super(_arg1); } override protected function createActor():Actor{ return (new Particle(buffer, field, background)); } } }//package abagames.la2
Section 20
//Player (abagames.la2.Player) package abagames.la2 { import flash.display.*; import abagames.util.*; import flash.media.*; public class Player { private var buffer:BitmapData; private var turrets:TurretPool; private var aPressed:Boolean; private var invincibleCnt:int; private var deg:Number; private var flyingSe:SoundChannel; private var _pos:Vector; private var speed:Number; private var shape:Shape; private var flyingSeTransform:SoundTransform; private var particles:ParticlePool; private var bullets:BulletPool; private var keyState:KeyState; private var field:Field; private var mainLoop:MainLoop; private static const INVINCIBLE_CNT:int = 228; public static const BULLET_HIT_SIZE:Number = 3; private static const FIRE_INTERVAL:int = 8; private static const DEFAULT_SPEED:Number = 4; private static const DEG_VELOCITY:Number = 0.2; private static const RESTART_CNT:int = 268; public function Player(_arg1:BitmapData, _arg2:KeyState, _arg3:Field, _arg4:Background, _arg5:MainLoop){ this.buffer = _arg1; this.keyState = _arg2; this.field = _arg3; this.mainLoop = _arg5; _pos = new Vector(); shape = new Shape(_arg1, _arg3, _arg4); shape.addBox(0, 0, 10, 10, 2, 0xFF, 0, 0); shape.addBox(-4, -8, 6, 6, 1, 0xFF, 150, 0); shape.addBox(4, -8, 6, 6, 1, 0xFF, 150, 0); flyingSeTransform = new SoundTransform(); } public function drawShape(_arg1:Vector):void{ shape.draw(_arg1, 1, false); } public function setParams(_arg1:BulletPool, _arg2:ParticlePool, _arg3:TurretPool):void{ this.bullets = _arg1; this.particles = _arg2; this.turrets = _arg3; } public function update():void{ var _local1:Number; var _local2:Number; var _local3:Boolean; var _local4:Number; var _local5:Number; var _local6:Particle; var _local7:Number; if (invincibleCnt > INVINCIBLE_CNT){ if (invincibleCnt < 10000){ invincibleCnt--; if (invincibleCnt == INVINCIBLE_CNT){ respawn(); }; }; return; }; _local1 = 0; _local2 = 0; if (keyState.left){ _local1 = -(speed); }; if (keyState.right){ _local1 = speed; }; if (keyState.up){ _local2 = -(speed); }; if (keyState.down){ _local2 = speed; }; if (((!((_local1 == 0))) && (!((_local2 == 0))))){ _local1 = (_local1 * 0.7); _local2 = (_local2 * 0.7); }; _pos.x = (_pos.x + _local1); _pos.y = (_pos.y + _local2); if (_pos.x < 8){ _pos.x = 8; }; if (_pos.x > (field.size.x - 16)){ _pos.x = (field.size.x - 16); }; if (_pos.y < 8){ _pos.y = 8; }; if (_pos.y > (field.size.y - 16)){ _pos.y = (field.size.y - 16); }; setFieldOffset(); if (((!((_local1 == 0))) || (!((_local2 == 0))))){ _local4 = normalizeDeg(Math.atan2(_local1, _local2)); _local5 = normalizeDeg((deg - _local4)); if (_local5 > DEG_VELOCITY){ deg = (deg - DEG_VELOCITY); } else { if (_local5 < -(DEG_VELOCITY)){ deg = (deg + DEG_VELOCITY); } else { deg = _local4; }; }; deg = normalizeDeg(deg); _local6 = Particle(particles.getInstanceForced()); _local6.add(_pos.x, _pos.y, (((deg + Math.PI) + (Math.random() * 0.6)) - 0.3), (speed * Math.random()), 0xFF, 100, 0); }; if (keyState.a){ if (!aPressed){ aPressed = true; field.addGlider(_pos, deg); } else { if (field.taintedCellsNum <= 0){ stopFlyingSe(); } else { _local7 = (0.33 + (field.taintedCellsNum * 0.02)); if (_local7 > 1){ _local7 = 1; }; flyingSeTransform.volume = _local7; flyingSeTransform.pan = ((field.taintedCellsCenterPosX - (field.cellsWidth / 2)) / ((field.cellsWidth / 2) + 1)); if (flyingSe == null){ flyingSe = mainLoop.playSe(1, 9999, flyingSeTransform); }; if (flyingSe != null){ flyingSe.soundTransform = flyingSeTransform; }; }; }; speed = (speed + (((DEFAULT_SPEED * 0.66) - speed) * 0.1)); } else { if (aPressed){ aPressed = false; if (field.removeTaintedCells() > 0){ mainLoop.playSe(2, 1, flyingSeTransform); }; stopFlyingSe(); }; speed = (speed + ((DEFAULT_SPEED - speed) * 0.1)); }; _local3 = true; if (invincibleCnt > 0){ invincibleCnt--; if ((invincibleCnt % 30) >= 15){ _local3 = false; }; } else { if (((field.existsNotTaintedCellScreen(pos)) || (bullets.checkHitToPlayer(pos)))){ destroyed(); return; }; }; if (_local3){ shape.drawTilt(_pos, deg); }; } private function destroyed():void{ var _local1:Boolean; var _local2:int; var _local3:Particle; stopFlyingSe(); mainLoop.playSe(3); turrets.removeAll(); _local1 = field.destroyedPlayer(); _local2 = 0; while (_local2 < 128) { _local3 = Particle(particles.getInstanceForced()); _local3.add(_pos.x, _pos.y, ((Math.random() * Math.PI) * 2), ((Math.random() * 10) + 1), ((Math.random() * 128) + 128), 200, 200); _local2++; }; if (_local1){ field.resetDifficulty(); invincibleCnt = RESTART_CNT; } else { setHidden(); }; } public function get pos():Vector{ return (_pos); } public function init():void{ respawn(); } private function stopFlyingSe():void{ if (flyingSe != null){ flyingSe.stop(); flyingSe = null; }; } public function respawn():void{ _pos.x = (field.size.x * 0.5); _pos.y = (field.size.y * 0.5); setFieldOffset(); deg = 0; invincibleCnt = INVINCIBLE_CNT; aPressed = true; speed = DEFAULT_SPEED; stopFlyingSe(); } public function setHidden():void{ invincibleCnt = 999999; } private function normalizeDeg(_arg1:Number):Number{ if (_arg1 > Math.PI){ return ((_arg1 - (Math.PI * 2))); }; if (_arg1 < -(Math.PI)){ return ((_arg1 + (Math.PI * 2))); }; return (_arg1); } private function setFieldOffset():void{ field.offset.x = (((field.size.x * Field.SIZE_OFFSET_RATIO) / 2) + ((_pos.x - (field.size.x / 2)) * 0.8)); field.offset.y = (((field.size.y * Field.SIZE_OFFSET_RATIO) / 2) + ((_pos.y - (field.size.y / 2)) * 0.8)); if (field.offset.x < 0){ field.offset.x = 0; }; if (field.offset.x >= (field.size.x * Field.SIZE_OFFSET_RATIO)){ field.offset.x = (field.size.x * Field.SIZE_OFFSET_RATIO); }; if (field.offset.y < 0){ field.offset.y = 0; }; if (field.offset.y >= (field.size.y * Field.SIZE_OFFSET_RATIO)){ field.offset.y = (field.size.y * Field.SIZE_OFFSET_RATIO); }; } } }//package abagames.la2
Section 21
//Scoreboard (abagames.la2.Scoreboard) package abagames.la2 { import abagames.util.*; public class Scoreboard extends Actor { private var num:int; private var size:Number; private var duration:int; private var pos:Vector; private var field:Field; private var vel:Vector; private var cnt:int; public function Scoreboard(_arg1:Field){ this.field = _arg1; pos = new Vector(); vel = new Vector(); } override public function update():void{ cnt++; if (cnt < 0){ return; }; if (cnt == 0){ field.addScore(num); }; pos.x = (pos.x + vel.x); pos.y = (pos.y + vel.y); vel.x = (vel.x * 0.95); vel.y = (vel.y + ((-1 - vel.y) * 0.05)); size = (size + ((1 - size) * 0.05)); Letter.drawNum(num, pos.x, pos.y, size, true); if (cnt > duration){ remove(); }; } public function add(_arg1:Number, _arg2:Number, _arg3:int, _arg4:int, _arg5:int):void{ pos.x = _arg1; pos.y = _arg2; vel.x = (((field.size.x / 2) - _arg1) * 0.03); vel.y = (((field.size.y / 2) - _arg2) * 0.03); num = _arg3; size = 0.1; cnt = -(_arg4); duration = _arg5; } } }//package abagames.la2
Section 22
//ScoreboardPool (abagames.la2.ScoreboardPool) package abagames.la2 { import abagames.util.*; public class ScoreboardPool extends ActorPool { private var field:Field; public function ScoreboardPool(_arg1:int, _arg2:Field){ this.field = _arg2; super(_arg1); } override protected function createActor():Actor{ return (new Scoreboard(field)); } } }//package abagames.la2
Section 23
//Shape (abagames.la2.Shape) package abagames.la2 { import flash.display.*; import abagames.util.*; public class Shape { private var buffer:BitmapData; private var background:Background; private var boxes:Array; private var field:Field; public static var distortion:Number = 1; public function Shape(_arg1:BitmapData, _arg2:Field, _arg3:Background=null){ this.buffer = _arg1; this.field = _arg2; this.background = _arg3; boxes = new Array(); } public function draw(_arg1:Vector, _arg2:Number=1, _arg3:Boolean=true):void{ var _local4:Box; for each (_local4 in boxes) { _local4.draw(_arg1, _arg2, _arg3); }; } public function drawDistorted(_arg1:Vector, _arg2:Number=1):void{ var _local3:Box; for each (_local3 in boxes) { _local3.drawDistorted(_arg1, _arg2); }; } public function drawTilt(_arg1:Vector, _arg2:Number, _arg3:Number=1):void{ var _local4:Box; for each (_local4 in boxes) { _local4.drawTilt(_arg1, _arg2, _arg3); }; } public function addBox(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number):void{ var _local9:Box; _local9 = new Box(buffer, field, background, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8); boxes.push(_local9); } } }//package abagames.la2 import flash.display.*; import abagames.util.*; import flash.geom.*; class Box { private var buffer:BitmapData; private var depth:Number; private var size:Vector; private var pos:Vector; private var depthColor:uint; private var b:int; private var color:uint; private var g:int; private var rect:Rectangle; private var background:Background; private var r:int; private var field:Field; private var tp:Vector; private function Box(_arg1:BitmapData, _arg2:Field, _arg3:Background, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Number, _arg9:Number, _arg10:Number, _arg11:Number){ this.buffer = _arg1; this.field = _arg2; this.background = _arg3; pos = new Vector((_arg4 - (_arg6 / 2)), (_arg5 - (_arg7 / 2))); size = new Vector(_arg6, _arg7); rect = new Rectangle(0, 0, _arg6, _arg7); this.depth = _arg8; this.r = _arg9; this.g = _arg10; this.b = _arg11; color = (((this.r * 65536) + (this.g * 0x0100)) + this.b); tp = new Vector(); } public function draw(_arg1:Vector, _arg2:Number, _arg3:Boolean=true):void{ tp.x = (tp.y = 0); rect.x = ((_arg1.x + pos.x) + depth); rect.y = ((_arg1.y + pos.y) + depth); if (_arg3){ rect.x = (rect.x - field.offset.x); rect.y = (rect.y - field.offset.y); }; drawRect(_arg1, _arg2); } public function drawDistorted(_arg1:Vector, _arg2:Number):void{ tp.x = (tp.y = 0); rect.x = ((_arg1.x + pos.x) + depth); rect.y = ((_arg1.y + pos.y) + depth); rect.x = (rect.x - field.offset.x); rect.y = (rect.y - field.offset.y); rect.width = (size.x * Shape.distortion); rect.height = (size.y * Shape.distortion); rect.x = (rect.x - ((rect.width - size.x) / 2)); rect.y = (rect.y - ((rect.height - size.y) / 2)); drawRect(_arg1, _arg2); } public function drawTilt(_arg1:Vector, _arg2:Number, _arg3:Number):void{ tp.x = ((Math.cos(_arg2) * pos.x) - (Math.sin(_arg2) * pos.y)); tp.y = ((Math.sin(_arg2) * pos.x) + (Math.cos(_arg2) * pos.y)); rect.x = (((_arg1.x - tp.x) - field.offset.x) + depth); rect.y = (((_arg1.y + tp.y) - field.offset.y) + depth); drawRect(_arg1, _arg3); } private function drawRect(_arg1:Vector, _arg2:Number):void{ if (_arg2 > 0){ depthColor = (((int(((this.r * 0.8) * _arg2)) * 65536) + (int(((this.g * 0.8) * _arg2)) * 0x0100)) + int(((this.b * 0.8) * _arg2))); buffer.fillRect(rect, depthColor); }; rect.x = (rect.x - depth); rect.y = (rect.y - depth); buffer.fillRect(rect, color); if (background != null){ background.addShadow((_arg1.x - tp.x), (_arg1.y + tp.y), size); }; } }
Section 24
//Turret (abagames.la2.Turret) package abagames.la2 { import flash.display.*; import abagames.util.*; import abagames.la2.barrage.*; public class Turret extends Actor { private var deg:Number; private var barrageState:BarrageState; private var rank:Number; private var particles:ParticlePool; private var fireIntervalRatio:Number; private var degVel:Number; private var bullets:BulletPool; private var onEdge:Boolean; private var movePatternIdx:int; private var buffer:BitmapData; private var screenPos:Vector; private var _tainted:Boolean; private var fireCnt:int; private var pos:Vector; private var barrage:Barrage; private var player:Player; private var shapes:Array; private var screenTargetPos:Vector; private var field:Field; private var fireSpeedRatio:Number; private static var moveDir:Array = [[0, -1], [1, -1], [1, 0], [1, 1], [0, 1], [-1, 1], [-1, 0], [-1, -1]]; private static var movePattern:Array = [[4, 5, 3, 6, 2, 7, 1, 0], [6, 5, 7, 4, 0, 3, 1, 2], [6, 7, 5, 0, 4, 1, 3, 2], [0, 7, 1, 6, 2, 5, 3, 4], [0, 1, 7, 2, 6, 3, 5, 4], [2, 1, 3, 0, 4, 7, 5, 6], [2, 3, 1, 4, 0, 5, 7, 6], [4, 3, 5, 2, 6, 1, 7, 0]]; public function Turret(_arg1:BitmapData, _arg2:Player, _arg3:Field, _arg4:BulletPool, _arg5:ParticlePool){ var _local6:Shape; super(); this.buffer = _arg1; this.player = _arg2; this.field = _arg3; this.bullets = _arg4; this.particles = _arg5; pos = new Vector(); screenPos = new Vector(); screenTargetPos = new Vector(); shapes = new Array(); _local6 = new Shape(_arg1, _arg3); _local6.addBox(-5, -5, 6, 6, 1, 0, 80, 200); _local6.addBox(5, -5, 6, 6, 1, 0, 80, 200); _local6.addBox(-5, 5, 6, 6, 1, 0, 80, 200); _local6.addBox(5, 5, 6, 6, 1, 0, 80, 200); _local6.addBox(0, 0, 8, 8, 3, 50, 150, 250); shapes.push(_local6); _local6 = new Shape(_arg1, _arg3); _local6.addBox(-5, -5, 6, 6, 1, 120, 0, 200); _local6.addBox(5, -5, 6, 6, 1, 120, 0, 200); _local6.addBox(-5, 5, 6, 6, 1, 120, 0, 200); _local6.addBox(5, 5, 6, 6, 1, 120, 0, 200); _local6.addBox(0, 0, 8, 8, 3, 150, 50, 250); shapes.push(_local6); barrageState = new BarrageState(); } public function get tainted():Boolean{ return (_tainted); } public function destroy():void{ var _local1:int; var _local2:Particle; _local1 = 0; while (_local1 < 23) { _local2 = Particle(particles.getInstanceForced()); _local2.add(screenPos.x, screenPos.y, ((Math.random() * Math.PI) * 2), ((Math.random() * 7) + 3), 100, 150, 250); _local1++; }; remove(); } public function add(_arg1:int, _arg2:int, _arg3:int, _arg4:Number, _arg5:Number, _arg6:Barrage):void{ var _local7:Vector; pos.x = _arg1; pos.y = _arg2; deg = (degVel = 0); _local7 = field.getScreenPos(pos.x, pos.y); screenPos.x = (screenTargetPos.x = _local7.x); screenPos.y = (screenTargetPos.x = _local7.y); movePatternIdx = _arg3; barrageState.init(_arg4, _arg5); this.barrage = _arg6; _tainted = false; rank = 0; onEdge = true; } public function get cellX():int{ return (int(pos.x)); } public function get cellY():int{ return (int(pos.y)); } override public function update():void{ var _local1:Boolean; var _local2:int; var _local3:int; var _local4:int; var _local5:int; var _local6:Vector; if (!field.existsCell(pos.x, pos.y)){ _local1 = false; _local2 = 0; while (_local2 < 8) { _local3 = movePattern[movePatternIdx][_local2]; _local4 = (pos.x + moveDir[_local3][0]); _local5 = (pos.y + moveDir[_local3][1]); if ((((((((((_local4 >= 1)) && ((_local4 <= (field.cellsWidth - 2))))) && ((_local5 >= 1)))) && ((_local5 <= (field.cellsWidth - 2))))) && (field.existsCell(_local4, _local5)))){ pos.x = _local4; pos.y = _local5; _local6 = field.getScreenPos(pos.x, pos.y); screenTargetPos.x = _local6.x; screenTargetPos.y = _local6.y; _local1 = true; if (onEdge){ field.appearedTurret(); onEdge = false; }; break; }; _local2++; }; if (!_local1){ if (onEdge){ remove(); return; }; degVel = (degVel * 0.96); barrageState.onCell = false; }; } else { if (((!(tainted)) && (field.existsTaintedCell(pos.x, pos.y)))){ _tainted = (barrageState.tainted = true); }; degVel = (degVel + ((0.1 - degVel) * 0.08)); barrageState.onCell = true; }; if (!onEdge){ screenPos.x = (screenPos.x + ((screenTargetPos.x - screenPos.x) * 0.1)); screenPos.y = (screenPos.y + ((screenTargetPos.y - screenPos.y) * 0.1)); deg = (deg + degVel); barrage.update(screenPos, barrageState); if (_tainted){ shapes[1].drawTilt(screenPos, deg); } else { shapes[0].drawTilt(screenPos, deg); }; }; } } }//package abagames.la2
Section 25
//TurretPool (abagames.la2.TurretPool) package abagames.la2 { import flash.display.*; import abagames.util.*; public class TurretPool extends ActorPool { private var buffer:BitmapData; private var particles:ParticlePool; private var player:Player; private var bullets:BulletPool; private var field:Field; public function TurretPool(_arg1:int, _arg2:BitmapData, _arg3:Player, _arg4:Field, _arg5:BulletPool, _arg6:ParticlePool){ this.buffer = _arg2; this.player = _arg3; this.field = _arg4; this.bullets = _arg5; this.particles = _arg6; super(_arg1); } override protected function createActor():Actor{ return (new Turret(buffer, player, field, bullets, particles)); } public function removeTainted():int{ var _local1:int; var _local2:int; var _local3:Turret; _local1 = 0; _local2 = 0; while (_local2 < actorNum) { _local3 = Turret(actors[_local2]); if (_local3.tainted){ _local3.destroy(); _local2--; _local1++; }; _local2++; }; return (_local1); } public function removeAll():void{ var _local1:Turret; while (actorNum > 0) { _local1 = Turret(actors[0]); _local1.destroy(); }; } } }//package abagames.la2
Section 26
//Actor (abagames.util.Actor) package abagames.util { public class Actor { public var removed:Boolean; protected var actorPool:ActorPool; private var idx:int; public function set index(_arg1:int):void{ idx = _arg1; } public function update():void{ } public function remove():void{ actorPool.remove(idx); } public function setActorPool(_arg1:ActorPool):void{ actorPool = _arg1; } public function get exists():Boolean{ return (actorPool.existsActor(idx)); } } }//package abagames.util
Section 27
//ActorPool (abagames.util.ActorPool) package abagames.util { public class ActorPool { protected var _instancesNum:int; protected var actorIdx:int; protected var actorNum:int; protected var actors:Array; protected var _maxInstancesNum:int; public function ActorPool(_arg1:int){ var _local2:int; var _local3:Actor; super(); actors = new Array(); _local2 = 0; while (_local2 < _arg1) { _local3 = createActor(); _local3.setActorPool(this); _local3.index = _local2; _local3.removed = false; actors.push(_local3); _local2++; }; _maxInstancesNum = (_instancesNum = _arg1); clear(); } public function getInstanceForced():Actor{ var _local1:Actor; _local1 = getInstance(); if (_local1 != null){ return (_local1); }; actorIdx++; if (actorIdx >= actors.length){ actorIdx = 0; }; return (actors[actorIdx]); } public function update():void{ var _local1:int; var _local2:Actor; _local1 = 0; while (_local1 < actorNum) { _local2 = actors[_local1]; _local2.update(); if (_local2.removed){ _local2.removed = false; _local1--; }; _local1++; }; } public function remove(_arg1:int):void{ var _local2:Actor; actorNum--; _local2 = actors[_arg1]; actors[_arg1] = actors[actorNum]; actors[_arg1].index = _arg1; actors[actorNum] = _local2; actors[actorNum].index = actorNum; actors[actorNum].removed = true; } public function clear():void{ actorNum = 0; actorIdx = -1; } public function getInstance():Actor{ if (actorNum >= _instancesNum){ return (null); }; actorNum++; return (actors[(actorNum - 1)]); } public function set instancesNum(_arg1:int):void{ if (_arg1 > _maxInstancesNum){ _instancesNum = _maxInstancesNum; } else { _instancesNum = _arg1; }; } protected function createActor():Actor{ return (null); } public function get instancesNum():int{ return (_instancesNum); } public function get hasNextInstance():Boolean{ return ((actorNum < _instancesNum)); } public function get maxInstancesNum():int{ return (_maxInstancesNum); } public function existsActor(_arg1:int):Boolean{ return ((_arg1 < actorNum)); } } }//package abagames.util
Section 28
//KeyState (abagames.util.KeyState) package abagames.util { import flash.events.*; public class KeyState { public var a:Boolean;// = false public var down:Boolean;// = false public var c:Boolean;// = false public var left:Boolean;// = false public var b:Boolean;// = false public var up:Boolean;// = false public var right:Boolean;// = false public function KeyState(){ left = false; up = false; right = false; down = false; a = false; b = false; c = false; super(); } public function onKeyUp(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case 37: left = false; break; case 38: up = false; break; case 39: right = false; break; case 40: down = false; break; case 90: a = false; break; case 88: b = false; break; case 67: c = false; break; }; } public function onKeyDown(_arg1:KeyboardEvent):void{ switch (_arg1.keyCode){ case 37: left = true; break; case 38: up = true; break; case 39: right = true; break; case 40: down = true; break; case 90: a = true; break; case 88: b = true; break; case 67: c = true; break; }; } } }//package abagames.util
Section 29
//Vector (abagames.util.Vector) package abagames.util { public class Vector { public var x:Number;// = 0 public var y:Number;// = 0 public function Vector(_arg1:Number=0, _arg2:Number=0){ x = 0; y = 0; super(); this.x = _arg1; this.y = _arg2; } public function mul(_arg1:Number):void{ x = (x * _arg1); y = (y * _arg1); } public function dist(_arg1:Vector):Number{ var _local2:Number; var _local3:Number; _local2 = Math.abs((_arg1.x - x)); _local3 = Math.abs((_arg1.y - y)); if (_local2 > _local3){ return ((_local2 + (_local3 / 2))); }; return ((_local3 + (_local2 / 2))); } } }//package abagames.util
Section 30
//IFlexAsset (mx.core.IFlexAsset) package mx.core { public interface IFlexAsset { } }//package mx.core
Section 31
//mx_internal (mx.core.mx_internal) package mx.core { public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal"; }//package mx.core
Section 32
//SoundAsset (mx.core.SoundAsset) package mx.core { import flash.media.*; public class SoundAsset extends Sound implements IFlexAsset { mx_internal static const VERSION:String = "2.0.1.0"; } }//package mx.core
Section 33
//La2 (La2) package { import flash.events.*; import flash.display.*; import abagames.util.*; import abagames.la2.*; public class La2 extends Sprite { private var sounds:Array; private var rootSprite:Sprite; private var SoundRemove:Class; private var SoundBgm:Class; private var SoundFlying:Class; private var keyState:KeyState; private var isFirst:Boolean;// = true private var SoundDestroyed:Class; private var mainLoop:MainLoop; public static const SCREEN_HEIGHT:int = 360; public static const SCREEN_WIDTH:int = 360; public function La2(){ SoundBgm = La2_SoundBgm; SoundFlying = La2_SoundFlying; SoundRemove = La2_SoundRemove; SoundDestroyed = La2_SoundDestroyed; isFirst = true; super(); sounds = new Array(); sounds.push(new SoundBgm()); sounds.push(new SoundFlying()); sounds.push(new SoundRemove()); sounds.push(new SoundDestroyed()); addEventListener(Event.ENTER_FRAME, onEnterFrame); } public function onEnterFrame(_arg1:Event):void{ var _local2:BitmapData; var _local3:Bitmap; if (isFirst){ isFirst = false; mainLoop = new MainLoop(); keyState = new KeyState(); rootSprite = this; stage.addEventListener(KeyboardEvent.KEY_DOWN, keyState.onKeyDown); stage.addEventListener(KeyboardEvent.KEY_UP, keyState.onKeyUp); _local2 = new BitmapData(SCREEN_WIDTH, SCREEN_HEIGHT, false, 0); _local3 = new Bitmap(_local2); rootSprite.addChild(_local3); mainLoop.init(rootSprite, keyState, _local2, _local3, sounds); }; mainLoop.update(); } } }//package
Section 34
//La2_SoundBgm (La2_SoundBgm) package { import mx.core.*; public class La2_SoundBgm extends SoundAsset { } }//package
Section 35
//La2_SoundDestroyed (La2_SoundDestroyed) package { import mx.core.*; public class La2_SoundDestroyed extends SoundAsset { } }//package
Section 36
//La2_SoundFlying (La2_SoundFlying) package { import mx.core.*; public class La2_SoundFlying extends SoundAsset { } }//package
Section 37
//La2_SoundRemove (La2_SoundRemove) package { import mx.core.*; public class La2_SoundRemove extends SoundAsset { } }//package

Library Items

Symbol 1 Sound {La2_SoundDestroyed} [La2_SoundDestroyed]
Symbol 2 Sound {La2_SoundRemove} [La2_SoundRemove]
Symbol 3 Sound {La2_SoundBgm} [La2_SoundBgm]
Symbol 4 Sound {La2_SoundFlying} [La2_SoundFlying]

Special Tags

FileAttributes (69)Timeline Frame 1Access network only, Metadata present, AS3.
SWFMetaData (77)Timeline Frame 11763 bytes "<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmln ..."
ScriptLimits (65)Timeline Frame 1MaxRecursionDepth: 1000, ScriptTimeout: 60 seconds
ExportAssets (56)Timeline Frame 1Symbol 1 as "La2_SoundDestroyed"
ExportAssets (56)Timeline Frame 1Symbol 2 as "La2_SoundRemove"
ExportAssets (56)Timeline Frame 1Symbol 3 as "La2_SoundBgm"
ExportAssets (56)Timeline Frame 1Symbol 4 as "La2_SoundFlying"
SerialNumber (41)Timeline Frame 1

Labels

"La2"Frame 1




http://swfchan.com/18/89820/info.shtml
Created: 28/3 -2019 18:57:45 Last modified: 28/3 -2019 18:57:45 Server time: 03/05 -2024 19:27:28