Пример #1
0
        private void LoadData(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.InitialDirectory = @"C:\";
            dialog.Filter = "mm files (*.mm)|*.mm";
            dialog.RestoreDirectory = true;

            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Data jsonMonster = new Data();
                jsonMonster = JsonConvert.DeserializeObject<Data>(System.IO.File.ReadAllText(dialog.FileName));
                TraitsList.Items.Clear();
                
                Monster.Input(jsonMonster);

                currentCR = Monster.CR;
                ChallengeRatingDropDown.Text = "";
                ChallengeRatingDropDown.SelectedText = Help.FindCRByIndex(Monster.CR.Index).CR;
                crChangedUpdateProficiency(null, null);

                AlignmentDropDown.Text = "";
                AlignmentDropDown.SelectedText = Monster.CreatureAlign;

                StrUpDown.Value = Monster.STR;
                DexUpDown.Value = Monster.DEX;
                ConUpDown.Value = Monster.CON;
                WisUpDown.Value = Monster.WIS;
                IntUpDown.Value = Monster.INT;
                ChaUpDown.Value = Monster.CHA;

                string[] speeds = Monster.Speed.Split(',');
                foreach (string speed in speeds)
                {                    
                    string check = speed.Split(':')[0].Trim();                    
                    switch (check)
                    {
                        case "Burrow":                            
                            int Burrow = 0;
                            int.TryParse(speed.Split(':')[1], out Burrow);
                            burrowUpDown.Value = Burrow;
                            break;
                        case "Climb":                            
                            int Climb = 0;
                            int.TryParse(speed.Split(':')[1], out Climb);
                            ClimbUpDown.Value = Climb;
                            break;
                        case "Fly":                            
                            int Fly = 0;                                                        
                            if (speed.Split(':')[1].Contains("(Hover)"))
                            {
                                HoverCheckBox.Checked = true;
                                int.TryParse(speed.Split(':')[1].Replace(" (Hover)", ""), out Fly);
                            }
                            else
                            {
                                int.TryParse(speed.Split(':')[1], out Fly);
                            }
                            FlyUpDown.Value = Fly;
                            break;
                        case "Swim":                            
                            int Swim = 0;
                            int.TryParse(speed.Split(':')[1], out Swim);
                            SwimUpDown.Value = Swim;
                            break;
                        default:                            
                            try
                            {
                                int temp = 0;
                                int.TryParse(check, out temp);
                                SpeedUpDown.Value = temp;
                            }
                            catch { }                            
                            break;
                    }                    
                }
                
                foreach (Ability item in Monster._Abilities)
                {
                    TraitsList.Items.Add("Ability: " + item.Title);
                }

                foreach (Ability item in Monster._Attacks)
                {
                    TraitsList.Items.Add("Attack: " + item.Title);
                }

                foreach (string language in Monster._Languages)
                {
                    TraitsList.Items.Add("Language: " + language);
                }

                foreach (string senses in Monster._Senses)
                {
                    TraitsList.Items.Add("Sense: " + senses);
                }

                foreach (string CImmunity in Monster.ConditionImmunities)
                {
                    TraitsList.Items.Add("Condition Immunity: " + CImmunity);
                }

                foreach (string DImmunities in Monster.DamageImmunities)
                {
                    TraitsList.Items.Add("Damage Immunity: " + DImmunities);
                }

                foreach (string DResistance in Monster.DamageResistances)
                {
                    TraitsList.Items.Add("Damage Resistance: " + DResistance);
                }

                foreach (string DVulnerability in Monster.DamageVulnerability)
                {
                    TraitsList.Items.Add("Damage Vulnerability: " + DVulnerability);
                }

                foreach (string SavingThrow in Monster.SavingThrowBonuses)
                {
                    string temp = SavingThrow.Split(' ')[0];
                    int tempBonus = 0;
                    int.TryParse(SavingThrow.Split('+')[1], out tempBonus);

                    switch (temp)
                    {
                        case "Str":
                            StrSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Dex":
                            DexSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Con":
                            ConSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Int":
                            IntSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Wis":
                            WisSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Cha":
                            ChaSaveBonusUpDown.Value = tempBonus;
                            break;
                    }
                }

                foreach (string SkillBonus in Monster.SkillBonuses)
                {                    
                    TraitsList.Items.Add(SkillBonus);
                }

                HitDieTextBox.Text = Monster.HP;
                try
                {
                    string hpString = Monster.HP.Split('(')[1].Replace(')', ' ').Trim().Split('+')[0];
                    int DiceSize;
                    int DiceNumber;
                    int.TryParse(hpString.Split('d')[0], out DiceNumber);
                    int.TryParse(hpString.Split('d')[1], out DiceSize);

                    HitDieUpDown.Value = DiceNumber;
                    HitDieDropDown.Text = "";
                    HitDieDropDown.SelectedText = "d" + DiceSize;
                }
                catch { }

                try
                {
                    int ACValue = 0;
                    int.TryParse(Monster.AC.Split(' ')[0], out ACValue);

                    ACUpDown.Value = ACValue;
                    ACSourceTextBox.Text = Monster.AC.Split(' ')[1];
                }
                catch { }

                MonsterNameTextBox.Text = "";
                SizeDropDown.Text = "";
                TypeDropDown.Text = "";
                TagDropDown.Text = "";

                MonsterNameTextBox.Text = Monster.CreatureName;
                SizeDropDown.SelectedText = Monster.CreatureSize;
                TypeDropDown.SelectedText = Monster.CreatureType.Split(' ')[0];
                try { TagDropDown.SelectedText = Monster.CreatureType.Split(' ')[1].Replace('(', ' ').Replace(')', ' ').Trim(); }
                catch { }

                //Monster.SkillBonuses.Clear();
                Monster.Clear();
            }
        }        
