/// <summary>Frees a <see cref="JailedUser"/> from Jail.</summary> /// <param name="jailUser"><see cref="JailedUser"/> to be freed</param> /// <returns>True if successful</returns> public async Task <bool> FreeFromJail(JailedUser jailUser) { SQLiteCommand cmd = new SQLiteCommand { CommandText = "DELETE FROM Jail WHERE [Username] = @name" }; cmd.Parameters.AddWithValue("@name", jailUser.Name); return(await SQLiteHelper.ExecuteCommand(_con, cmd)); }
private void LstJail_SelectionChanged(object sender, SelectionChangedEventArgs e) { if (LstJail.SelectedIndex >= 0) { _selectedUser = GameState.AllJailedUsers[LstJail.SelectedIndex]; DataContext = _selectedUser; } BtnBailOut.IsEnabled = LstJail.SelectedIndex >= 0 && GameState.CurrentUser.GoldOnHand >= _selectedUser.Fine; }
/// <summary>Deletes a <see cref="User"/> from Jail if the location was changed.</summary> private async void CheckJail() { if (GameState.CurrentUser.CurrentLocation == SleepLocation.Jail) { JailedUser jailedUser = GameState.AllJailedUsers.Find(jailed => jailed.Name == GameState.CurrentUser.Name); if (await GameState.DatabaseInteraction.FreeFromJail(jailedUser)) { GameState.AllJailedUsers.Remove(jailedUser); } } }
/// <summary>Sends a <see cref="JailedUser"/> to Jail.</summary> /// <param name="jailUser"><see cref="JailedUser"/> to be jailed</param> /// <returns>True if successful</returns> public async Task <bool> SendToJail(JailedUser jailUser) { SQLiteCommand cmd = new SQLiteCommand { CommandText = "INSERT INTO Jail([Username], [Reason], [Fine], [DateJailed])VALUES(@name, @reason, @fine, @dateJailed)" }; cmd.Parameters.AddWithValue("@name", jailUser.Name); cmd.Parameters.AddWithValue("@reason", jailUser.Reason.ToString()); cmd.Parameters.AddWithValue("@fine", jailUser.Fine); cmd.Parameters.AddWithValue("@dateJailed", jailUser.DateJailed); return(await SQLiteHelper.ExecuteCommand(_con, cmd)); }
private async void BtnBailOut_Click(object sender, RoutedEventArgs e) { Functions.AddTextToTextBox(GameState.GamePage.TxtGame, $"You bail out {_selectedUser.Name} for {_selectedUser.FineToString} gold."); GameState.CurrentUser.GoldOnHand -= _selectedUser.Fine; await GameState.DatabaseInteraction.FreeFromJail(_selectedUser); GameState.AllJailedUsers.Remove(_selectedUser); GameState.AllUsers.Find(user => user.Name == _selectedUser.Name).CurrentLocation = SleepLocation.Streets; await GameState.DatabaseInteraction.SaveUser(GameState.AllUsers.Find(user => user.Name == _selectedUser.Name)); await GameState.DatabaseInteraction.SaveUser(GameState.CurrentUser); _selectedUser = new JailedUser(); DataContext = _selectedUser; RefreshItemsSource(); }
private async void BtnGoToJail_Click(object sender, RoutedEventArgs e) { Functions.AddTextToTextBox(TxtCourt, GameState.CurrentUser.GoldOnHand < _fine ? "You don't have the money required to pay the fine." : "You decide it is best to spend the night in jail."); GameState.CurrentUser.CurrentLocation = SleepLocation.Jail; JailedUser jailedUser = new JailedUser(GameState.CurrentUser.Name, _reason, _fine, DateTime.UtcNow); if (await GameState.DatabaseInteraction.SendToJail(jailedUser)) { BtnPayFine.IsEnabled = false; BtnJail.IsEnabled = false; GameState.CurrentUser.CurrentLocation = SleepLocation.Jail; GameState.AllJailedUsers.Add(jailedUser); _blnFinished = true; BtnFreedom.IsEnabled = true; BtnFreedom.Content = "_Back"; } FinishCourt(); ClosePage(); }
/// <summary>Checks whether a <see cref="JailedUser"/> has served their time.</summary> public async void CheckJailed() { jailedUser = GameState.AllJailedUsers.Find(user => user.Name == GameState.CurrentUser.Name); jailTimeSpan = DateTime.UtcNow - jailedUser.DateJailed; if (jailTimeSpan.Seconds >= jailedUser.Fine / 10) { Functions.AddTextToTextBox(TxtGame, "You awaken in a jail cell. A guard looms over you.\nHe barks at you, \"You're free to go!\"\nYou briskly leave the jail."); await GameState.DatabaseInteraction.FreeFromJail(jailedUser); GameState.CurrentUser.CurrentLocation = SleepLocation.Streets; ToggleButtons(true); Display(); await GameState.DatabaseInteraction.SaveUser(GameState.CurrentUser); } else { ToggleButtons(false); Functions.AddTextToTextBox(TxtGame, $"You awaken in a jail cell. You have not yet finished your sentence. You have {(jailedUser.Fine / 10) - jailTimeSpan.Seconds} seconds remaining."); Timer1.Start(); } }