コード例 #1
0
ファイル: CharacterSheet.cs プロジェクト: IanWigle/DiscordBot
        static public int DetermineMaxFeetByRank(CharacterRank rank)
        {
            switch (rank)
            {
            case CharacterRank.Acolyte:
                return(10);

            case CharacterRank.Apprentice:
                return(15);

            case CharacterRank.Knight:
                return(20);

            case CharacterRank.Lord:
                return(30);

            case CharacterRank.Archon:
                return(40);

            case CharacterRank.Elder:
                return(50);

            case CharacterRank.Emperor:
                return(60);

            default:
                return(0);
            }
        }
コード例 #2
0
        private async Task SeedGuildRanksAsync(WowGuildManagerDbContext context)
        {
            var guildrankNames = new List <string>
            {
                GuildRanksConstants.GuildMaster,
                GuildRanksConstants.Officer,
                GuildRanksConstants.Veteran,
                GuildRanksConstants.Raider,
                GuildRanksConstants.PvP,
                GuildRanksConstants.Member,
                GuildRanksConstants.Alt,
            };

            var guildRanks = new List <CharacterRank>();

            foreach (var guildRankName in guildrankNames)
            {
                var guildRank = new CharacterRank
                {
                    Name = guildRankName
                };

                guildRanks.Add(guildRank);
            }

            await context.CharacterRanks.AddRangeAsync(guildRanks);

            await context.SaveChangesAsync();
        }
コード例 #3
0
ファイル: CharacterSheet.cs プロジェクト: IanWigle/DiscordBot
 public CharacterSheet(string _name, CharacterRank _rank, CharacterAlignment _alignment, List <string> abilities, string _author)
 {
     Name                 = _name;
     rank                 = _rank;
     alignment            = _alignment;
     Abilities            = abilities;
     Author               = _author;
     characterDescription = "";
 }
コード例 #4
0
 public Ability(string _name, string _desc, string _detailDesc, int _skill, string _prereq, CharacterRank _rank, AbilityCategory _category, CharacterAlignment _alignment)
 {
     Name                = _name;
     Description         = _desc;
     detailedDescription = _detailDesc;
     skillCost           = _skill;
     prereqAbilities     = new ArrayList();
     prereqAbilities.Add(_prereq);
     rank      = _rank;
     category  = _category;
     isFeat    = (category == AbilityCategory.Feat) ? true : false;
     alignment = _alignment;
 }
コード例 #5
0
ファイル: CharacterSheet.cs プロジェクト: IanWigle/DiscordBot
 public CharacterSheet(string _name, List <string> _abilities, CharacterRank _rank, CharacterAlignment _alignment)
 {
     Name      = _name;
     Abilities = new List <string>(_abilities);
     rank      = _rank;
     alignment = _alignment;
     //max_skill_points = DetermineMaxSkillByRank(_rank);
     //current_skill_points = CalculateCurrentSkillPoints();
     //max_feat_points = DetermineMaxFeetByRank(_rank);
     //current_feat_points = CalculateCurrentFeatPoints();
     lastEdit             = "UNKNOWN";
     wasChanged           = false;
     characterDescription = "";
 }
コード例 #6
0
ファイル: CharacterSheet.cs プロジェクト: IanWigle/DiscordBot
 public CharacterSheet(string _name, CharacterRank _rank, CharacterAlignment _alignment, List <string> abilities, string _lastEdit, string author)
 {
     Name      = _name;
     Abilities = abilities;
     rank      = _rank;
     alignment = _alignment;
     //max_skill_points = DetermineMaxSkillByRank(_rank);
     //current_skill_points = CalculateCurrentSkillPoints();
     //max_feat_points = DetermineMaxFeetByRank(_rank);
     //current_feat_points = CalculateCurrentFeatPoints();
     lastEdit             = _lastEdit;
     wasChanged           = false;
     Author               = author;
     characterDescription = "";
 }
