Ejemplo n.º 1
0
        /// <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);
        }
Ejemplo n.º 2
0
 public void SetDivision(BBDivision division)
 {
     Divisions[division.id] = division;
 }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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();
        }