497 lines
20 KiB
C#
497 lines
20 KiB
C#
using Basketball_Scoreboard_System.classes;
|
|
|
|
namespace Basketball_Scoreboard_System.forms
|
|
{
|
|
public partial class ControlPanel : Form
|
|
{
|
|
public ControlPanel() => InitializeComponent();
|
|
|
|
private void ControlPanel_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
MessageBox.Show("This window can be closed by closing the audience window");
|
|
e.Cancel = true;
|
|
}
|
|
|
|
private void TeamsMenuHomeChangeName_Click(object sender, EventArgs e)
|
|
{
|
|
TeamNameInput TeamNameInput = new(Program.HomeTeam.Name);
|
|
if (TeamNameInput.ShowDialog() == DialogResult.OK) Program.HomeTeam.ChangeTeamName(TeamNameInput.TeamName);
|
|
}
|
|
|
|
private void TeamsMenuAwayChangeName_Click(object sender, EventArgs e)
|
|
{
|
|
TeamNameInput TeamNameInput = new(Program.AwayTeam.Name);
|
|
if (TeamNameInput.ShowDialog() == DialogResult.OK) Program.AwayTeam.ChangeTeamName(TeamNameInput.TeamName);
|
|
}
|
|
|
|
private void ControlPanel_Load(object sender, EventArgs e)
|
|
{
|
|
Program.MainClock.DisplayTime();
|
|
Program.ShotClock.DisplayTime();
|
|
Program.AudienceWindow.LabelPeriod.Text = Program.Period.ToString();
|
|
LabelPeriod.Text = Program.Period.ToString();
|
|
Program.AudienceWindow.LabelHomeTeamFouls.Text = Program.HomeTeam.Fouls.ToString();
|
|
LabelHomeFouls.Text = Program.HomeTeam.Fouls.ToString();
|
|
Program.AudienceWindow.LabelAwayTeamFouls.Text = Program.AwayTeam.Fouls.ToString();
|
|
LabelAwayFouls.Text = Program.AwayTeam.Fouls.ToString();
|
|
|
|
TeamsMenuHome.Text = Settings.Default.HomeTeamName;
|
|
TeamsMenuAway.Text = Settings.Default.AwayTeamName;
|
|
LabelHomeTitle.Text = Settings.Default.HomeTeamName;
|
|
LabelAwayTitle.Text = Settings.Default.AwayTeamName;
|
|
|
|
if (Settings.Default.ShotClockEnabled)
|
|
{
|
|
Clock.SCUpdateButtonLabel();
|
|
Clock.SCUpdateSecondaryButtonLabel();
|
|
}
|
|
else
|
|
{
|
|
Program.AudienceWindow.LabelShotClock.Hide();
|
|
Program.AudienceWindow.LabelShotClockTitle.Hide();
|
|
ButtonSCSetToDefault.Hide();
|
|
ButtonSCSet14S.Hide();
|
|
}
|
|
}
|
|
|
|
private void MainClockMenuSetTime_Click(object sender, EventArgs e)
|
|
{
|
|
if (Program.AudienceWindow.MainClockTimer.Enabled) MessageBox.Show("Clock must be stopped", "", MessageBoxButtons.OK);
|
|
else
|
|
{
|
|
TimeSpan CurrentTime = TimeSpan.FromMilliseconds(Program.MainClock.Time);
|
|
|
|
MainClockTimeSet MainClockTimeSet = new();
|
|
|
|
MainClockTimeSet.MinutesSelector.Value = CurrentTime.Minutes;
|
|
MainClockTimeSet.SecondsSelector.Value = CurrentTime.Seconds;
|
|
MainClockTimeSet.MSSelector.Value = CurrentTime.Milliseconds;
|
|
|
|
if (MainClockTimeSet.ShowDialog() == DialogResult.OK)
|
|
{
|
|
TimeSpan NewTime = TimeSpan.FromMinutes(MainClockTimeSet.M) + TimeSpan.FromSeconds(MainClockTimeSet.S) + TimeSpan.FromMilliseconds(MainClockTimeSet.MS);
|
|
|
|
Program.MainClock.Time = (int)NewTime.TotalMilliseconds;
|
|
Program.MainClock.DisplayTime();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void MainClockMenuSetDefaultTime_Click(object sender, EventArgs e)
|
|
{
|
|
if (Program.AudienceWindow.MainClockTimer.Enabled) MessageBox.Show("Clock must be stopped", "", MessageBoxButtons.OK);
|
|
else
|
|
{
|
|
TimeSpan CurrentTime = TimeSpan.FromMilliseconds(Program.MainClock.Time);
|
|
|
|
MainClockTimeSet MainClockTimeSet = new();
|
|
|
|
MainClockTimeSet.MinutesSelector.Value = CurrentTime.Minutes;
|
|
MainClockTimeSet.SecondsSelector.Value = CurrentTime.Seconds;
|
|
MainClockTimeSet.MSSelector.Value = CurrentTime.Milliseconds;
|
|
|
|
if (MainClockTimeSet.ShowDialog() == DialogResult.OK)
|
|
{
|
|
TimeSpan NewTime = TimeSpan.FromMinutes(MainClockTimeSet.M) + TimeSpan.FromSeconds(MainClockTimeSet.S) + TimeSpan.FromMilliseconds(MainClockTimeSet.MS);
|
|
|
|
Settings.Default.MainClockDefaultTime = (int)NewTime.TotalMilliseconds;
|
|
Settings.Default.Save();
|
|
|
|
Program.MainClock.Time = (int)NewTime.TotalMilliseconds;
|
|
Program.MainClock.DisplayTime();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ShotClockMenuSetTime_Click(object sender, EventArgs e)
|
|
{
|
|
if (!Settings.Default.ShotClockEnabled) MessageBox.Show("Shot Clock is disabled", "", MessageBoxButtons.OK);
|
|
else
|
|
{
|
|
if (Program.AudienceWindow.ShotClockTimer.Enabled) MessageBox.Show("Shot Clock must be stopped", "", MessageBoxButtons.OK);
|
|
else
|
|
{
|
|
TimeSpan CurrentTime = TimeSpan.FromMilliseconds(Program.ShotClock.Time);
|
|
|
|
ShotClockTimeSet ShotClockTimeSet = new();
|
|
|
|
ShotClockTimeSet.SecondsSelector.Value = CurrentTime.Seconds;
|
|
|
|
if (ShotClockTimeSet.ShowDialog() == DialogResult.OK)
|
|
{
|
|
TimeSpan NewTime = TimeSpan.FromSeconds(ShotClockTimeSet.S);
|
|
|
|
Program.ShotClock.Time = (int)NewTime.TotalMilliseconds;
|
|
Program.ShotClock.DisplayTime();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ShotClockMenuSetDefaultTime_Click(object sender, EventArgs e)
|
|
{
|
|
if (!Settings.Default.ShotClockEnabled) MessageBox.Show("Shot Clock is disabled", "", MessageBoxButtons.OK);
|
|
else
|
|
{
|
|
TimeSpan CurrentTime = TimeSpan.FromMilliseconds(Settings.Default.ShotClockDefaultTime);
|
|
|
|
ShotClockTimeSet ShotClockTimeSet = new();
|
|
|
|
ShotClockTimeSet.SecondsSelector.Value = CurrentTime.Seconds;
|
|
|
|
if (ShotClockTimeSet.ShowDialog() == DialogResult.OK)
|
|
{
|
|
TimeSpan NewTime = TimeSpan.FromSeconds(ShotClockTimeSet.S);
|
|
|
|
Settings.Default.ShotClockDefaultTime = (int)NewTime.TotalMilliseconds;
|
|
Settings.Default.Save();
|
|
|
|
Clock.SCUpdateButtonLabel();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void ButtonStartClocks_Click(object sender, EventArgs e)
|
|
{
|
|
Program.AudienceWindow.MainClockTimer.Start();
|
|
if (Settings.Default.ShotClockEnabled) Program.AudienceWindow.ShotClockTimer.Start();
|
|
}
|
|
|
|
private void ButtonStopClocks_Click(object sender, EventArgs e)
|
|
{
|
|
Program.AudienceWindow.MainClockTimer.Stop();
|
|
if (Settings.Default.ShotClockEnabled) Program.AudienceWindow.ShotClockTimer.Stop();
|
|
}
|
|
|
|
private void ShotClockMenuToggleShotClock_Click(object sender, EventArgs e)
|
|
{
|
|
Settings.Default.ShotClockEnabled = !Settings.Default.ShotClockEnabled;
|
|
Settings.Default.Save();
|
|
if (Settings.Default.ShotClockEnabled)
|
|
{
|
|
Program.AudienceWindow.LabelShotClock.Show();
|
|
Program.AudienceWindow.LabelShotClockTitle.Show();
|
|
ButtonSCSetToDefault.Show();
|
|
ButtonSCSet14S.Show();
|
|
LabelShotClock.Show();
|
|
Clock.SCUpdateButtonLabel();
|
|
Clock.SCUpdateSecondaryButtonLabel();
|
|
}
|
|
else
|
|
{
|
|
Program.AudienceWindow.LabelShotClock.Hide();
|
|
Program.AudienceWindow.LabelShotClockTitle.Hide();
|
|
ButtonSCSetToDefault.Hide();
|
|
ButtonSCSet14S.Hide();
|
|
LabelShotClock.Hide();
|
|
Program.AudienceWindow.ShotClockTimer.Stop();
|
|
}
|
|
}
|
|
|
|
private void ButtonSCSetToDefault_Click(object sender, EventArgs e)
|
|
{
|
|
Program.ShotClock.Time = Settings.Default.ShotClockDefaultTime;
|
|
|
|
Program.ShotClock.DisplayTime();
|
|
if (Program.AudienceWindow.ShotClockTimer.Enabled)
|
|
{
|
|
Program.AudienceWindow.ShotClockTimer.Stop();
|
|
Program.AudienceWindow.ShotClockTimer.Start();
|
|
}
|
|
}
|
|
|
|
private void ButtonSCSet14S_Click(object sender, EventArgs e)
|
|
{
|
|
Program.ShotClock.Time = Settings.Default.ShotClockDefaultSecondaryTime;
|
|
|
|
Program.ShotClock.DisplayTime();
|
|
if (Program.AudienceWindow.ShotClockTimer.Enabled)
|
|
{
|
|
Program.AudienceWindow.ShotClockTimer.Stop();
|
|
Program.AudienceWindow.ShotClockTimer.Start();
|
|
}
|
|
}
|
|
|
|
private void SetBonusFoulThresholdMenuButton_Click(object sender, EventArgs e)
|
|
{
|
|
NumberInput NumberInput = new()
|
|
{
|
|
Number = Settings.Default.BonusFoulThreshold
|
|
};
|
|
|
|
NumberInput.NumberSelector.Value = Settings.Default.BonusFoulThreshold;
|
|
NumberInput.Text = "Enter New Threshold";
|
|
|
|
if (NumberInput.ShowDialog() == DialogResult.OK)
|
|
{
|
|
Settings.Default.BonusFoulThreshold = NumberInput.Number;
|
|
Settings.Default.Save();
|
|
}
|
|
|
|
if (Program.HomeTeam.Fouls >= Settings.Default.BonusFoulThreshold)
|
|
{
|
|
Program.AwayTeam.Bonus = true;
|
|
Program.AudienceWindow.LabelAwayTeamBonus.Visible = true;
|
|
LabelAwayBonus.Visible = true;
|
|
}
|
|
else
|
|
{
|
|
Program.AwayTeam.Bonus = false;
|
|
Program.AudienceWindow.LabelAwayTeamBonus.Visible = false;
|
|
LabelAwayBonus.Visible = false;
|
|
}
|
|
|
|
if (Program.AwayTeam.Fouls >= Settings.Default.BonusFoulThreshold)
|
|
{
|
|
Program.HomeTeam.Bonus = true;
|
|
Program.AudienceWindow.LabelHomeTeamBonus.Visible = true;
|
|
LabelHomeBonus.Visible = true;
|
|
}
|
|
else
|
|
{
|
|
Program.HomeTeam.Bonus = false;
|
|
Program.AudienceWindow.LabelHomeTeamBonus.Visible = false;
|
|
LabelHomeBonus.Visible = false;
|
|
}
|
|
}
|
|
|
|
private void ButtonHomeScoreAdd1_Click(object sender, EventArgs e) => Program.HomeTeam.ChangeScore(1);
|
|
|
|
private void ButtonHomeScoreAdd2_Click(object sender, EventArgs e)
|
|
{
|
|
Program.HomeTeam.ChangeScore(2);
|
|
|
|
if (Settings.Default.ShotClockEnabled && Program.AudienceWindow.ShotClockTimer.Enabled)
|
|
{
|
|
Program.AudienceWindow.MainClockTimer.Stop();
|
|
Program.AudienceWindow.ShotClockTimer.Stop();
|
|
|
|
Program.ShotClock.Time = Settings.Default.ShotClockDefaultTime;
|
|
|
|
Program.ShotClock.DisplayTime();
|
|
}
|
|
}
|
|
|
|
private void ButtonHomeScoreAdd3_Click(object sender, EventArgs e)
|
|
{
|
|
Program.HomeTeam.ChangeScore(3);
|
|
|
|
if (Settings.Default.ShotClockEnabled && Program.AudienceWindow.ShotClockTimer.Enabled)
|
|
{
|
|
Program.AudienceWindow.MainClockTimer.Stop();
|
|
Program.AudienceWindow.ShotClockTimer.Stop();
|
|
|
|
Program.ShotClock.Time = Settings.Default.ShotClockDefaultTime;
|
|
|
|
Program.ShotClock.DisplayTime();
|
|
}
|
|
}
|
|
|
|
private void ButtonHomeScoreSubtract1_Click(object sender, EventArgs e) => Program.HomeTeam.ChangeScore(-1);
|
|
|
|
private void ButtonHomeScoreSubtract2_Click(object sender, EventArgs e) => Program.HomeTeam.ChangeScore(-2);
|
|
|
|
private void ButtonHomeScoreSubtract3_Click(object sender, EventArgs e) => Program.HomeTeam.ChangeScore(-3);
|
|
|
|
private void ButtonAwayScoreAdd1_Click(object sender, EventArgs e) => Program.AwayTeam.ChangeScore(1);
|
|
|
|
private void ButtonAwayScoreAdd2_Click(object sender, EventArgs e)
|
|
{
|
|
Program.AwayTeam.ChangeScore(2);
|
|
|
|
if (Settings.Default.ShotClockEnabled && Program.AudienceWindow.ShotClockTimer.Enabled)
|
|
{
|
|
Program.AudienceWindow.MainClockTimer.Stop();
|
|
Program.AudienceWindow.ShotClockTimer.Stop();
|
|
|
|
Program.ShotClock.Time = Settings.Default.ShotClockDefaultTime;
|
|
|
|
Program.ShotClock.DisplayTime();
|
|
}
|
|
}
|
|
|
|
private void ButtonAwayScoreAdd3_Click(object sender, EventArgs e)
|
|
{
|
|
Program.AwayTeam.ChangeScore(3);
|
|
|
|
if (Settings.Default.ShotClockEnabled && Program.AudienceWindow.ShotClockTimer.Enabled)
|
|
{
|
|
Program.AudienceWindow.MainClockTimer.Stop();
|
|
Program.AudienceWindow.ShotClockTimer.Stop();
|
|
|
|
Program.ShotClock.Time = Settings.Default.ShotClockDefaultTime;
|
|
|
|
Program.ShotClock.DisplayTime();
|
|
}
|
|
}
|
|
|
|
private void ButtonAwayScoreSubtract1_Click(object sender, EventArgs e) => Program.AwayTeam.ChangeScore(-1);
|
|
|
|
private void ButtonAwayScoreSubtract2_Click(object sender, EventArgs e) => Program.AwayTeam.ChangeScore(-2);
|
|
|
|
private void ButtonAwayScoreSubtract3_Click(object sender, EventArgs e) => Program.AwayTeam.ChangeScore(-3);
|
|
|
|
private void GameMenuSetPeriod_Click(object sender, EventArgs e)
|
|
{
|
|
NumberInput NumberInput = new()
|
|
{
|
|
Number = Program.Period
|
|
};
|
|
|
|
NumberInput.NumberSelector.Value = Program.Period;
|
|
NumberInput.NumberSelector.Maximum = 9;
|
|
NumberInput.Text = "Enter Period";
|
|
|
|
if (NumberInput.ShowDialog() == DialogResult.OK) Program.Period = NumberInput.Number;
|
|
Program.AudienceWindow.LabelPeriod.Text = Program.Period.ToString();
|
|
LabelPeriod.Text = Program.Period.ToString();
|
|
}
|
|
|
|
private void GameMenuSwitchPossession_Click(object sender, EventArgs e)
|
|
{
|
|
Program.HomeTeam.Possession = !Program.HomeTeam.Possession;
|
|
Program.AwayTeam.Possession = !Program.AwayTeam.Possession;
|
|
|
|
Program.AudienceWindow.LabelHomeTeamPossession.Visible = Program.HomeTeam.Possession;
|
|
Program.AudienceWindow.LabelAwayTeamPossession.Visible = Program.AwayTeam.Possession;
|
|
|
|
LabelHomePossession.Visible = Program.HomeTeam.Possession;
|
|
LabelAwayPossession.Visible = Program.AwayTeam.Possession;
|
|
}
|
|
|
|
private void TeamsMenuHomeSetFouls_Click(object sender, EventArgs e)
|
|
{
|
|
NumberInput NumberInput = new()
|
|
{
|
|
Number = Program.HomeTeam.Fouls
|
|
};
|
|
|
|
NumberInput.NumberSelector.Maximum = 9;
|
|
NumberInput.NumberSelector.Minimum = 0;
|
|
NumberInput.NumberSelector.Value = Program.HomeTeam.Fouls;
|
|
NumberInput.Text = "Enter Fouls";
|
|
|
|
if (NumberInput.ShowDialog() == DialogResult.OK) Program.HomeTeam.Fouls = NumberInput.Number;
|
|
Program.AudienceWindow.LabelHomeTeamFouls.Text = Program.HomeTeam.Fouls.ToString();
|
|
LabelHomeFouls.Text = Program.HomeTeam.Fouls.ToString();
|
|
|
|
if (Program.HomeTeam.Fouls >= Settings.Default.BonusFoulThreshold)
|
|
{
|
|
Program.AwayTeam.Bonus = true;
|
|
Program.AudienceWindow.LabelAwayTeamBonus.Visible = true;
|
|
LabelAwayBonus.Visible = true;
|
|
}
|
|
else
|
|
{
|
|
Program.AwayTeam.Bonus = false;
|
|
Program.AudienceWindow.LabelAwayTeamBonus.Visible = false;
|
|
LabelAwayBonus.Visible = false;
|
|
}
|
|
}
|
|
|
|
private void TeamsMenuAwaySetFouls_Click(object sender, EventArgs e)
|
|
{
|
|
NumberInput NumberInput = new()
|
|
{
|
|
Number = Program.AwayTeam.Fouls
|
|
};
|
|
|
|
NumberInput.NumberSelector.Maximum = 9;
|
|
NumberInput.NumberSelector.Minimum = 0;
|
|
NumberInput.NumberSelector.Value = Program.AwayTeam.Fouls;
|
|
NumberInput.Text = "Enter Fouls";
|
|
|
|
if (NumberInput.ShowDialog() == DialogResult.OK) Program.AwayTeam.Fouls = NumberInput.Number;
|
|
Program.AudienceWindow.LabelAwayTeamFouls.Text = Program.AwayTeam.Fouls.ToString();
|
|
LabelAwayFouls.Text = Program.AwayTeam.Fouls.ToString();
|
|
|
|
if (Program.AwayTeam.Fouls >= Settings.Default.BonusFoulThreshold)
|
|
{
|
|
Program.HomeTeam.Bonus = true;
|
|
Program.AudienceWindow.LabelHomeTeamBonus.Visible = true;
|
|
LabelHomeBonus.Visible = true;
|
|
}
|
|
else
|
|
{
|
|
Program.HomeTeam.Bonus = false;
|
|
Program.AudienceWindow.LabelHomeTeamBonus.Visible = false;
|
|
LabelHomeBonus.Visible = false;
|
|
}
|
|
}
|
|
|
|
private void LabelHomeTitle_Paint(object sender, PaintEventArgs e) => LabelHomeTitle.Font = Program.GetFontSize(e.Graphics, LabelHomeTitle.Text, new Size(LabelHomeTitle.Width - 20, LabelHomeTitle.Height), LabelHomeTitle.Font);
|
|
|
|
private void LabelAwayTitle_Paint(object sender, PaintEventArgs e) => LabelAwayTitle.Font = Program.GetFontSize(e.Graphics, LabelAwayTitle.Text, new Size(LabelAwayTitle.Width - 20, LabelAwayTitle.Height), LabelAwayTitle.Font);
|
|
|
|
private void ButtonHomeAdd1Foul_Click(object sender, EventArgs e)
|
|
{
|
|
Program.HomeTeam.Fouls += 1;
|
|
Program.AudienceWindow.LabelHomeTeamFouls.Text = Program.HomeTeam.Fouls.ToString();
|
|
LabelHomeFouls.Text = Program.HomeTeam.Fouls.ToString();
|
|
|
|
if (Program.HomeTeam.Fouls >= Settings.Default.BonusFoulThreshold)
|
|
{
|
|
Program.AwayTeam.Bonus = true;
|
|
Program.AudienceWindow.LabelAwayTeamBonus.Visible = true;
|
|
LabelAwayBonus.Visible = true;
|
|
}
|
|
else
|
|
{
|
|
Program.AwayTeam.Bonus = false;
|
|
Program.AudienceWindow.LabelAwayTeamBonus.Visible = false;
|
|
LabelAwayBonus.Visible = false;
|
|
}
|
|
}
|
|
|
|
private void ButtonAwayAdd1Foul_Click(object sender, EventArgs e)
|
|
{
|
|
Program.AwayTeam.Fouls += 1;
|
|
Program.AudienceWindow.LabelAwayTeamFouls.Text = Program.AwayTeam.Fouls.ToString();
|
|
LabelAwayFouls.Text = Program.AwayTeam.Fouls.ToString();
|
|
|
|
if (Program.AwayTeam.Fouls >= Settings.Default.BonusFoulThreshold)
|
|
{
|
|
Program.HomeTeam.Bonus = true;
|
|
Program.AudienceWindow.LabelHomeTeamBonus.Visible = true;
|
|
LabelHomeBonus.Visible = true;
|
|
}
|
|
else
|
|
{
|
|
Program.HomeTeam.Bonus = false;
|
|
Program.AudienceWindow.LabelHomeTeamBonus.Visible = false;
|
|
LabelHomeBonus.Visible = false;
|
|
}
|
|
}
|
|
|
|
private void MainClockMenuResetClock_Click(object sender, EventArgs e)
|
|
{
|
|
Program.MainClock.Time = Settings.Default.MainClockDefaultTime;
|
|
Program.MainClock.DisplayTime();
|
|
}
|
|
|
|
private void GameMenuSoundHorn_Click(object sender, EventArgs e) => Program.BuzzerShotClock.Play();
|
|
|
|
private void ShotClockMenuSetDefaultSecondaryTime_Click(object sender, EventArgs e)
|
|
{
|
|
if (!Settings.Default.ShotClockEnabled) MessageBox.Show("Shot Clock is disabled", "", MessageBoxButtons.OK);
|
|
else
|
|
{
|
|
TimeSpan CurrentTime = TimeSpan.FromMilliseconds(Settings.Default.ShotClockDefaultSecondaryTime);
|
|
|
|
ShotClockTimeSet ShotClockTimeSet = new();
|
|
|
|
ShotClockTimeSet.SecondsSelector.Value = CurrentTime.Seconds;
|
|
|
|
if (ShotClockTimeSet.ShowDialog() == DialogResult.OK)
|
|
{
|
|
TimeSpan NewTime = TimeSpan.FromSeconds(ShotClockTimeSet.S);
|
|
|
|
Settings.Default.ShotClockDefaultSecondaryTime = (int)NewTime.TotalMilliseconds;
|
|
Settings.Default.Save();
|
|
|
|
Clock.SCUpdateSecondaryButtonLabel();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
} |