コード例 #7
0
        private void RunServer()
        {
            while (true)
            {
                if (listener.Pending())
                {
                    TcpClient     client = listener.AcceptTcpClient();
                    NetworkStream ns     = client.GetStream();

                    Console.WriteLine("TCP: Incoming Character . . .");
                    byte[] bytes     = new byte[MAX_BYTE_READ];
                    int    bytesRead = ns.Read(bytes, 0, bytes.Length);
                    Console.WriteLine("TCP: Translating bytes . . .");
                    string jsonString = Encoding.ASCII.GetString(bytes, 0, bytesRead);
#if DEBUG
                    Console.WriteLine(jsonString);
#endif

                    using (JsonDocument document = JsonDocument.Parse(jsonString))
                    {
                        JsonElement root = document.RootElement;

                        bool   overrideExisting = false;
                        string Author           = "";
                        string Date             = "";

                        if (root.TryGetProperty("submissionDetails", out JsonElement datapackElement))
                        {
                            if (datapackElement.TryGetProperty("Author", out JsonElement authorElement))
                            {
                                Author = authorElement.GetString();
                            }
                            if (datapackElement.TryGetProperty("Date", out JsonElement dateElement))
                            {
                                Date = dateElement.GetString();
                            }
                            if (datapackElement.TryGetProperty("OverrideSubmission", out JsonElement overrideElement))
                            {
                                overrideExisting = overrideElement.GetBoolean();
                            }
                        }

                        string             CharacterName        = "";
                        string             characterDescription = "";
                        CharacterRank      characterRank        = CharacterRank.NoRank;
                        CharacterAlignment characterAlignment   = CharacterAlignment.None;
                        List <string>      abilities            = new List <string>();

                        if (root.TryGetProperty("characterSheet", out JsonElement characterElement))
                        {
                            if (characterElement.TryGetProperty("Name", out JsonElement nameElement))
                            {
                                CharacterName = nameElement.GetString();
                            }
                            if (characterElement.TryGetProperty("rank", out JsonElement rankElement))
                            {
                                characterRank = (CharacterRank)rankElement.GetInt32();
                            }
                            if (characterElement.TryGetProperty("alignment", out JsonElement alignElement))
                            {
                                characterAlignment = (CharacterAlignment)alignElement.GetInt32() + 1;
                            }
                            if (characterElement.TryGetProperty("characterDescription", out JsonElement descElement))
                            {
                                characterDescription = descElement.GetString();
                            }
                            if (root.TryGetProperty("Abilities", out JsonElement jsonElement3))
                            {
                                foreach (var abilityElem in jsonElement3.EnumerateArray())
                                {
                                    abilities.Add(abilityElem.GetString());
                                }
                            }
                        }

                        CharacterSheet characterSheet = new CharacterSheet(CharacterName, characterRank, characterAlignment, abilities, Date, Author);
                        characterSheet.characterDescription = characterDescription;

                        Program.characterLibrary.AddCharacter(characterSheet, overrideExisting, true);
                        Console.WriteLine($"New character sheet added to the bots library.");
                    }

                    ns.Close();
                    client.Close();
                }
            }
        }
コード例 #8
0
ファイル: InfoImport.cs プロジェクト: IanWigle/DiscordBot
        static public List <CharacterSheet> ImportCharacterSheetsFromDisk()
        {
            List <CharacterSheet> importedSheets = new List <CharacterSheet>();

            string curDir = Directory.GetCurrentDirectory();

            if (!Directory.Exists($"{curDir}\\CharacterSheets"))
            {
                Directory.CreateDirectory($"{curDir}\\CharacterSheets");
                return(importedSheets);
            }

            // start with all txts
            DirectoryInfo directoryInfo = new DirectoryInfo(curDir + "\\CharacterSheets\\");

            FileInfo[] files = directoryInfo.GetFiles("*.txt");

            foreach (FileInfo file in files)
            {
                string jsonString = File.ReadAllText(file.FullName);

                using (JsonDocument document = JsonDocument.Parse(jsonString))
                {
                    JsonElement root = document.RootElement;

                    string             charName      = "";
                    string             charDesc      = "";
                    string             charAuth      = "";
                    CharacterRank      charRank      = CharacterRank.NoRank;
                    CharacterAlignment charAlignment = CharacterAlignment.None;
                    List <string>      abilities     = new List <string>();

                    if (root.TryGetProperty("Name", out JsonElement nameElement))
                    {
                        charName = nameElement.GetString();
                    }
                    if (root.TryGetProperty("rank", out JsonElement rankElement))
                    {
                        charRank = (CharacterRank)rankElement.GetInt32();
                    }
                    if (root.TryGetProperty("alignment", out JsonElement alignElement))
                    {
                        charAlignment = (CharacterAlignment)alignElement.GetInt32();
                    }
                    if (root.TryGetProperty("characterDescription", out JsonElement descElement))
                    {
                        charDesc = descElement.GetString();
                    }
                    if (root.TryGetProperty("Abilities", out JsonElement prereqsElement))
                    {
                        foreach (var abilityElem in prereqsElement.EnumerateArray())
                        {
                            abilities.Add(abilityElem.GetString());
                        }
                    }
                    if (root.TryGetProperty("Author", out JsonElement authorElement))
                    {
                        charAuth = authorElement.GetString();
                    }

                    CharacterSheet characterSheet = new CharacterSheet(charName, charRank, charAlignment, abilities, charAuth);
                    characterSheet.characterDescription = charDesc;

                    if (characterSheet.IsValid())
                    {
                        importedSheets.Add(characterSheet);
                    }
                }
            }

            return(importedSheets);
        }
