public RoomModel CreateRoom(NewRoomModel newRoom) { const int TRIES = 30; var attempt = 0; var room = new DbRoom { Name = newRoom.Name }; using var ctx = _contextFactory.CreateDbContext(); ctx.Rooms.Add(room); while (true) { try { lock (_random) { room.DisplayId = _random.Next(1, 10_000); } ctx.SaveChanges(); return(room.ToRoomModel()); } catch (Exception e) when(attempt < TRIES) { _logger.LogWarning(e, $"Failed to create room by display ID '{room.DisplayId}', attempt {attempt}/{TRIES}. Will try again, it may have just been due to ID collision."); } catch (Exception e) { _logger.LogError(e, $"Failed to create room by display ID '{room.DisplayId}', attempt {attempt}/{TRIES}. Will not try again."); throw; } } }
public Room Insert(CreateRoom value) { using (var tran = db.Database.BeginTransaction(System.Data.IsolationLevel.RepeatableRead)) { var toInsert = new DbRoom() { Capacity = value.Capacity }; db.Rooms.Add(toInsert); db.SaveChanges(); tran.Commit(); return(new Model.Room(toInsert.Id, toInsert.Capacity)); } }
public void exitRoom() { buttonSound.Play(); DbRoom dbRoom = new DbRoom(); Room room = dbRoom.getRoomInfo(); if (isServer && players.Count > 1) { return; } DbPlayer db = new DbPlayer(); PlayerData Info = db.GetPlayerByUserName(localPlayer.playerPanel.userNameText.text); Info.Money += localPlayer.money - 1000; db.UpdatePlayer(Info); RemovePlayer(localPlayer); room.amountOfPlayers--; dbRoom.UpdateRoom(room); if (isServer) { dbRoom.deleteRoom(room); NetworkManager.singleton.StopHost(); RemovePlayer(localPlayer); //Destroy(LobbyScene.singleton.gameObject); NetworkManager.singleton.StopClient(); Destroy(localPlayer); NetworkManager.Shutdown(); //Debug.Log("after destroying the local player"); return; } if (!isServer && isClient) { RemovePlayer(localPlayer); NetworkManager.singleton.StopClient(); Destroy(localPlayer); return; } }//exit the room after saving the player new score in the data base to the lobby scene
void Awake() { dbRoom = new DbRoom(); room = dbRoom.getRoomInfo(); if (room == null) { host.interactable = true; host.enabled = true; startClient.interactable = false; } else { host.interactable = false; startClient.interactable = true; startClient.enabled = true; } }
public void setButtons() { GameObject.Find("StartHost").GetComponent <Button>().onClick.AddListener(StartUpHost); GameObject.Find("StartClient").GetComponent <Button>().onClick.AddListener(StartUpClient); dbRoom = new DbRoom(); room = dbRoom.getRoomInfo(); if (room == null) { GameObject.Find("StartHost").GetComponent <Button>().interactable = true; GameObject.Find("StartClient").GetComponent <Button>().interactable = false; } else { GameObject.Find("StartHost").GetComponent <Button>().interactable = false; GameObject.Find("StartClient").GetComponent <Button>().interactable = true; } }
public RemoveResult DeleteRoom(int roomId) { try { using var ctx = _contextFactory.CreateDbContext(); var room = new DbRoom { DisplayId = roomId }; ctx.Attach(room); ctx.Remove(room); return(ctx.SaveChanges() > 0 ? RemoveResult.OK : RemoveResult.AlreadyRemoved); } catch (Exception e) { _logger.LogError(e, $"Failed to remove room by ID '{roomId}' from database."); return(RemoveResult.UnableToRemove); } }
private static Model.Room ToModel(DbRoom value) { return(new Model.Room(value.Id, value.Capacity)); }
public static RoomModel ToRoomModel(this DbRoom room) { return(new RoomModel(room.DisplayId, room.Name)); }