package_10 alternativa.tanks.game

This commit is contained in:
Pyogenics
2025-01-26 13:12:30 +00:00
parent 55159f128c
commit c7445bf7f3
57 changed files with 358 additions and 357 deletions

View File

@@ -1,9 +1,9 @@
package alternativa.tanks
{
import flash.display.DisplayObjectContainer;
import package_10.class_1;
import package_10.name_17;
import package_10.name_54;
import alternativa.tanks.game.GameTask;
import alternativa.tanks.game.GameKernel;
import alternativa.tanks.game.Entity;
import alternativa.tanks.config.Config;
import alternativa.tanks.config.BlobGroup;
import alternativa.tanks.config.BlobCategory;
@@ -13,9 +13,9 @@ package alternativa.tanks
import package_2.A3DMapComponent;
import package_9.name_20;
public class InitBattleTask extends class_1
public class InitBattleTask extends GameTask
{
private var gameKernel:name_17;
private var gameKernel:GameKernel;
private var config:Config;
@@ -23,9 +23,9 @@ package alternativa.tanks
private var preloader:Preloader;
public function InitBattleTask(param1:name_17, param2:Config, param3:DisplayObjectContainer, param4:Preloader)
public function InitBattleTask(param1:GameKernel, param2:Config, param3:DisplayObjectContainer, param4:Preloader)
{
super(name_17.EVENT_SYSTEM_PRIORITY + 1);
super(GameKernel.EVENT_SYSTEM_PRIORITY + 1);
this.gameKernel = param1;
this.config = param2;
this.preloader = param4;
@@ -40,14 +40,14 @@ package alternativa.tanks
_loc2_.name_75(0,0,1000);
_loc2_.name_76(0,2000,0);
this.container.addChild(_loc1_.name_71());
var _loc3_:name_54 = this.createMapEntity();
var _loc3_:Entity = this.createMapEntity();
this.gameKernel.name_73(_loc3_);
this.preloader.name_69(0.75);
var_4.addTask(new TankTestTask(name_17.INPUT_SYSTEM_PRIORITY + 1,this.config,this.gameKernel,_loc2_,this.preloader));
var_4.addTask(new TankTestTask(GameKernel.INPUT_SYSTEM_PRIORITY + 1,this.config,this.gameKernel,_loc2_,this.preloader));
var_4.killTask(this);
}
private function createMapEntity() : name_54
private function createMapEntity() : Entity
{
var _loc2_:name_55 = null;
var _loc6_:BlobGroup = null;
@@ -62,7 +62,7 @@ package alternativa.tanks
_loc2_.name_59(_loc7_,_loc6_.name_65(_loc7_));
}
}
var _loc4_:name_54 = new name_54(name_54.name_74());
var _loc4_:Entity = new Entity(Entity.name_74());
var _loc5_:A3DMapComponent = new A3DMapComponent(this.config.mapData,_loc2_,1000000,new MapListener(this.gameKernel.name_61()));
_loc4_.name_60(_loc5_);
_loc4_.name_64();
@@ -71,7 +71,7 @@ package alternativa.tanks
}
}
import package_10.name_57;
import alternativa.tanks.game.GameEvents;
import package_2.class_2;
import package_20.name_56;
@@ -87,6 +87,6 @@ class MapListener implements class_2
public function onA3DMapComplete() : void
{
this.eventSystem.dispatchEvent(name_57.MAP_COMPLETE,null);
this.eventSystem.dispatchEvent(GameEvents.MAP_COMPLETE,null);
}
}

View File