Пример #2
0
        private void SaveData(object sender, EventArgs e)
        {            
            Data jsonMonster = new Data();
            GenerateMonsterData();
            Monster.Output(jsonMonster);

            SaveFileDialog dialog = new SaveFileDialog();
            dialog.InitialDirectory = @"C:\";
            dialog.Filter = "mm files (*.mm)|*.mm";
            dialog.RestoreDirectory = true;

            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                System.IO.File.WriteAllText(dialog.FileName, JsonConvert.SerializeObject(jsonMonster));
            }
        }
Пример #3
0
 // Saves the monster data to the data model.
 public static void Output(Data fillTarget)
 {
     fillTarget._Abilities = _Abilities;
     fillTarget._Actions = _Actions;
     fillTarget._Legendaries = _Legendaries;
     fillTarget._Reactions = _Reactions;
     fillTarget._Languages = _Languages;
     fillTarget._Senses = _Senses;
     fillTarget.AC = AC;
     fillTarget.CHA = CHA;
     fillTarget.CON = CON;
     fillTarget.ConditionImmunities = ConditionImmunities;
     fillTarget.CR = CR;
     fillTarget.CreatureAlign = CreatureAlign;
     fillTarget.CreatureName = CreatureName;
     fillTarget.CreatureSize = CreatureSize;
     fillTarget.CreatureType = CreatureType;
     fillTarget.DamageImmunities = DamageImmunities;
     fillTarget.DamageResistances = DamageResistances;
     fillTarget.DamageVulnerability = DamageVulnerability;
     fillTarget.DEX = DEX;
     fillTarget.HP = HP;
     fillTarget.INT = INT;
     //fillTarget.output = output;
     fillTarget.proficency = proficency;
     fillTarget.SavingThrowBonuses = SavingThrowBonuses;
     fillTarget.SkillBonuses = SkillBonuses;
     fillTarget.Speed = Speed;
     fillTarget.STR = STR;
     fillTarget.Title = Title;
     fillTarget.WIS = WIS;
 }
