public static void start() { queue.Clear(); subscribers.Clear(); new Thread(() => { Thread.CurrentThread.IsBackground = true; while (true) { if (queue.Count > 0) { MonsterMoveEvent eventObj = queue.Dequeue(); foreach (Player subscriber in subscribers) { subscriber.monsterMoved((MonsterMoveEvent)eventObj); } } } }).Start(); }
public static void publish(MonsterMoveEvent moveEvent) { queue.Enqueue(moveEvent); }
public void monsterMoved(MonsterMoveEvent moveEvent) { monsterMoveEvents.Add(moveEvent); }