コード例 #9
0
ファイル: InfoImport.cs プロジェクト: IanWigle/DiscordBot
        /***********************************************************************************************
        * LoadAbilityLibrary -- Will load library json from AbilityLibrary.txt and cast the json      *
        *                       format to the needed Ability class template.                          *
        *                                                                                             *
        *                                                                                             *
        *                                                                                             *
        * INPUT:    Nothing                                                                           *
        *                                                                                             *
        * OUTPUT:   Nothing                                                                           *
        *                                                                                             *
        * WARNINGS: Should any changes be made in the ability class (such as the addition of vars),   *
        *           then the validation check must be updated to read and configure any updated       *
        *           class variables. Ability class constructor will set any vars to 'invalid' by      *
        *           default.                                                                          *
        *                                                                                             *
        * HISTORY:                                                                                    *
        *    2020-09-25 11:12AM EST : Created                                                         *
        *    2020-10-01 03:38PM EST : Added input param for if we are refreshing the library.         *
        *=============================================================================================*/
        static public void LoadAbilityLibrary(bool isRefreshing = true)
        {
            string curDir = Directory.GetCurrentDirectory() + "\\Lists\\";

            if (!Directory.Exists(curDir))
            {
                Directory.CreateDirectory(curDir);
                Console.WriteLine("Error! List Folder could not be found! Made directory at " + curDir);
                return;
            }

            string JsonString = System.IO.File.ReadAllText(curDir + "AbilityLibrary.txt");

            using (JsonDocument document = JsonDocument.Parse(JsonString))
            {
                List <Ability> abilityList = new List <Ability>();

                JsonElement root = document.RootElement;
                foreach (JsonElement ability in root.EnumerateArray())
                {
                    string             name  = "";
                    string             desc  = "";
                    CharacterRank      rank  = CharacterRank.NoRank;
                    CharacterAlignment align = CharacterAlignment.None;
                    AbilityCategory    cat   = AbilityCategory.NoCategory;
                    int           skill      = 0;
                    List <string> prereqs    = new List <string>();

                    if (ability.TryGetProperty("Name", out JsonElement nameElement))
                    {
                        name = nameElement.GetString();
                    }
                    if (ability.TryGetProperty("rank", out JsonElement rankElement))
                    {
                        rank = (CharacterRank)rankElement.GetInt32();
                    }
                    if (ability.TryGetProperty("Description", out JsonElement descElement))
                    {
                        desc = descElement.GetString();
                    }
                    if (ability.TryGetProperty("alignment", out JsonElement alignElement))
                    {
                        align = (CharacterAlignment)alignElement.GetInt32();
                    }
                    if (ability.TryGetProperty("skillCost", out JsonElement skillElement))
                    {
                        skill = skillElement.GetInt32();
                    }
                    if (ability.TryGetProperty("category", out JsonElement categElement))
                    {
                        cat = (AbilityCategory)categElement.GetInt32();
                    }
                    if (ability.TryGetProperty("Prereqs", out JsonElement prereqsElement))
                    {
                        foreach (var abilityElem in prereqsElement.EnumerateArray())
                        {
                            if (abilityElem.TryGetProperty("Name", out JsonElement prereqName))
                            {
                                prereqs.Add(prereqName.GetString());
                            }
                        }
                    }

                    Ability ab = new Ability(name, desc, "", skill, prereqs, rank, cat, align);

                    if (ab.IsValid())
                    {
                        abilityList.Add(ab);
                    }
                }

                foreach (Ability ab in abilityList)
                {
                    Program.abilityLibrary.AddAbility(ab);
                }
            }

            System.Console.WriteLine("Loaded Ability List");
        }