public void Save() { using (ClueLessContext db = new ClueLessContext()) { Database.DataModels.Suggestion suggestion = new Database.DataModels.Suggestion { LocationID = LocationID, PlayerID = playerID, ConfiguredCharacterID = characterID, ConfiguredWeaponID = weaponID, IsAccusation = IsAccusastion }; db.Suggestions.Add(suggestion); db.SaveChanges(); //set the player to be the current responding player Database.DataModels.Player author = db.Players.Where(x => x.ID == suggestion.PlayerID).FirstOrDefault(); author.IsCurrentRespondingPlayer = true; db.SaveChanges(); int firstResponderID = FindNextResponder(suggestion.ID); Database.DataModels.Player firstResponder = db.Players.Where(x => x.ID == firstResponderID).FirstOrDefault(); firstResponder.IsCurrentRespondingPlayer = true; author.IsCurrentRespondingPlayer = false; db.SaveChanges(); } }
public static void MoveCharacter(int playerID, int locationID) { using (ClueLessContext db = new ClueLessContext()) { Database.DataModels.Player playerToBeMoved = db.Players.Where(x => x.ID == playerID).FirstOrDefault(); playerToBeMoved.PositionID = locationID; db.SaveChanges(); } }
public bool ValidateAccusation() { bool isValid = false; try { using (ClueLessContext db = new ClueLessContext()) { //Get the datbase suggestion object Database.DataModels.Suggestion suggestion = db.Suggestions.Where(x => x.ID == ID).FirstOrDefault(); //Get the gameID int gameID = db.Players.Where(x => x.ID == suggestion.PlayerID).Select(x => x.GameID).FirstOrDefault(); //Pull the game's solution Database.DataModels.GameSolution solution = db.GameSolutions.Where(x => x.GameID == gameID).FirstOrDefault(); if (solution.ConfiguredCharacterID == suggestion.ConfiguredCharacterID && solution.ConfiguredWeaponID == suggestion.ConfiguredWeaponID && solution.PositionID == suggestion.LocationID) { isValid = true; //End the Game solution.SolvedByPlayerID = suggestion.PlayerID; db.SaveChanges(); Game.ChangeGameStatus(gameID, Database.DataModels.Status.Completed_Solved); } else { //determine the number of active players int activePlayers = db.Players.Where(x => x.GameID == gameID && x.IsActive).Count(); if (activePlayers > 2) { //deactivate the player Database.DataModels.Player player = db.Players.Where(x => x.ID == playerID).FirstOrDefault(); player.IsActive = false; db.SaveChanges(); } else { //end the game Game.ChangeGameStatus(gameID, Database.DataModels.Status.Completed_Unsolved); } } } }catch (Exception e) { Console.WriteLine(e.Message + Environment.NewLine + e.StackTrace); } return(isValid); }
public static void SignalEndofTurn(int playerID) { using (ClueLessContext db = new ClueLessContext()) { Database.DataModels.Player currentPlayer = db.Players.Where(x => x.ID == playerID).FirstOrDefault(); int NextPlayerID = FindNextPlayer(currentPlayer.GameID); Database.DataModels.Player nextPlayer = db.Players.Where(x => x.ID == NextPlayerID).FirstOrDefault(); currentPlayer.IsCurrentPlayer = false; nextPlayer.IsCurrentPlayer = true; db.SaveChanges(); } }
public static Clue RespondToSuggestion(int playerId, int suggestionID, int clueID = -1, string ClueType = "") { Clue responseClue = new Clue(); SuggestionResponse response; ClueLessContext db = new ClueLessContext(); if (clueID > 0) { responseClue = RevealClue(playerId, clueID, ClueType, suggestionID); response = new SuggestionResponse { SuggestionID = suggestionID, Response = "Revealed Clue", RevealedClueID = clueID, RevealedClueTable = ClueType }; db.SaveChanges(); } else { response = new SuggestionResponse { SuggestionID = suggestionID, Response = "Pass" }; db.SaveChanges(); Database.DataModels.Suggestion suggestion = db.Suggestions.Where(x => x.ID == suggestionID).FirstOrDefault(); int nextPlayerID = FindNextResponder(suggestionID); Database.DataModels.Player currentResponder = db.Players.Where(x => x.ID == suggestion.PlayerID).FirstOrDefault(); currentResponder.IsCurrentRespondingPlayer = false; db.SaveChanges(); if (nextPlayerID != suggestion.PlayerID) { Database.DataModels.Player nextResponder = db.Players.Where(x => x.ID == nextPlayerID).FirstOrDefault(); nextResponder.IsCurrentRespondingPlayer = true; db.SaveChanges(); } } return(responseClue); }
private static int FindNextResponder(int suggestionID) { ClueLessContext db = new ClueLessContext(); Database.DataModels.Suggestion suggestion = db.Suggestions.Where(x => x.ID == suggestionID).FirstOrDefault(); Database.DataModels.Player author = db.Players.Where(x => x.ID == suggestion.PlayerID).FirstOrDefault(); int nextPlayerID; //Pull the list of all the players List <Database.DataModels.Player> players = db.Players.Where(x => x.GameID == author.GameID).OrderBy(x => x.ID).ToList(); //Get the index of the current player int currentIndex = players.IndexOf(players.Where(x => x.IsCurrentRespondingPlayer).FirstOrDefault()); if (currentIndex == players.Count - 1) { nextPlayerID = players.ElementAt(0).ID; } else { nextPlayerID = players.ElementAt(currentIndex + 1).ID; } return(nextPlayerID); }