package_26 alternativa.tanks.game.utils.objectpool

This commit is contained in:
Pyogenics
2025-01-27 18:46:10 +00:00
parent 9d109fc043
commit c9bd79427a
19 changed files with 99 additions and 98 deletions

View File

@@ -6,7 +6,7 @@ package alternativa.tanks.game
import alternativa.tanks.game.subsystems.eventsystem.IEventSystem;
import alternativa.tanks.game.subsystems.inputsystem.InputSystem;
import alternativa.tanks.game.subsystems.inputsystem.IInput;
import package_26.name_100;
import alternativa.tanks.game.utils.objectpool.ObjectPoolManager;
import package_27.name_180;
import package_42.name_177;
import package_42.name_184;
@@ -63,7 +63,7 @@ package alternativa.tanks.game
private var var_38:int;
private var var_40:name_100;
private var var_40:ObjectPoolManager;
public function GameKernel(stage:Stage, options:Object)
{
@@ -71,7 +71,7 @@ package alternativa.tanks.game
this.var_43 = stage;
this.var_36 = options || {};
this.var_39 = new Vector.<Entity>();
this.var_40 = new name_100();
this.var_40 = new ObjectPoolManager();
this.var_4 = new TaskManager();
this.var_44 = new name_182(TIME_SYSTEM_PRIORITY);
this.var_4.addTask(this.var_44);
@@ -120,7 +120,7 @@ package alternativa.tanks.game
this.var_42.name_187(command);
}
public function method_108() : name_100
public function method_108() : ObjectPoolManager
{
return this.var_40;
}

View File

@@ -0,0 +1,41 @@
package alternativa.tanks.game.utils.objectpool
{
public class ObjectPool
{
private var objectClass:Class;
private var objects:Vector.<Object> = new Vector.<Object>();
private var numObjects:int;
public function ObjectPool(objectClass:Class)
{
super();
this.objectClass = objectClass;
}
public function name_110() : Object
{
if(this.numObjects == 0)
{
return new this.objectClass(this);
}
var object:Object = this.objects[--this.numObjects];
this.objects[this.numObjects] = null;
return object;
}
public function clear() : void
{
this.objects.length = 0;
this.numObjects = 0;
}
internal function name_425(object:Object) : void
{
var _loc2_:* = this.numObjects++;
this.objects[_loc2_] = object;
}
}
}

View File

@@ -0,0 +1,31 @@
package alternativa.tanks.game.utils.objectpool
{
import flash.utils.Dictionary;
public class ObjectPoolManager
{
private var var_103:Dictionary = new Dictionary();
public function ObjectPoolManager()
{
super();
}
public function name_110(objectClass:Class) : Object
{
return this.getPool(objectClass).name_110();
}
private function getPool(objectClass:Class) : ObjectPool
{
var pool:ObjectPool = this.var_103[objectClass];
if(pool == null)
{
pool = new ObjectPool(objectClass);
this.var_103[objectClass] = pool;
}
return pool;
}
}
}

View File

@@ -0,0 +1,19 @@
package alternativa.tanks.game.utils.objectpool
{
public class PooledObject
{
protected var objectPool:ObjectPool;
public function PooledObject(objectPool:ObjectPool)
{
super();
this.objectPool = objectPool;
}
final public function method_254() : void
{
this.objectPool.name_425(this);
}
}
}