private void LoadPlayer()
{
StatsDatabase Driver;
// Establish DB connection
try
{
Driver = new StatsDatabase();
}
catch (DbConnectException Ex)
{
ExceptionForm.ShowDbConnectError(Ex);
HttpServer.Stop();
Load += (s, e) => Close(); // Close form
return;
}
// Fetch Player from database
SelectQueryBuilder Builder = new SelectQueryBuilder(Driver);
Builder.SelectFromTable("player");
Builder.SelectColumns(
"name", "score", "cmdscore", "skillscore", "teamscore", "joined",
"country", "rank", "wins", "losses", "permban", "clantag", "isbot");
Builder.AddWhere("id", Comparison.Equals, Pid);
List<Dictionary<string, object>> Rows = Driver.ExecuteReader(Builder.BuildCommand());
Player = Rows[0];
// Set window title
this.Text = String.Concat(Player["name"].ToString().Trim(), " (", Pid, ")");
// Set country flag
try
{
string Country = String.IsNullOrEmpty(Player["country"].ToString()) ? "XX" : Player["country"].ToString();
CountryPicture.Image = Image.FromStream(Program.GetResource("BF2Statistics.Resources." + Country.ToUpper() + ".png"));
}
catch { }
// Joined Label
int Joind = Int32.Parse(Player["joined"].ToString());
DateTime D = DateTime.UtcNow.FromUnixTimestamp(Joind);
LabelJoined.Text = String.Concat(D.ToString("yyyy-MM-dd HH:mm"), " GMT");
Tipsy.SetToolTip(LabelJoined, String.Concat(D.ToLocalTime().ToString("yyyy-MM-dd HH:mm"), " Local Time."));
// Fill out the rest of the labels
LabelNick.Text = Player["name"].ToString().Trim();
ClanTagBox.Text = Player["clantag"].ToString();
RankSelect.SelectedIndex = Int32.Parse(Player["rank"].ToString());
PermBanSelect.SelectedIndex = Int32.Parse(Player["permban"].ToString());
LabelGlobalScore.Text = Player["score"].ToString();
LabelWinLoss.Text = String.Concat(Player["wins"], " / ", Player["losses"]);
LabelTeamScore.Text = Player["teamscore"].ToString();
LabelCombatScore.Text = Player["skillscore"].ToString();
LabelCommandScore.Text = Player["cmdscore"].ToString();
// Get Leaderboard Position
Rows = Driver.Query("SELECT COUNT(id) as count FROM player WHERE score > @P0", Int32.Parse(Player["score"].ToString()));
int Position = Int32.Parse(Rows[0]["count"].ToString()) + 1;
LabelPosition.Text = Position.ToString();
SaveBtn.Enabled = false;
// Lock unlocks button if player is Bot
if (Int32.Parse(Player["isbot"].ToString()) > 0)
ResetUnlocksBtn.Enabled = false;
// Close Connection
Driver.Dispose();
}