Пример #4
0
 // Loads the monster data from data model.
 public static void Input(Data source)
 {
     Monster.Clear(true);
     _Abilities = source._Abilities;
     _Actions = source._Actions;
     _Legendaries = source._Legendaries;
     _Reactions = source._Reactions;
     _Languages = source._Languages;
     _Senses = source._Senses;
     AC = source.AC;
     CHA = source.CHA;
     CON = source.CON;
     ConditionImmunities = source.ConditionImmunities;
     CR = source.CR;
     CreatureAlign = source.CreatureAlign;
     CreatureName = source.CreatureName;
     CreatureSize = source.CreatureSize;
     CreatureType = source.CreatureType;
     DamageImmunities = source.DamageImmunities;
     DamageResistances = source.DamageResistances;
     DamageVulnerability = source.DamageVulnerability;
     DEX = source.DEX;
     HP = source.HP;
     INT = source.INT;
     //fillTarget.output = output;
     proficency = source.proficency;
     SavingThrowBonuses = source.SavingThrowBonuses;
     SkillBonuses = source.SkillBonuses;
     Speed = source.Speed;
     STR = source.STR;
     Title = source.Title;
     WIS = source.WIS;
 }
Пример #5
0
        // Converts JSON string to Monster, loading data.
        private void LoadData(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.InitialDirectory = Help.LastDirectory;
            dialog.Filter = "mm files (*.mm)|*.mm";
            dialog.RestoreDirectory = true;

            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Help.LastDirectory = dialog.FileName;

                Data jsonMonster = new Data();
                jsonMonster = JsonConvert.DeserializeObject<Data>(System.IO.File.ReadAllText(dialog.FileName));
                TraitsList.Items.Clear();
                TraitsList.Sorted = false;

                Monster.Input(jsonMonster);                

                currentCR = Monster.CR;
                ChallengeRatingDropDown.Text = "";
                ChallengeRatingDropDown.SelectedText = Help.FindCRByIndex(Monster.CR.Index).CR;
                crChangedUpdateProficiency(null, null);
                
                AlignmentDropDown.Text = "";
                AlignmentDropDown.SelectedText = Monster.CreatureAlign;

                StrUpDown.Value = Monster.STR;
                DexUpDown.Value = Monster.DEX;
                ConUpDown.Value = Monster.CON;
                WisUpDown.Value = Monster.WIS;
                IntUpDown.Value = Monster.INT;
                ChaUpDown.Value = Monster.CHA;

                SwimUpDown.Enabled = true;
                SpeedUpDown.Enabled = true;
                ClimbUpDown.Enabled = true;
                burrowUpDown.Enabled = true;
                FlyUpDown.Enabled = true;
                HoverCheckBox.Checked = false;

                string[] speeds = Monster.Speed.Split(',');

                // Speed stuff
                #region
                foreach (string speed in speeds)
                {
                    bool custom = false;
                    string customString = "";

                    // So this checks each bit of the line for something that isn't a speed tag, ft. or hover.
                    // If that happens, it makes sure it isn't a number first. And if that's the case, then it switches custom.
                    foreach (string x in speed.Split(' '))
                    {                        
                        if (!String.IsNullOrEmpty(x) || !String.IsNullOrWhiteSpace(x))
                        {                            
                            if (x != "burrow:" && x != "fly:" && x != "climb:" && x != "swim:" && x != "ft." && x != "(hover)")
                            {                                
                                int tester = 0;
                                if (!int.TryParse(x.Trim(), out tester))
                                {                                    
                                    custom = true;
                                    customString += x + " ";
                                }
                            }
                        }
                    }

                    if (!custom)
                    {
                        string check = speed.Split(':')[0].Trim().ToLower();
                        switch (check)
                        {
                            case "burrow":
                                try
                                {
                                    int Burrow = 0;
                                    int.TryParse(speed.Split(':')[1].Replace("ft.", ""), out Burrow);
                                    burrowUpDown.Value = Burrow;
                                }
                                catch { }
                                break;
                            case "climb":
                                try
                                {
                                    int Climb = 0;
                                    int.TryParse(speed.Split(':')[1].Replace("ft.", ""), out Climb);
                                    ClimbUpDown.Value = Climb;
                                }
                                catch { }
                                break;
                            case "fly":
                                try
                                {
                                    int Fly = 0;
                                    if (speed.Split(':')[1].Contains("(hover)"))
                                    {
                                        HoverCheckBox.Checked = true;
                                        int.TryParse(speed.Split(':')[1].Replace("ft.", "").Replace(" (hover)", ""), out Fly);
                                    }
                                    else
                                    {
                                        int.TryParse(speed.Split(':')[1].Replace("ft.", ""), out Fly);
                                    }
                                    FlyUpDown.Value = Fly;
                                }
                                catch { }
                                break;
                            case "swim":
                                try
                                {
                                    int Swim = 0;
                                    int.TryParse(speed.Split(':')[1].Replace("ft.", ""), out Swim);
                                    SwimUpDown.Value = Swim;
                                }
                                catch { }
                                break;
                            default:
                                try
                                {
                                    int temp = 0;
                                    int.TryParse(check.Replace("ft.", ""), out temp);
                                    SpeedUpDown.Value = temp;
                                }
                                catch { }
                                break;
                        }
                    }
                    else
                    {
                        Console.WriteLine(speed + " is a custom speed");
                        int tester = 0;
                        string whichSpeed = "";
                        NumericUpDown target = null;
                        bool isFly = false;
                            
                        // custom Speed stuff goes here.                          
                        foreach (string x in speed.Split(' '))
                        {
                            if (target == null)
                            {                                
                                if (x == "burrow:" || x == "fly:" || x == "swim:" || x == "climb:")
                                {
                                    whichSpeed = x;                                    
                                    switch (whichSpeed)
                                    {
                                        case "speed:":
                                            target = (NumericUpDown)SpeedUpDown;
                                            break;
                                        case "swim:":
                                            target = (NumericUpDown)SwimUpDown;
                                            break;
                                        case "fly:":
                                            target = (NumericUpDown)FlyUpDown;
                                            isFly = true;
                                            break;
                                        case "burrow:":
                                            target = (NumericUpDown)burrowUpDown;
                                            break;
                                        case "climb:":
                                            target = (NumericUpDown)ClimbUpDown;
                                            break;
                                    }
                                }

                                if (target == null) {
                                    int temp = 0;
                                    if (int.TryParse(x, out temp))
                                    {
                                        target = (NumericUpDown)SpeedUpDown; whichSpeed = "speed:";
                                        Console.WriteLine("Custom speed type: " + whichSpeed + " " + target.Name);
                                    }
                                }                                
                            }


                            if (target != null)
                            {
                                if (int.TryParse(x, out tester))
                                {
                                    target.Enabled = false;
                                    target.Value = tester;

                                    if (speed.Contains("hover") && isFly)
                                    {
                                        HoverCheckBox.Checked = true;
                                    }

                                    target.Tag = customString;
                                    target = null;
                                }
                            }
                        }
                    }
                }
                #endregion

                foreach (Ability item in Monster._Abilities)
                {
                    TraitsList.Items.Add("Ability: " + item.Title);
                }

                foreach (Ability item in Monster._Actions)
                {
                    TraitsList.Items.Add("Action: " + item.Title);
                }

                foreach (Ability reaction in Monster._Reactions)
                {
                    TraitsList.Items.Add("Reaction: " + reaction.Title);
                }

                foreach (Legendary epic in Monster._Legendaries)
                {
                    TraitsList.Items.Add("Legendary: " + epic.Title);
                }
                
                foreach (string language in Monster._Languages)
                {
                    TraitsList.Items.Add("Language: " + language);
                }

                foreach (string senses in Monster._Senses)
                {
                    TraitsList.Items.Add("Sense: " + senses);
                }

                foreach (string CImmunity in Monster.ConditionImmunities)
                {
                    TraitsList.Items.Add("Condition Immunity: " + CImmunity);
                }

                foreach (string DImmunities in Monster.DamageImmunities)
                {
                    TraitsList.Items.Add("Damage Immunity: " + DImmunities);
                }

                foreach (string DResistance in Monster.DamageResistances)
                {
                    TraitsList.Items.Add("Damage Resistance: " + DResistance);
                }

                foreach (string DVulnerability in Monster.DamageVulnerability)
                {
                    TraitsList.Items.Add("Damage Vulnerability: " + DVulnerability);
                }

                foreach (string SavingThrow in Monster.SavingThrowBonuses)
                {
                    string temp = SavingThrow.Split(' ')[0];
                    int tempBonus = 0;
                    int.TryParse(SavingThrow.Split('+')[1], out tempBonus);

                    switch (temp)
                    {
                        case "Str":
                            StrSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Dex":
                            DexSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Con":
                            ConSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Int":
                            IntSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Wis":
                            WisSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Cha":
                            ChaSaveBonusUpDown.Value = tempBonus;
                            break;
                    }
                }

                foreach (string SkillBonus in Monster.SkillBonuses)
                {                    
                    TraitsList.Items.Add(SkillBonus);
                }

                HitDieTextBox.Text = Monster.HP;

                try
                {
                    string hpString = Monster.HP.Split('(')[1].Replace(')', ' ').Trim().Split('+')[0];
                    int DiceSize;
                    int DiceNumber;
                    int.TryParse(hpString.Split('d')[0], out DiceNumber);
                    int.TryParse(hpString.Split('d')[1], out DiceSize);

                    HitDieUpDown.Value = DiceNumber;
                    HitDieDropDown.Text = "";
                    HitDieDropDown.SelectedText = "d" + DiceSize;
                }
                catch { }

                try
                {
                    int ACValue = 0;
                    int.TryParse(Monster.AC.Split(' ')[0], out ACValue);

                    ACUpDown.Value = ACValue;
                    string temp = Monster.AC.Replace(ACValue.ToString(), "").Trim();
                    ACSourceTextBox.Text = temp.Substring(1, temp.Length - 2);
                }
                catch { }

                MonsterNameTextBox.Text = "";
                SizeDropDown.Text = "";
                TypeDropDown.Text = "";
                TagDropDown.Text = "";

                MonsterNameTextBox.Text = Monster.CreatureName;
                SizeDropDown.SelectedText = Monster.CreatureSize;
                TypeDropDown.Text = Monster.CreatureType.Split(' ')[0];
                try 
                {
                    TagDropDown.Text = Monster.CreatureType.Replace(TypeDropDown.Text, "").Replace('(', ' ').Replace(')', ' ').Trim();                                        
                }
                catch
                {
                    
                }
                
                Monster.Clear();
            }
        }        
