public async Task <IResponseModel> AddRoomAsync(IRoomModel model) { try { var room = new Room { Id = Guid.NewGuid(), Name = model.Name, TotalBeds = model.TotalBeds, RoomTypeId = model.RoomTypeId, PropertyId = model.PropertyId }; _db.Rooms.Add(room); await _db.SaveChangesAsync(); _response.Status = true; _response.Message = "New room added."; return(_response); } catch (Exception ex) { _loggerService.Log("Add Room", ex.InnerException.Message, ex.Message, ex.StackTrace); _response.Status = false; _response.Message = "An error occurred while adding new room."; return(_response); } }
internal Room(IRoomData roomData, IRoomModel model) { RoomData = roomData; RoomModel = model; _cancellationToken = new CancellationTokenSource(); RoomGrid = new RoomGrid(RoomModel); _entityHandler = new EntityHandler(this); }
public BaseEntity AddUserToRoom(IRoom room, ISession session) { IRoomModel roomModel = room.RoomModel; UserEntity userEntity = new UserEntity(room.Entities.Count + 1, roomModel.DoorX, roomModel.DoorY, roomModel.DoorDir, session); room.AddEntity(userEntity); session.Entity = userEntity; return(userEntity); }
public RoomGrid(IRoomModel roomModel) { MapSizeX = roomModel.MapSizeX; MapSizeY = roomModel.MapSizeY; _roomTiles = new Dictionary <int, RoomTile>(); WalkableGrid = new bool[MapSizeX, MapSizeY]; for (int y = 0; y < MapSizeY; y++) { for (int x = 0; x < MapSizeX; x++) { WalkableGrid[x, y] = roomModel.GetTileState(x, y); _roomTiles.Add(ConvertTo1D(x, y), new RoomTile()); } } }
public UserViewModel(ILoginModel loginBack, IRoomModel roomBack) { _roomBack = roomBack; _loginBack = loginBack; LogoutButton_Clicked = new DelegateCommand(Logout, () => LogoutStatus == "Logout"); Message_Sent = new DelegateCommand(SendNewMessage, () => !string.IsNullOrWhiteSpace(SendMessageText) && LogoutStatus == "Logout"); NewLine_Added = new DelegateCommand(() => { SendMessageText += "\r\n"; }); Invites = new ObservableCollection <InviteViewModel>(); NewJoin_Clicked = new DelegateCommand(JoinNewRoom, () => !string.IsNullOrEmpty(RoomToJoin)); _roomBack.RoomSyncCompleted += OnRoomReady; _roomBack.NewInvite += OnNewInvite; _roomBack.RoomJoined += OnRoomJoined; _loginBack.LogoutCompleted += OnLogoutAttempted; }
public HeightMapComposer(IRoomModel roomModel) : base(Headers.HeightMapMessageComposer) { WriteInt(roomModel.MapSizeX); WriteInt(roomModel.MapSizeX * roomModel.MapSizeY); for (int y = 0; y < roomModel.MapSizeY; y++) { for (int x = 0; x < roomModel.MapSizeX; x++) { //Tile is valid. if (roomModel.GetTileState(x, y)) { WriteShort((short)(roomModel.GetHeight(x, y) * 256)); } else { WriteShort(-1); } } } }
/// <summary> /// TimedAutoMatch的子函数,成功坐下 /// </summary> /// <param name="room"></param> /// <param name="userSession"></param> private void TimedAutoMatchRoom_Sub_SitDown_Ok(IRoomModel room, AppSession userSession) { try { string svrAction = ServerAction.joinOK; // StringBuilder contentXml = new StringBuilder(); //获取房间的xml输出 //IRoomModel room = logicGetRoom(roomId); string roomXml = room.toXMLString(); //坐下成功不需要code //contentXml.Append("<code>0</code>"); contentXml.Append(roomXml); //回复 Send(userSession, XmlInstruction.fengBao(svrAction, contentXml.ToString()) ); //log Log.WriteStrBySend(svrAction, userSession.RemoteEndPoint.ToString()); //转发 uER = UserEnterRoom string svrAction_uER = ServerAction.uER; IUserModel sitDownUser = logicGetUser(userSession.RemoteEndPoint.ToString()); string chairAndUserXml = room.getChair(sitDownUser).toXMLString(); netTurnRoom(userSession.RemoteEndPoint.ToString(), room.Id, svrAction_uER, chairAndUserXml); Log.WriteStrByTurn(SR.Room_displayName + room.Id.ToString(), "", svrAction_uER); } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME, "TimedAutoMatch_Sub_SitDown", exd.Message, exd.Source, exd.StackTrace); } }
private void TimedAutoMatchRoom_Sub_Match(ref IRoomModel room, AutoMatchRoomModel amr, IUserModel user, AppSession userSession, ref ToSitDownStatus sitDownStatus, ref bool sitDown, ref int roomId, int matchLvl) { try { foreach (int roomKey in roomList.Keys) { room = (IRoomModel)roomList.get(roomKey); //自动匹配差1人 if (amr.Tab == room.Tab) { roomId = room.Id; //不可为上次的房间,否则会因三人中的二人未退出,又匹配到该房间 if (amr.getRoomOldId() == roomId) { continue; } //不可为正在游戏中的房间 if (room.hasGamePlaying()) { continue; } //不可为断线重连中的房间 if (room.isWaitReconnection) { continue; } //不可为有尸体的房间 if (logicChkRoomByDeadPeople(roomId)) { continue; } //自动匹配原则是 差1人的游戏最佳 //所以这里不能单单只是坐下,要做在差一人的坐位上 sitDown = logicHasIdleChairAndMatchSitDown(roomId, matchLvl, //user.getStrIpPort(), userSession.RemoteEndPoint.ToString(), true, out sitDownStatus); if (sitDown) { TimedAutoMatchRoom_Sub_SitDown_Ok(room, userSession); break; }//end if }//end if }//end for } catch (Exception exd) { Log.WriteStrByException(CLASS_NAME, "TimedAutoMatchRoom_Sub_Match", exd.Message, exd.Source, exd.StackTrace); } }