示例#1
0
        private Room <TPlayer> Create(Type t, RoomRequest request)
        {
            var rm = (Room <TPlayer>)Activator.CreateInstance(t);

            rm.SetupBy(request);
            this._manager.UnlockedAdd(rm);
            rm.Creation();

            return(rm);
        }
示例#2
0
        public Room <TPlayer> FindOrCreateBy(RoomRequest request)
        {
            lock (this._manager._lock) {
                var t = GetRoomForType(request.RoomType);
                if (t == null)
                {
                    return(null);
                }

                var rm = (Room <TPlayer>)Activator.CreateInstance(t);
                rm.SetupBy(request);

                return(this._manager.UnlockedExistsBy(request, out var __) ? __ : this.Create(t, request));
            }
        }
示例#3
0
文件: Room.cs 项目: kubapolish/WSIO
 public void SetupBy(RoomRequest request)
 {
     //this.Creation();
     this.RequestInfo = request;
 }
示例#4
0
 public Room <TPlayer> FindBy(RoomRequest request) => this._manager.FindBy(request);
示例#5
0
 public bool ExistsBy(RoomRequest request, out Room <TPlayer> item) => this._manager.ExistsBy(request, out item);
示例#6
0
        public Room <TPlayer> CreateBy(RoomRequest request)
        {
            var t = GetRoomForType(request.RoomType) ?? throw new InvalidOperationException("No room of the roomtype requested exists.");

            return(Create(t, request));
        }
示例#7
0
 public bool CanCreate(RoomRequest request) => GetRoomForType(request.RoomType) != null && !this._manager.ExistsBy(request, out var __);