Files
cs-oo-project/Online Gokkantoor/Globals/Classes/Game.cs

130 lines
3.8 KiB
C#

using System;
using Globals.Interfaces;
using Newtonsoft.Json;
using static Globals.main;
namespace Globals.classes
{
public class Game : IGame
{
[JsonConstructor]
public Game(int Id, Ploeg home, Ploeg away, DateTime date)
{
homeSetBool = false;
awaySetBool = false;
this.Id = Id;
this.home = home;
this.away = away;
this.home.scoreChanged += homeSet;
this.away.scoreChanged += awaySet;
this.date = date;
}
public Game(Ploeg home, Ploeg away, DateTime d)
{
homeSetBool = false;
awaySetBool = false;
this.home = home;
this.away = away;
this.home.scoreChanged += homeSet;
this.away.scoreChanged += awaySet;
this.date = d;
}
public Game(Ploeg home, Ploeg away, DateTime d, int scoreHome, int scoreAway)
{
homeSetBool = false;
awaySetBool = false;
this.home = home;
this.away = away;
this.home.scoreChanged += homeSet;
this.away.scoreChanged += awaySet;
this.home.setScore(scoreHome);
this.away.setScore(scoreAway);
this.date = d;
}
public Game(int id, Ploeg home, Ploeg away)
{
homeSetBool = false;
awaySetBool = false;
Id = id;
this.home = home ?? throw new ArgumentNullException(nameof(home));
this.away = away ?? throw new ArgumentNullException(nameof(away));
this.home.scoreChanged += homeSet;
this.away.scoreChanged += awaySet;
}
public Game(int id, Ploeg home, Ploeg away, int scoreHome, int scoreAway)
{
homeSetBool = false;
awaySetBool = false;
Id = id;
this.home = home ?? throw new ArgumentNullException(nameof(home));
this.away = away ?? throw new ArgumentNullException(nameof(away));
this.home.scoreChanged += homeSet;
this.away.scoreChanged += awaySet;
this.home.setScore(scoreHome);
this.away.setScore(scoreAway);
}
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("home")]
public Ploeg home { get; set; }
[JsonProperty("away")]
public Ploeg away { get; set; }
[JsonProperty("Date")]
public DateTime date { get; set; } //y m d
private bool homeSetBool;
private bool awaySetBool;
private void homeSet (object s, EventArgs e)
{
homeSetBool = true;
}
private void awaySet(object s, EventArgs e)
{
awaySetBool = true;
}
public state getWinner()
{
if (!this.home.scoreSet || !this.away.scoreSet)
{
if (this.home.score > this.away.score) return state.home;
else if (this.away.score > this.home.score) return state.away;
else return state.draw;
} else
{
throw new Exception("No scores were set yet. Please set scores for the game first.");
}
}
public override bool Equals(object obj)
{
try
{
Game gam = (Game)obj;
}
catch (Exception e)
{
return false;
}
Game ga = (Game)obj;
return this.Id == ga.Id;
}
public override int GetHashCode()
{
return base.GetHashCode();
}
public override string ToString()
{
return this.Id + ": " + this.home.ToString() + " / " + this.away.ToString();
}
}
}