AlanMoonbase 9055e6524d Add "Refresh" Context Menu Strip To All List Controls
Use `Show` Instead Of `ShowDialog` When Opening Profile Form
Rename `TokenJackpotSpinner` To `CurrencyJackpotSpinner`
Fix Contacts ListView Control Not Having Default Profile Picture On Users Without A Profile Picture
Fix Contacts ListView Alignment
2025-06-28 14:06:14 -07:00

126 lines
5.0 KiB
C#

using QtCNETAPI.Services.ApiService;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Runtime.CompilerServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace qtc_net_client_2.Forms
{
public partial class GuessTheNumber : Form
{
private IApiService _apiService;
private int _number;
private int _guesses;
public GuessTheNumber(IApiService apiService)
{
_apiService = apiService;
InitializeComponent();
}
private async void GuessTheNumber_Load(object sender, EventArgs e) => await InitializeGTNGame();
private async void btnGuess_Click(object sender, EventArgs e)
{
if(nudNumberGuess.Value > 0)
{
btnGuess.Enabled = false;
int guess = int.Parse(nudNumberGuess.Value.ToString());
var result = await _apiService.GuessRandomNumber(_number, guess);
if(result != null && result.Success)
{
switch(result.Data)
{
case QtCNETAPI.Enums.NumberGuessResult.Higher:
lblResult.Text = "Your Guess Was Higher By 10! You've Earned A Jackpot Spin!";
btnClaimPrize.Text = "Spin";
btnClaimPrize.Click += BtnClaimPrize_Click_JackpotSpin;
lblResult.Visible = true;
btnClaimPrize.Visible = true;
break;
case QtCNETAPI.Enums.NumberGuessResult.Lower:
lblResult.Text = "Your Guess Was Lower By 10! You've Earned 200 Q's!";
btnClaimPrize.Text = "Claim";
btnClaimPrize.Click += BtnClaimPrize_Click_QClaim;
lblResult.Visible = true;
btnClaimPrize.Visible = true;
break;
case QtCNETAPI.Enums.NumberGuessResult.Correct:
lblResult.Text = "Your Correct! You've Earned The Jackpot!";
btnClaimPrize.Text = "Claim";
btnClaimPrize.Click += BtnClaimPrize_Click_QClaimJackpot;
lblResult.Visible = true;
btnClaimPrize.Visible = true;
break;
case QtCNETAPI.Enums.NumberGuessResult.Incorrect:
if (_guesses >= 2)
{
lblResult.Text = "Unfortunately you've used up all your guesses for this round.";
lblResult.Visible = true;
btnGuess.Visible = false;
break;
}
else _guesses++;
lblResult.Text = $"Incorrect. You Get Three Chances. You Guessed {_guesses} Time(s)";
lblResult.Visible = true;
btnGuess.Enabled = true;
break;
}
}
}
}
private void BtnClaimPrize_Click_QClaimJackpot(object? sender, EventArgs e)
{
throw new NotImplementedException("need to figure out how to do this, sorry :)");
}
private async void BtnClaimPrize_Click_QClaim(object? sender, EventArgs e)
{
var result = await _apiService.AddCurrencyToCurrentUser(200, false);
if (result != null && result.Success) Close();
else
{
MessageBox.Show("We Weren't Able To Claim Your Prize. You Can Try Again.", "Uh Oh...", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private async void BtnClaimPrize_Click_JackpotSpin(object? sender, EventArgs e)
{
CurrencyJackpotSpinner tokenJackpotSpinner = new CurrencyJackpotSpinner();
var formResult = tokenJackpotSpinner.ShowDialog();
if (formResult == DialogResult.OK)
{
var result = await _apiService.AddCurrencyToCurrentUser(tokenJackpotSpinner.TokensWon, false);
if (result != null && result.Success) Close();
else
{
MessageBox.Show("We Weren't Able To Claim Your Prize. You Can Try Again.", "Uh Oh...", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
private async Task InitializeGTNGame()
{
var result = await _apiService.GetRandomNumber();
if (result != null && result.Success)
{
_number = result.Data;
lblHeader.Text = "I've picked a number between 1 and 500.\nWhat Is It?";
}
}
}
}