mirror of
https://github.com/MapMakersAndProgrammers/TankiOnline2.0DemoClient.git
synced 2025-10-26 09:59:07 -07:00
package_20 alternativa.tanks.game.subsystems.eventsystem
This commit is contained in:
@@ -2,8 +2,8 @@ package alternativa.tanks.game
|
||||
{
|
||||
import flash.display.Stage;
|
||||
import package_18.name_44;
|
||||
import package_20.name_179;
|
||||
import package_20.name_56;
|
||||
import alternativa.tanks.game.subsystems.eventsystem.EventSystem;
|
||||
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;
|
||||
@@ -47,7 +47,7 @@ package alternativa.tanks.game
|
||||
|
||||
private var inputSystem:InputSystem;
|
||||
|
||||
private var eventSystem:name_179;
|
||||
private var eventSystem:EventSystem;
|
||||
|
||||
private var logicSystem1:name_177;
|
||||
|
||||
@@ -77,7 +77,7 @@ package alternativa.tanks.game
|
||||
this.var_4.addTask(this.var_44);
|
||||
this.inputSystem = new InputSystem(INPUT_SYSTEM_PRIORITY,stage);
|
||||
this.var_4.addTask(this.inputSystem);
|
||||
this.eventSystem = new name_179(EVENT_SYSTEM_PRIORITY);
|
||||
this.eventSystem = new EventSystem(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);
|
||||
@@ -163,7 +163,7 @@ package alternativa.tanks.game
|
||||
return this.inputSystem;
|
||||
}
|
||||
|
||||
public function name_61() : name_56
|
||||
public function name_61() : IEventSystem
|
||||
{
|
||||
return this.eventSystem;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
package alternativa.tanks.game.subsystems.eventsystem
|
||||
{
|
||||
import alternativa.tanks.game.GameTask;
|
||||
import package_108.name_373;
|
||||
import package_108.name_374;
|
||||
|
||||
public class EventSystem extends GameTask implements IEventSystem
|
||||
{
|
||||
private var eventQueue1:name_374;
|
||||
|
||||
private var eventQueue2:name_374;
|
||||
|
||||
private var var_213:Object;
|
||||
|
||||
public function EventSystem(priority:int)
|
||||
{
|
||||
super(priority);
|
||||
this.eventQueue1 = new name_374();
|
||||
this.eventQueue2 = new name_374();
|
||||
this.var_213 = new Object();
|
||||
}
|
||||
|
||||
public function addEventListener(eventType:String, listener:IGameEventListener) : void
|
||||
{
|
||||
var listeners:name_374 = this.var_213[eventType];
|
||||
if(listeners == null)
|
||||
{
|
||||
listeners = new name_374();
|
||||
this.var_213[eventType] = listeners;
|
||||
}
|
||||
listeners.add(listener);
|
||||
}
|
||||
|
||||
public function removeEventListener(eventType:String, listener:IGameEventListener) : void
|
||||
{
|
||||
var listeners:name_374 = this.var_213[eventType];
|
||||
if(listeners != null)
|
||||
{
|
||||
listeners.remove(listener);
|
||||
}
|
||||
}
|
||||
|
||||
public function dispatchEvent(eventType:String, eventData:*) : void
|
||||
{
|
||||
this.eventQueue1.add(GameEvent.create(eventType,eventData));
|
||||
}
|
||||
|
||||
override public function run() : void
|
||||
{
|
||||
var event:GameEvent = null;
|
||||
var listeners:name_374 = null;
|
||||
var iterator:name_373 = null;
|
||||
var listener:IGameEventListener = null;
|
||||
var tmp:name_374 = this.eventQueue1;
|
||||
this.eventQueue1 = this.eventQueue2;
|
||||
for(this.eventQueue2 = tmp; (event = GameEvent(this.eventQueue2.poll())) != null; )
|
||||
{
|
||||
listeners = this.var_213[event.eventType];
|
||||
if(listeners != null)
|
||||
{
|
||||
iterator = listeners.listIterator();
|
||||
while(iterator.hasNext())
|
||||
{
|
||||
listener = IGameEventListener(iterator.next());
|
||||
listener.method_146(event.eventType,event.eventData);
|
||||
}
|
||||
}
|
||||
event.destroy();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package alternativa.tanks.game.subsystems.eventsystem
|
||||
{
|
||||
public class GameEvent
|
||||
{
|
||||
private static var pool:GameEvent;
|
||||
|
||||
public var eventType:String;
|
||||
|
||||
public var eventData:*;
|
||||
|
||||
public var next:GameEvent;
|
||||
|
||||
public function GameEvent(eventType:String, eventData:*)
|
||||
{
|
||||
super();
|
||||
this.eventType = eventType;
|
||||
this.eventData = eventData;
|
||||
}
|
||||
|
||||
public static function create(eventType:String, eventData:*) : GameEvent
|
||||
{
|
||||
if(pool == null)
|
||||
{
|
||||
return new GameEvent(eventType,eventData);
|
||||
}
|
||||
var item:GameEvent = pool;
|
||||
pool = item.next;
|
||||
item.next = null;
|
||||
item.eventType = eventType;
|
||||
item.eventData = eventData;
|
||||
return item;
|
||||
}
|
||||
|
||||
public function destroy() : void
|
||||
{
|
||||
this.eventType = null;
|
||||
this.eventData = null;
|
||||
this.next = pool;
|
||||
pool = this;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
package alternativa.tanks.game.subsystems.eventsystem
|
||||
{
|
||||
public interface IEventSystem
|
||||
{
|
||||
function addEventListener(param1:String, param2:IGameEventListener) : void;
|
||||
|
||||
function removeEventListener(param1:String, param2:IGameEventListener) : void;
|
||||
|
||||
function dispatchEvent(param1:String, param2:*) : void;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package alternativa.tanks.game.subsystems.eventsystem
|
||||
{
|
||||
public interface IGameEventListener
|
||||
{
|
||||
function method_146(param1:String, param2:*) : void;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user