mirror of
https://github.com/islehorse/HISP.git
synced 2025-04-22 20:55:52 +12:00
Add Feature pt1
This commit is contained in:
parent
a184e4d735
commit
092534e331
131 changed files with 3113 additions and 1418 deletions
186
HorseIsleServer/LibHISP/Player/Highscore.cs
Normal file
186
HorseIsleServer/LibHISP/Player/Highscore.cs
Normal file
|
@ -0,0 +1,186 @@
|
|||
using HISP.Server;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace HISP.Player
|
||||
{
|
||||
public class Highscore
|
||||
{
|
||||
public class HighscoreTableEntry
|
||||
{
|
||||
public int UserId;
|
||||
public string GameName;
|
||||
public int Wins;
|
||||
public int Looses;
|
||||
public int TimesPlayed;
|
||||
public int Score;
|
||||
public string Type;
|
||||
}
|
||||
public HighscoreTableEntry[] HighscoreList
|
||||
{
|
||||
get
|
||||
{
|
||||
return highScoreList.ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
private User baseUser;
|
||||
private List<HighscoreTableEntry> highScoreList = new List<HighscoreTableEntry>();
|
||||
|
||||
public Highscore(User user)
|
||||
{
|
||||
baseUser = user;
|
||||
HighscoreTableEntry[] highscores = Database.GetPlayerHighScores(user.Id);
|
||||
foreach (HighscoreTableEntry highscore in highscores)
|
||||
highScoreList.Add(highscore);
|
||||
}
|
||||
public HighscoreTableEntry GetHighscore(string gameTitle)
|
||||
{
|
||||
foreach (HighscoreTableEntry highscore in HighscoreList)
|
||||
{
|
||||
if (highscore.GameName == gameTitle)
|
||||
{
|
||||
return highscore;
|
||||
}
|
||||
}
|
||||
throw new KeyNotFoundException("Highscore for " + gameTitle + " Not found.");
|
||||
}
|
||||
public bool HasHighscore(string gameTitle)
|
||||
{
|
||||
foreach(HighscoreTableEntry highscore in HighscoreList)
|
||||
{
|
||||
if(highscore.GameName == gameTitle)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public bool Loose(string gameTitle)
|
||||
{
|
||||
bool isNewScore = true;
|
||||
|
||||
if (!HasHighscore(gameTitle))
|
||||
{
|
||||
Database.AddNewWinner(baseUser.Id, gameTitle, 0, 1);
|
||||
|
||||
HighscoreTableEntry newHighscore = new HighscoreTableEntry();
|
||||
newHighscore.UserId = baseUser.Id;
|
||||
newHighscore.GameName = gameTitle;
|
||||
newHighscore.Wins = 0;
|
||||
newHighscore.Looses = 0;
|
||||
newHighscore.TimesPlayed = 1;
|
||||
newHighscore.Wins = 0;
|
||||
newHighscore.Looses = 1;
|
||||
newHighscore.Type = "WINLOSS";
|
||||
highScoreList.Add(newHighscore);
|
||||
|
||||
return isNewScore;
|
||||
}
|
||||
else
|
||||
{
|
||||
Database.UpdateHighscoreLooseGame(baseUser.Id, gameTitle);
|
||||
|
||||
for (int i = 0; i < highScoreList.Count; i++)
|
||||
{
|
||||
|
||||
if (highScoreList[i].GameName == gameTitle)
|
||||
{
|
||||
highScoreList[i].TimesPlayed += 1;
|
||||
highScoreList[i].Looses++;
|
||||
}
|
||||
}
|
||||
|
||||
return isNewScore;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public bool Win(string gameTitle)
|
||||
{
|
||||
bool isNewScore = true;
|
||||
|
||||
if (!HasHighscore(gameTitle))
|
||||
{
|
||||
Database.AddNewWinner(baseUser.Id, gameTitle, 1, 0);
|
||||
|
||||
HighscoreTableEntry newHighscore = new HighscoreTableEntry();
|
||||
newHighscore.UserId = baseUser.Id;
|
||||
newHighscore.GameName = gameTitle;
|
||||
newHighscore.Wins = 0;
|
||||
newHighscore.Looses = 0;
|
||||
newHighscore.TimesPlayed = 1;
|
||||
newHighscore.Wins = 1;
|
||||
newHighscore.Looses = 0;
|
||||
newHighscore.Type = "WINLOSS";
|
||||
highScoreList.Add(newHighscore);
|
||||
|
||||
return isNewScore;
|
||||
}
|
||||
else
|
||||
{
|
||||
Database.UpdateHighscoreWinGame(baseUser.Id, gameTitle);
|
||||
|
||||
for (int i = 0; i < highScoreList.Count; i++)
|
||||
{
|
||||
|
||||
if (highScoreList[i].GameName == gameTitle)
|
||||
{
|
||||
highScoreList[i].TimesPlayed += 1;
|
||||
highScoreList[i].Wins++;
|
||||
}
|
||||
}
|
||||
|
||||
return isNewScore;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public bool UpdateHighscore(string gameTitle, int score, bool time)
|
||||
{
|
||||
bool isNewScore = true;
|
||||
|
||||
if (!HasHighscore(gameTitle))
|
||||
{
|
||||
string type = time ? "TIME" : "SCORE";
|
||||
Database.AddNewHighscore(baseUser.Id, gameTitle, score, type);
|
||||
|
||||
HighscoreTableEntry newHighscore = new HighscoreTableEntry();
|
||||
newHighscore.UserId = baseUser.Id;
|
||||
newHighscore.GameName = gameTitle;
|
||||
newHighscore.Wins = 0;
|
||||
newHighscore.Looses = 0;
|
||||
newHighscore.TimesPlayed = 1;
|
||||
newHighscore.Score = score;
|
||||
newHighscore.Type = type;
|
||||
highScoreList.Add(newHighscore);
|
||||
|
||||
return isNewScore;
|
||||
}
|
||||
else
|
||||
{
|
||||
int currentScore = GetHighscore(gameTitle).Score;
|
||||
if (score < currentScore)
|
||||
{
|
||||
score = currentScore;
|
||||
isNewScore = false;
|
||||
}
|
||||
|
||||
Database.UpdateHighscore(baseUser.Id, gameTitle, score);
|
||||
|
||||
for(int i = 0; i < highScoreList.Count; i++)
|
||||
{
|
||||
|
||||
if(highScoreList[i].GameName == gameTitle)
|
||||
{
|
||||
highScoreList[i].TimesPlayed += 1;
|
||||
highScoreList[i].Score = score;
|
||||
}
|
||||
}
|
||||
|
||||
return isNewScore;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue