/// <summary> /// Get up to date information on a Division (eg, Chaotic Good) /// Will contain a name and a list of team IDs, in no particular order? /// </summary> /// <param name="subleague">ID of the division to get information on</param> /// <returns>True if successful, False on a Failure</returns> public bool UpdateDivision(string divisionID) { string divisionInformation = Download($"https://www.blaseball.com/database/division?id={divisionID}"); if (divisionInformation == "") { return(false); } BBDivision DivisionVO = JsonUtility.FromJson <BBDivision>(divisionInformation); Database.SetDivision(DivisionVO); Logger.Log($"Division: {DivisionVO.name}"); return(true); }
public void SetDivision(BBDivision division) { Divisions[division.id] = division; }
public void SetupStreamingAssets() { // Setup basics... if (!Directory.Exists(applicationConfig.RootDirectory)) { Directory.CreateDirectory(applicationConfig.RootDirectory); } string OSPath = $"{applicationConfig.RootDirectory}/blaseball"; if (!Directory.Exists(OSPath)) { Directory.CreateDirectory(OSPath); } BBLeague league = database.GetLeague(); string leaguePath = $"{OSPath}/{league.id}"; string subleaguePath = $"{leaguePath}/subleague"; string divisionPath = $"{leaguePath}/division"; string teamPath = $"{leaguePath}/team"; string playerPath = $"{leaguePath}/player"; if (!Directory.Exists(leaguePath)) { Directory.CreateDirectory(leaguePath); } if (!Directory.Exists(subleaguePath)) { Directory.CreateDirectory(subleaguePath); } if (!Directory.Exists(divisionPath)) { Directory.CreateDirectory(divisionPath); } if (!Directory.Exists(teamPath)) { Directory.CreateDirectory(teamPath); } if (!Directory.Exists(playerPath)) { Directory.CreateDirectory(playerPath); } // Subleagues List <string> textFileContents = new List <string>(); foreach (string subleague in database.GetSubleagueIDs()) { string path = $"{subleaguePath}/{subleague}"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } BBSubleague subleagueVO = database.GetSubleague(subleague); textFileContents.Add($"{subleagueVO.name}\t{subleagueVO.id}"); } CreateTextFile(textFileContents, subleaguePath); // Divisions textFileContents = new List <string>(); foreach (string division in database.GetDivisionIDs()) { string path = $"{divisionPath}/{division}"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } BBDivision divisionVO = database.GetDivision(division); textFileContents.Add($"{divisionVO.name}\t{divisionVO.id}"); } CreateTextFile(textFileContents, divisionPath); // Teams textFileContents = new List <string>(); foreach (string team in database.GetTeamIDs()) { string path = $"{teamPath}/{team}"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } BBTeam teamVO = database.GetTeam(team); textFileContents.Add($"{teamVO.fullName}\t{teamVO.id}"); string teamText = $"{teamVO.fullName}\n\"{teamVO.slogan}\""; File.WriteAllText($"{path}/info.txt", teamText); } CreateTextFile(textFileContents, teamPath); // Players textFileContents = new List <string>(); foreach (string player in database.GetPlayerIDs()) { string path = $"{playerPath}/{player}"; if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } BBPlayer playerVO = database.GetPlayer(player); textFileContents.Add($"{playerVO.name}\t{playerVO.id}"); string playerText = $"{playerVO.name}\nBatting\t\t{StarRating(BBPlayer.BatterRating(playerVO))}\nPitching\t{StarRating(BBPlayer.PitcherRating(playerVO))}\n"; playerText += $"Baserunning\t{StarRating(BBPlayer.BaserunningRating(playerVO))}\nDefense\t\t{StarRating(BBPlayer.DefenseRating(playerVO))}"; File.WriteAllText($"{path}/info.txt", playerText); } CreateTextFile(textFileContents, playerPath); void CreateTextFile(List <string> content, string directory) { content.Sort(); string fileContents = ""; for (int i = 0; i < content.Count; i++) { fileContents += content[i] + "\n"; } File.WriteAllText($"{directory}/index.tsv", fileContents); } string StarRating(float v) { string txt = ""; int halfstars = Mathf.RoundToInt(v * 10); while (halfstars >= 2) { txt += "\u2605"; halfstars -= 2; } if (halfstars == 1) { txt += "\u00BD"; } return(txt); } }
private void _BuildDatabase(string league, DatabaseConfigurationOptions options) { int shortDelay = 2000; //ms bool success = true; // Create League Information if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.LEAGUE) == DatabaseConfigurationOptions.LEAGUE) { if (league == "") { league = Constants.BLASEBALL_LEAGUE_ID; } string leagueInformation = Download($"{Constants.URL_BLASEBALL}database/league?id={league}"); if (leagueInformation == "") { OnDatabaseFailed?.Invoke(); return; } Logger.Log("League Information Downloaded"); Database.SetLeague(JsonUtility.FromJson <BBLeague>(leagueInformation)); Logger.Log("League Information Entered"); Thread.Sleep(shortDelay); } // Create Subleague Information if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.SUBLEAGUES) == DatabaseConfigurationOptions.SUBLEAGUES) { foreach (string subleague in Database.GetLeague().subleagues) { success = UpdateSubleague(subleague); if (!success) { OnDatabaseFailed?.Invoke(); return; } Thread.Sleep(shortDelay); } } // Division Information if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.DIVISIONS) == DatabaseConfigurationOptions.DIVISIONS) { foreach (string subleagueID in Database.GetSubleagueIDs()) { BBSubleague subleague = Database.GetSubleague(subleagueID); foreach (string division in subleague.divisions) { success = UpdateDivision(division); if (!success) { OnDatabaseFailed?.Invoke(); return; } Thread.Sleep(shortDelay); } } } // Teams Information if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.TEAMS) == DatabaseConfigurationOptions.TEAMS) { foreach (string divisionID in Database.GetDivisionIDs()) { BBDivision division = Database.GetDivision(divisionID); foreach (string teamID in division.teams) { success = UpdateTeam(teamID); if (!success) { OnDatabaseFailed?.Invoke(); return; } Thread.Sleep(shortDelay); } } } // Players Information if (options == DatabaseConfigurationOptions.COMPLETE || (options & DatabaseConfigurationOptions.PLAYERS) == DatabaseConfigurationOptions.PLAYERS) { List <string> players = new List <string>(); foreach (string teamID in Database.GetTeamIDs()) { BBTeam team = Database.GetTeam(teamID); foreach (string playerID in team.lineup) { players.Add(playerID); } foreach (string playerID in team.rotation) { players.Add(playerID); } } List <string> shortList = new List <string>(); while (players.Count > 0) { shortList.Add(players[0]); players.RemoveAt(0); if (shortList.Count >= 32 || players.Count == 0) { success = UpdatePlayers(shortList.ToArray(), Database); if (!success) { OnDatabaseFailed?.Invoke(); return; } Thread.Sleep(shortDelay); shortList = new List <string>(); } } } if (options == DatabaseConfigurationOptions.COMPLETE) { Database.lastUpdated = Helper.GetUnixTime(); } Logger.Log("Live Database Downloaded. Saving Local Datablase"); Database.Save(); FileLoader.SetupStreamingAssets(); OnDatabaseCreated?.Invoke(); }