Пример #6
0
        private void LoadData(object sender, EventArgs e)
        {
            OpenFileDialog dialog = new OpenFileDialog();
            dialog.InitialDirectory = @"C:\";
            dialog.Filter = "mm files (*.mm)|*.mm";
            dialog.RestoreDirectory = true;

            if (dialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                Data jsonMonster = new Data();
                jsonMonster = JsonConvert.DeserializeObject<Data>(System.IO.File.ReadAllText(dialog.FileName));
                TraitsList.Items.Clear();
                Monster.Input(jsonMonster);

                foreach (Ability item in Monster._Abilities)
                {
                    TraitsList.Items.Add("Ability: " + item.Title);
                }

                foreach (Attack item in Monster._Attacks)
                {
                    TraitsList.Items.Add("Attack: " + item.Title);
                }

                foreach (string language in Monster._Languages)
                {
                    TraitsList.Items.Add("Language: " + language);
                }

                foreach (string senses in Monster._Senses)
                {
                    TraitsList.Items.Add("Sense: " + senses);
                }

                foreach (string CImmunity in Monster.ConditionImmunities)
                {
                    TraitsList.Items.Add("Condition Immunity: " + CImmunity);
                }

                foreach (string DImmunities in Monster.DamageImmunities)
                {
                    TraitsList.Items.Add("Damage Immunity: " + DImmunities);
                }

                foreach (string DResistance in Monster.DamageResistances)
                {
                    TraitsList.Items.Add("Damage Resistance: " + DResistance);
                }

                foreach (string DVulnerability in Monster.DamageVulnerability)
                {
                    TraitsList.Items.Add("Damage Vulnerability: " + DVulnerability);
                }

                foreach (string SavingThrow in Monster.SavingThrowBonuses)
                {
                    string temp = SavingThrow.Split(' ')[0];
                    int tempBonus = 0;
                    int.TryParse(SavingThrow.Split('+')[1], out tempBonus);

                    switch (temp)
                    {
                        case "Str":
                            StrSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Dex":
                            DexSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Con":
                            ConSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Int":
                            IntSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Wis":
                            WisSaveBonusUpDown.Value = tempBonus;
                            break;
                        case "Cha":
                            ChaSaveBonusUpDown.Value = tempBonus;
                            break;
                    }
                }

                foreach (string SkillBonus in Monster.SkillBonuses)
                {
                    TraitsList.Items.Add(SkillBonus);
                }

            }
        }