@@ -8,10 +8,10 @@ package alternativa.tanks
import flash.ui.Keyboard;
import alternativa.osgi.service.console.variables.ConsoleVarFloat;
import alternativa.osgi.service.console.variables.ConsoleVarInt;
import package_10.class_1;
import package_10.name_17;
import package_10.name_54;
import package_10.name_57;
import alternativa.tanks.game.GameTask;
import alternativa.tanks.game.GameKernel;
import alternativa.tanks.game.Entity;
import alternativa.tanks.game.GameEvents;
import package_100.name_301;
import alternativa.tanks.config.Config;
import package_15.name_275;
@@ -110,7 +110,7 @@ package alternativa.tanks
use namespace alternativa3d;
public class TankTestTask extends class_1 implements class_11
public class TankTestTask extends GameTask implements class_11
{
private static const DEAD_TEXTURE_ID:String = "dead";
@@ -126,13 +126,13 @@ package alternativa.tanks
private var config:Config;
private var gameKernel:name_17;
private var gameKernel:GameKernel;
private var var_82:int = 0;
private var var_79:Vector.<name_255> = new Vector.<name_255>();
private var tanks:Vector.<name_54>;
private var tanks:Vector.<Entity>;
private var var_62:int;
@@ -174,18 +174,18 @@ package alternativa.tanks
private var preloader:Preloader;
private var var_72:name_54;
private var var_72:Entity;
private var var_80:name_293 = new name_293();
public function TankTestTask(param1:int, param2:Config, param3:name_17, param4:name_20, param5:Preloader)
public function TankTestTask(param1:int, param2:Config, param3:GameKernel, param4:name_20, param5:Preloader)
{
super(param1);
this.preloader = param5;
this.config = param2;
this.gameKernel = param3;
this.freeCameraController = param4;
this.tanks = new Vector.<name_54>();
this.tanks = new Vector.<Entity>();
this.var_62 = -1;
this.var_73 = new BitmapData(1,1);
this.var_73.setPixel(0,0,11141120);
@@ -215,12 +215,12 @@ package alternativa.tanks
this.executeConsoleCommands(_loc3_,this.config.xml.elements("console-commands")[0].toString());
}
_loc3_.name_45("lstanks",this.listTanks);
this.var_71 = new name_294(name_17.RENDER_SYSTEM_PRIORITY + 1,10,this.gameKernel.stage,0,0);
this.var_71 = new name_294(GameKernel.RENDER_SYSTEM_PRIORITY + 1,10,this.gameKernel.stage,0,0);
this.gameKernel.addTask(this.var_71);
this.gameKernel.name_61().addEventListener(name_57.MAP_COMPLETE,this);
this.gameKernel.name_61().addEventListener(GameEvents.MAP_COMPLETE,this);
}
private function get activeTank() : name_54
private function get activeTank() : Entity
{
return this.var_62 >= 0 ? this.tanks[this.var_62] : null;
}
@@ -331,7 +331,7 @@ package alternativa.tanks
private function toggleTankTitle() : void
{
var _loc2_:name_245 = null;
var _loc1_:name_54 = this.activeTank;
var _loc1_:Entity = this.activeTank;
if(_loc1_ != null)
{
_loc2_ = name_245(_loc1_.getComponent(name_245));
@@ -447,11 +447,11 @@ package alternativa.tanks
private function rebuildActiveTank() : void
{
var _loc2_:TankParams = null;
var _loc3_:name_54 = null;
var _loc3_:Entity = null;
var _loc4_:name_236 = null;
var _loc5_:name_236 = null;
var _loc6_:name_194 = null;
var _loc1_:name_54 = this.activeTank;
var _loc1_:Entity = this.activeTank;
if(_loc1_ != null)
{
this.removeActiveTank();
@@ -499,19 +499,19 @@ package alternativa.tanks
var _loc7_:XMLList = null;
var _loc8_:int = 0;
var _loc9_:int = 0;
var _loc10_:name_54 = null;
var _loc10_:Entity = null;
var _loc11_:name_259 = null;
var _loc12_:name_241 = null;
switch(param1)
{
case name_253.TANK_CLICK:
_loc3_ = int(this.tanks.indexOf(name_54(param2)));
_loc3_ = int(this.tanks.indexOf(Entity(param2)));
if(_loc3_ >= 0)
{
this.selectTank(_loc3_);
}
break;
case name_57.MAP_COMPLETE:
case GameEvents.MAP_COMPLETE:
this.setCameraController(this.var_67);
if(this.config.xml.user.length() > 0)
{
@@ -588,21 +588,21 @@ package alternativa.tanks
this.selectTank(this.tanks.length - 1);
}
private function addTank(param1:TankParams) : name_54
private function addTank(param1:TankParams) : Entity
{
var _loc2_:name_54 = this.createTank(param1);
var _loc2_:Entity = this.createTank(param1);
this.gameKernel.name_73(_loc2_);
this.tanks.push(_loc2_);
return _loc2_;
}
private function createTank(param1:TankParams) : name_54
private function createTank(param1:TankParams) : Entity
{
var _loc2_:name_249 = this.config.tankParts.name_353(param1.hull);
var _loc3_:name_234 = this.config.tankParts.name_331(param1.turret);
var _loc4_:BitmapData = this.config.tankParts.name_347(param1.coloring);
var _loc5_:BitmapData = this.config.var_37.name_244(DEAD_TEXTURE_ID) as BitmapData;
var _loc6_:name_54 = new name_54(name_54.name_74());
var _loc6_:Entity = new Entity(Entity.name_74());
var _loc9_:name_237 = new name_237(_loc2_,1000,80000);
var _loc10_:int = conMaxSpeed.value;
_loc9_.name_321(_loc10_,true);
@@ -731,7 +731,7 @@ package alternativa.tanks
return null;
}
private function createSmoky(param1:name_54) : void
private function createSmoky(param1:Entity) : void
{
var _loc9_:name_129 = null;
var _loc10_:Vector.<class_4> = null;
@@ -774,7 +774,7 @@ package alternativa.tanks
param1.name_60(_loc17_);
}
private function createThunder(param1:name_54) : void
private function createThunder(param1:Entity) : void
{
var _loc9_:name_129 = null;
var _loc10_:Vector.<class_4> = null;
@@ -816,14 +816,14 @@ package alternativa.tanks
param1.name_60(_loc17_);
}
private function createRailgun(param1:name_54) : void
private function createRailgun(param1:Entity) : void
{
var _loc5_:name_256 = this.gameKernel.method_112().name_246().collisionDetector;
var _loc6_:name_292 = new name_292();
var _loc7_:name_291 = new name_291(Math.PI / 9,20,Math.PI / 9,20,_loc5_,_loc6_);
}
private function createEnergyGun(param1:name_54) : void
private function createEnergyGun(param1:Entity) : void
{
var _loc9_:name_256 = this.gameKernel.method_112().name_246().collisionDetector;
var _loc10_:name_240 = new name_240();
@@ -849,7 +849,7 @@ package alternativa.tanks
param1.name_60(_loc27_);
}
private function createContinuousActionGun(param1:name_54) : void
private function createContinuousActionGun(param1:Entity) : void
{
var _loc5_:name_286 = new name_286(1000,1,15,true);
param1.name_60(_loc5_);
@@ -883,7 +883,7 @@ package alternativa.tanks
private function removeActiveTank() : void
{
var _loc1_:name_54 = null;
var _loc1_:Entity = null;
if(this.var_62 >= 0)
{
_loc1_ = this.activeTank;
@@ -1022,7 +1022,7 @@ package alternativa.tanks
var _loc8_:Vector.<name_129> = null;
var _loc9_:Vector.<class_4> = null;
var _loc10_:name_264 = null;
var _loc1_:name_54 = this.activeTank;
var _loc1_:Entity = this.activeTank;
if(_loc1_ != null)
{
_loc2_ = this.gameKernel.method_112().name_246().collisionDetector;
@@ -1058,7 +1058,7 @@ package alternativa.tanks
var _loc7_:Number = NaN;
var _loc8_:Number = NaN;
var _loc9_:Number = NaN;
var _loc1_:name_54 = this.activeTank;
var _loc1_:Entity = this.activeTank;
if(_loc1_ != null)
{
_loc2_ = this.var_64.getFrames("tank_explosion/explosion");
@@ -1097,7 +1097,7 @@ package alternativa.tanks
var _loc19_:Number = NaN;
var _loc20_:name_260 = null;
var _loc21_:Number = NaN;
var _loc1_:name_54 = this.activeTank;
var _loc1_:Entity = this.activeTank;
if(_loc1_ != null)
{
_loc2_ = 100;
@@ -1142,7 +1142,7 @@ package alternativa.tanks
private function listTanks(param1:name_4, param2:Array) : void
{
var _loc3_:name_54 = null;
var _loc3_:Entity = null;
var _loc4_:name_237 = null;
var _loc5_:name_271 = null;
for each(var _loc8_ in this.tanks)
@@ -1162,7 +1162,7 @@ package alternativa.tanks
import flash.display.BitmapData;
import flash.media.Sound;
import flash.utils.ByteArray;
import package_10.name_17;
import alternativa.tanks.game.GameKernel;
import package_101.name_304;
import alternativa.tanks.config.TextureLibrary;
import package_15.name_275;
@@ -1237,7 +1237,7 @@ class PointHitRoundAmmo implements class_14
private var weaponHitEffects:WeaponHitEffects;
public function PointHitRoundAmmo(param1:name_17)
public function PointHitRoundAmmo(param1:GameKernel)
{
var _loc5_:int = 0;
super();
@@ -1266,9 +1266,9 @@ class WeaponHitEffects implements class_12
private var frames:Vector.<class_4>;
private var gameKernel:name_17;
private var gameKernel:GameKernel;
public function WeaponHitEffects(param1:Sound, param2:Vector.<class_4>, param3:name_17)
public function WeaponHitEffects(param1:Sound, param2:Vector.<class_4>, param3:GameKernel)
{
super();
this.sound = param1;

View File

@@ -3,7 +3,7 @@ package alternativa.tanks
import flash.display.BitmapData;
import flash.utils.ByteArray;
import flash.utils.Dictionary;
import package_10.name_17;
import alternativa.tanks.game.GameKernel;
import package_117.name_542;
import package_28.name_241;
import package_28.name_93;
@@ -11,7 +11,7 @@ package alternativa.tanks
public class TextureResourceService implements ITextureResourceService
{
public var gameKernel:name_17;
public var gameKernel:GameKernel;
private var var_455:name_326;
@@ -23,7 +23,7 @@ package alternativa.tanks
private var var_456:Dictionary;
public function TextureResourceService(param1:name_17)
public function TextureResourceService(param1:GameKernel)
{
super();
this.gameKernel = param1;

View File

@@ -0,0 +1,116 @@
package alternativa.tanks.game
{
public class Entity
{
private static var lastId:int;
private var var_101:int;
private var components:Vector.<EntityComponent>;
private var var_100:Object;
internal var index:int = -1;
public function Entity(id:int)
{
super();
this.var_101 = id;
this.components = new Vector.<EntityComponent>();
this.var_100 = new Object();
}
public static function name_74() : int
{
return ++lastId;
}
public function get id() : int
{
return this.var_101;
}
public function name_60(component:EntityComponent) : void
{
this.components.push(component);
component.method_197(this);
}
public function name_64() : void
{
var entityComponent:EntityComponent = null;
for each(entityComponent in this.components)
{
entityComponent.initComponent();
}
}
public function getComponent(cls:Class) : EntityComponent
{
var component:EntityComponent = null;
for each(component in this.components)
{
if(component is cls)
{
return component;
}
}
return null;
}
public function getComponentStrict(cls:Class) : EntityComponent
{
var component:EntityComponent = this.getComponent(cls);
if(component == null)
{
throw new Error("Component " + cls + " not found");
}
return component;
}
public function addToGame(gameKernel:GameKernel) : void
{
var entityComponent:EntityComponent = null;
for each(entityComponent in this.components)
{
entityComponent.addToGame(gameKernel);
}
}
public function removeFromGame(gameKernel:GameKernel) : void
{
var entityComponent:EntityComponent = null;
for each(entityComponent in this.components)
{
entityComponent.removeFromGame(gameKernel);
}
}
public function dispatchEvent(eventType:String, eventData:* = undefined) : void
{
var numListeners:uint = 0;
var i:int = 0;
var listeners:Vector.<Function> = this.var_100[eventType];
if(listeners != null)
{
numListeners = uint(listeners.length);
for(i = 0; i < numListeners; i++)
{
listeners[i].call(null,eventType,eventData);
}
}
}
public function addEventHandler(eventType:String, handler:Function) : void
{
var handlers:Vector.<Function> = this.var_100[eventType];
if(handlers == null)
{
handlers = new Vector.<Function>();
this.var_100[eventType] = handlers;
}
handlers.push(handler);
}
}
}

View File

@@ -0,0 +1,30 @@
package alternativa.tanks.game
{
public class EntityComponent
{
protected var entity:Entity;
public function EntityComponent()
{
super();
}
public function method_197(entity:Entity) : void
{
this.entity = entity;
}
public function initComponent() : void
{
}
public function addToGame(gameKernel:GameKernel) : void
{
}
public function removeFromGame(gameKernel:GameKernel) : void
{
}
}
}

View File

@@ -0,0 +1,15 @@
package alternativa.tanks.game
{
public class GameEvents
{
public static const MAP_COMPLETE:String = "mapComplete";
public static const BATTLE_FINISHED:String = "battleFinished";
public function GameEvents()
{
super();
}
}
}

View File

@@ -0,0 +1,216 @@
package alternativa.tanks.game
{
import flash.display.Stage;
import package_18.name_44;
import package_20.name_179;
import package_20.name_56;
import package_22.name_181;
import package_22.name_87;
import package_26.name_100;
import package_27.name_180;
import package_42.name_177;
import package_42.name_184;
import package_43.name_183;
import package_43.name_190;
import package_44.name_178;
import package_45.name_182;
public class GameKernel
{
public static const TIME_SYSTEM_PRIORITY:int = 0;
public static const INPUT_SYSTEM_PRIORITY:int = 1000;
public static const EVENT_SYSTEM_PRIORITY:int = 2000;
public static const LOGIC_SYSTEM_1_PRIORITY:int = 3000;
public static const LOGIC_SYSTEM_2_PRIORITY:int = 3001;
public static const PHYSICS_SYSTEM_PRIORITY:int = 4000;
public static const RENDER_SYSTEM_PRIORITY:int = 5000;
public static const CLEANUP_SYSTEM_PRIORITY:int = 6000;
public const const_1:name_180 = new name_180(20);
private var var_43:Stage;
private var var_36:Object;
private var var_41:IGameLogger = new DummyLogger();
private var var_4:TaskManager;
private var var_44:name_182;
private var inputSystem:name_181;
private var eventSystem:name_179;
private var logicSystem1:name_177;
private var logicSystem2:name_177;
private var physicsSystem:name_178;
private var renderSystem:name_44;
private var var_42:name_183;
private var var_39:Vector.<Entity>;
private var var_38:int;
private var var_40:name_100;
public function GameKernel(stage:Stage, options:Object)
{
super();
this.var_43 = stage;
this.var_36 = options || {};
this.var_39 = new Vector.<Entity>();
this.var_40 = new name_100();
this.var_4 = new TaskManager();
this.var_44 = new name_182(TIME_SYSTEM_PRIORITY);
this.var_4.addTask(this.var_44);
this.inputSystem = new name_181(INPUT_SYSTEM_PRIORITY,stage);
this.var_4.addTask(this.inputSystem);
this.eventSystem = new name_179(EVENT_SYSTEM_PRIORITY);
this.var_4.addTask(this.eventSystem);
this.logicSystem1 = new name_177(LOGIC_SYSTEM_1_PRIORITY,this);
this.var_4.addTask(this.logicSystem1);
this.logicSystem2 = new name_177(LOGIC_SYSTEM_2_PRIORITY,this);
this.var_4.addTask(this.logicSystem2);
this.physicsSystem = new name_178(PHYSICS_SYSTEM_PRIORITY,this.var_40);
this.var_4.addTask(this.physicsSystem);
this.renderSystem = new name_44(RENDER_SYSTEM_PRIORITY,stage);
this.var_4.addTask(this.renderSystem);
this.var_42 = new name_183(CLEANUP_SYSTEM_PRIORITY);
this.var_4.addTask(this.var_42);
}
public function get logger() : IGameLogger
{
return this.var_41;
}
public function set logger(value:IGameLogger) : void
{
if(value == null)
{
throw new ArgumentError("Logger is null");
}
this.var_41 = value;
}
public function get stage() : Stage
{
return this.var_43;
}
public function get options() : Object
{
return this.var_36;
}
public function method_111(command:name_190) : void
{
this.var_42.name_187(command);
}
public function method_108() : name_100
{
return this.var_40;
}
public function addTask(gameTask:GameTask) : void
{
this.var_4.addTask(gameTask);
}
public function name_73(entity:Entity) : void
{
if(entity.index < 0)
{
entity.index = this.var_38;
var _loc2_:* = this.var_38++;
this.var_39[_loc2_] = entity;
entity.addToGame(this);
return;
}
throw new Error("Entity " + entity + " is already in game");
}
public function method_109(entity:Entity) : void
{
var index:int = int(entity.index);
if(index < 0)
{
throw new Error("Entity " + entity + " is not in game");
}
var lastEntity:Entity = this.var_39[--this.var_38];
lastEntity.index = index;
this.var_39[index] = lastEntity;
this.var_39[this.var_38] = null;
entity.index = -1;
entity.removeFromGame(this);
}
public function name_66() : name_87
{
return this.inputSystem;
}
public function name_61() : name_56
{
return this.eventSystem;
}
public function getLogicSystem1() : name_184
{
return this.logicSystem1;
}
public function getLogicSystem2() : name_184
{
return this.logicSystem2;
}
public function method_112() : name_178
{
return this.physicsSystem;
}
public function name_5() : name_44
{
return this.renderSystem;
}
public function name_51() : void
{
this.const_1.name_188();
this.var_4.name_185();
this.const_1.name_186();
}
public function method_110() : void
{
this.var_4.name_189();
this.var_4.name_185();
}
}
}
class DummyLogger implements IGameLogger
{
public function DummyLogger()
{
super();
}
public function log(channel:String, text:String) : void
{
}
}

View File

@@ -0,0 +1,73 @@
package alternativa.tanks.game
{
public class GameTask
{
public var var_4:TaskManager;
public var priority:int;
protected var var_3:Boolean;
public function GameTask(priority:int)
{
super();
this.priority = priority;
}
public function start() : void
{
}
public function stop() : void
{
}
public function run() : void
{
}
final public function get method_20() : Boolean
{
return this.var_3;
}
final public function set method_20(value:Boolean) : void
{
if(value)
{
this.method_21();
}
else
{
this.method_22();
}
}
final public function method_21() : void
{
if(!this.var_3)
{
this.var_3 = true;
this.onPause();
}
}
final public function method_22() : void
{
if(this.var_3)
{
this.var_3 = false;
this.onResume();
}
}
protected function onPause() : void
{
}
protected function onResume() : void
{
}
}
}

View File

@@ -0,0 +1,8 @@
package alternativa.tanks.game
{
public interface IGameLogger
{
function log(param1:String, param2:String) : void;
}
}

View File

@@ -0,0 +1,84 @@
package alternativa.tanks.game
{
import package_21.name_124;
import package_21.name_78;
import package_46.Matrix3;
import package_46.name_194;
public class ObjectController
{
private static var matrix:Matrix3 = new Matrix3();
private static var vector:name_194 = new name_194();
private var var_234:name_78;
public function ObjectController()
{
super();
}
public function get object() : name_78
{
return this.var_234;
}
public function set object(value:name_78) : void
{
this.var_234 = value;
}
public function name_201(x:Number, y:Number, z:Number) : void
{
this.var_234.x = x;
this.var_234.y = y;
this.var_234.z = z;
}
public function method_368(rx:Number, ry:Number, rz:Number) : void
{
this.var_234.rotationX = rx;
this.var_234.rotationY = ry;
this.var_234.rotationZ = rz;
}
public function method_367(dx:Number, dy:Number, dz:Number) : void
{
matrix.name_196(this.var_234.rotationX,this.var_234.rotationY,this.var_234.rotationZ);
vector.reset(dx,dy,dz);
vector.transform3(matrix);
this.var_234.x += vector.x;
this.var_234.y += vector.y;
this.var_234.z += vector.z;
}
public function move(dx:Number, dy:Number, dz:Number) : void
{
this.var_234.x += dx;
this.var_234.y += dy;
this.var_234.z += dz;
}
public function rotate(rdx:Number, rdy:Number, rdz:Number) : void
{
this.var_234.rotationX += rdx;
this.var_234.rotationY += rdy;
this.var_234.rotationZ += rdz;
}
public function name_76(x:Number, y:Number, z:Number) : void
{
var dx:Number = x - this.var_234.x;
var dy:Number = y - this.var_234.y;
var dz:Number = z - this.var_234.z;
this.var_234.rotationX = Math.atan2(dz,Math.sqrt(dx * dx + dy * dy));
if(this.var_234 is name_124)
{
this.var_234.rotationX -= 0.5 * Math.PI;
}
this.var_234.rotationY = 0;
this.var_234.rotationZ = -Math.atan2(dx,dy);
}
}
}

View File

@@ -0,0 +1,175 @@
package alternativa.tanks.game
{
import flash.utils.Dictionary;
import flash.utils.describeType;
import flash.utils.getDefinitionByName;
import package_108.name_373;
import package_108.name_374;
public class TaskManager
{
private var var_85:name_374 = new name_374();
private var var_87:TaskArray = new TaskArray();
private var var_86:TaskArray = new TaskArray();
private var var_88:Dictionary = new Dictionary();
public function TaskManager()
{
super();
}
public function addTask(task:GameTask) : void
{
if(this.var_85.contains(task))
{
throw new Error("Task is already active");
}
if(this.var_87.contains(task))
{
throw new Error("Task has been already scheduled for addition");
}
this.var_87.add(task);
}
public function killTask(task:GameTask) : void
{
if(this.var_85.contains(task) && !this.var_86.contains(task))
{
this.var_86.add(task);
}
}
public function name_185() : void
{
var task:GameTask = null;
this.startAddedTasks();
var iterator:name_373 = this.var_85.listIterator();
while(iterator.hasNext())
{
task = GameTask(iterator.next());
if(!task.method_20)
{
task.run();
}
}
this.removeKilledTasks();
}
public function getTaskInterface(taskInterface:Class) : Object
{
return this.var_88[taskInterface];
}
public function name_189() : void
{
var task:GameTask = null;
var listIterator:name_373 = this.var_85.listIterator();
while(listIterator.hasNext())
{
task = GameTask(listIterator.next());
this.killTask(task);
}
}
private function startAddedTasks() : void
{
var task:GameTask = null;
var taskInterfaces:Vector.<Class> = null;
var taskInterface:Class = null;
var activeTasksIterator:name_373 = null;
var activeTask:GameTask = null;
for(var i:int = 0; i < this.var_87.numTasks; i++)
{
task = this.var_87.tasks[i];
task.var_4 = this;
task.start();
taskInterfaces = this.getObjectInterfaces(task);
for each(taskInterface in taskInterfaces)
{
this.var_88[taskInterface] = task;
}
activeTasksIterator = this.var_85.listIterator();
while(activeTasksIterator.hasNext())
{
activeTask = GameTask(activeTasksIterator.next());
if(activeTask.priority > task.priority)
{
activeTasksIterator.name_375();
break;
}
}
activeTasksIterator.add(task);
}
this.var_87.clear();
}
private function removeKilledTasks() : void
{
var task:GameTask = null;
var taskInterfaces:Vector.<Class> = null;
var taskInterface:Class = null;
for(var i:int = 0; i < this.var_86.numTasks; i++)
{
task = this.var_86.tasks[i];
this.var_85.remove(task);
task.stop();
taskInterfaces = this.getObjectInterfaces(task);
for each(taskInterface in taskInterfaces)
{
delete this.var_88[taskInterface];
}
task.var_4 = null;
}
this.var_86.clear();
}
private function getObjectInterfaces(object:Object) : Vector.<Class>
{
var interfaceXML:XML = null;
var interfaceClass:Object = null;
var result:Vector.<Class> = new Vector.<Class>();
var xml:XML = describeType(object);
for each(interfaceXML in xml.implementsInterface)
{
interfaceClass = getDefinitionByName(interfaceXML.@type);
result.push(interfaceClass);
}
return result;
}
}
}
class TaskArray
{
public var tasks:Vector.<GameTask> = new Vector.<GameTask>();
public var numTasks:int;
public function TaskArray()
{
super();
}
public function add(task:GameTask) : void
{
var _loc2_:* = this.numTasks++;
this.tasks[_loc2_] = task;
}
public function clear() : void
{
for(var i:int = 0; i < this.numTasks; i++)
{
this.tasks[i] = null;
}
this.numTasks = 0;
}
public function contains(task:GameTask) : Boolean
{
return this.tasks.indexOf(task) >= 0;
}
}

View File

@@ -3,8 +3,8 @@ package alternativa.tanks.game.usertitle.component
import alternativa.tanks.game.usertitle.name_607;
import alternativa.tanks.game.usertitle.name_610;
import alternativa.tanks.game.usertitle.name_613;
import package_10.class_17;
import package_10.name_17;
import alternativa.tanks.game.EntityComponent;
import alternativa.tanks.game.GameKernel;
import package_114.name_488;
import package_18.name_44;
import package_18.name_82;
@@ -14,7 +14,7 @@ package alternativa.tanks.game.usertitle.component
import package_74.class_25;
import package_75.name_236;
public class name_245 extends class_17 implements name_82
public class name_245 extends EntityComponent implements name_82
{
private static const REMOTE_LABEL_OFFSET_Z:int = 200;
@@ -30,7 +30,7 @@ package alternativa.tanks.game.usertitle.component
private var var_424:name_488;
private var gameKernel:name_17;
private var gameKernel:GameKernel;
private var var_426:Boolean;
@@ -93,13 +93,13 @@ package alternativa.tanks.game.usertitle.component
this.setHealth(Number(data));
}
override public function addToGame(gameKernel:name_17) : void
override public function addToGame(gameKernel:GameKernel) : void
{
this.gameKernel = gameKernel;
this.var_505.name_612(gameKernel.name_5());
}
override public function removeFromGame(gameKernel:name_17) : void
override public function removeFromGame(gameKernel:GameKernel) : void
{
this.var_424.name_493.stop();
this.removeFromScene();

View File

@@ -1,11 +1,11 @@
package alternativa.tanks.game.usertitle
{
import alternativa.tanks.game.usertitle.component.name_245;
import package_10.name_54;
import alternativa.tanks.game.Entity;
public interface name_610
{
function name_614(param1:name_54, param2:name_245) : void;
function name_614(param1:Entity, param2:name_245) : void;
}
}