public void InitFromDefs(Hashtable json) { Hashtable[] defs = json.GetMapArray("instances"); this._maxElapsePerUpdate = json.GetInt("max_elapse_per_update"); foreach (Hashtable def in defs) { MatchSystem matchSystem = new MatchSystem(); matchSystem.InitFromDefs(def); matchSystem.eventHandler += this.OnEvent; this._matchingSystems[matchSystem.mode] = matchSystem; } }
internal static MatchRoom Pop(MatchSystem system) { Queue <MatchRoom> rooms; if (!POOL.TryGetValue(system.mode, out rooms)) { rooms = new Queue <MatchRoom>(); POOL[system.mode] = rooms; } if (rooms.Count == 0) { for (int i = 0; i < INC; i++) { rooms.Enqueue(new MatchRoom(system)); } } MatchRoom room = rooms.Dequeue(); return(room); }