Пример #1
0
        /// <summary>
        /// Calculate base stats for a unit.
        /// </summary>
        /// <param name="character"></param>
        /// <returns></returns>
        public static Model.Stat CalculateBaseStats(Model.Character character)
        {
            Model.Stat baseStats = new Model.Stat();
            if (!Enum.IsDefined(typeof(Enums.Character), character.CharacterID) ||
                !Enum.IsDefined(typeof(Enums.Class), character.ClassID))
            {
                return(null);
            }

            var characterData = Data.Database.Characters.GetByID(character.CharacterID);
            var classData     = Data.Database.Classes.GetByID(character.ClassID);

            // Corrin and Bond units
            if (character.CorrinName != null)
            {
                if (Enum.IsDefined(typeof(Enums.Stat), character.Boon) &&
                    Enum.IsDefined(typeof(Enums.Stat), character.Bane))
                {
                    return(characterData.BaseStats +
                           Data.Database.Stats.GetByID(character.Boon).BaseBoonModifiers +
                           Data.Database.Stats.GetByID(character.Bane).BaseBaneModifiers +
                           classData.BaseStats);
                }
                else
                {
                    return(null);
                }
            }
            else // All other units
            {
                return(characterData.BaseStats + classData.BaseStats);
            }
        }
        public static void GeneratePdf(Model.Stat statastics, string type = "DEFAULT")
        {
            Engine templateEngine = new();

            Model.ReportViewModel <Model.Stat> reportViewModel = new()
            {
                Name = appName,
                Obj  = statastics
            };

            string htmlReport;

            if (type == "DEFAULT")
            {
                htmlReport = templateEngine.RenderHtmlTemplate(reportViewModel);
            }
            else
            {
                htmlReport = templateEngine.RenderHtmlTemplate(reportViewModel, type);
            }

            using FileStream fs = File.Create(Path.GetTempPath() + "report.pdf");
            HtmlConverter.ConvertToPdf(htmlReport, fs);

            IPrinter printer = new Printer();

            printer.PrintRawFile("Canon MF3010", fs.Name);

            /* System.Windows.Controls.WebBrowser webbrowser = new();
             * webbrowser.Navigate(fs.Name);*/
            fs.Close();
        }
    }
Пример #3
0
        private void ultraCheat_Click(object sender, EventArgs e)
        {
            foreach (var character in _chapterSave.UnitRegion.Units)
            {
                character.CanUseDragonVein = true;
                character.Boots            = Model.Character.MaxBoots;
                character.SRankAllWeapons();
                character.EternalSealsUsed = 16;
                caps = Utils.StatUtil.CalculateStatCaps(character);
                Model.Stat stats = Utils.StatUtil.CalculateStats(character);

                /*               numHP.Maximum = caps.HP;
                 *             numStr.Maximum = caps.Str;
                 *             numMag.Maximum = caps.Mag;
                 *             numSkl.Maximum = caps.Skl;
                 *             numSpd.Maximum = caps.Spd;
                 *             numLck.Maximum = caps.Lck;
                 *             numDef.Maximum = caps.Def;
                 *             numRes.Maximum = caps.Res;*/
                character.GainedStats = new Model.Stat
                {
                    HP  = caps.HP,
                    Str = caps.Str,
                    Mag = caps.Mag,
                    Skl = caps.Skl,
                    Spd = caps.Spd,
                    Lck = caps.Lck,
                    Def = caps.Def,
                    Res = caps.Res
                };
            }
            MessageBox.Show("Done!");
        }
Пример #4
0
        private void btnMaxStats_Click(object sender, EventArgs e)
        {
            foreach (var character in _chapterSave.UnitRegion.Units)
            {
                caps = Utils.StatUtil.CalculateStatCaps(character);
                Model.Stat stats = Utils.StatUtil.CalculateStats(character);

                /*               numHP.Maximum = caps.HP;
                 *             numStr.Maximum = caps.Str;
                 *             numMag.Maximum = caps.Mag;
                 *             numSkl.Maximum = caps.Skl;
                 *             numSpd.Maximum = caps.Spd;
                 *             numLck.Maximum = caps.Lck;
                 *             numDef.Maximum = caps.Def;
                 *             numRes.Maximum = caps.Res;*/
                character.GainedStats = new Model.Stat
                {
                    HP  = caps.HP,
                    Str = caps.Str,
                    Mag = caps.Mag,
                    Skl = caps.Skl,
                    Spd = caps.Spd,
                    Lck = caps.Lck,
                    Def = caps.Def,
                    Res = caps.Res
                };
            }
            MessageBox.Show("Done!");
        }
Пример #5
0
 /// <summary>
 /// Calculate the true stats for a character
 /// </summary>
 /// <returns>A character's true stats</returns>
 public static Model.Stat CalculateTrueStats(Model.Character character)
 {
     Model.Stat baseStats = CalculateBaseStats(character);
     if (baseStats != null)
     {
         return(baseStats + character.GainedStats);
     }
     else
     {
         return(null);
     }
 }
Пример #6
0
 private void PopulateControls()
 {
     Model.Stat stats = Utils.StatUtil.CalculateStats(_unit);
     if (stats == null)
     {
         lblStats.Text     = "Stats (raw):";
         txtStatBytes.Text = _unit.GainedStats.ToString();
         btnStats.Enabled  = false;
     }
     else
     {
         lblStats.Text     = "Stats:";
         txtStatBytes.Text = stats.ToString();
         btnStats.Enabled  = true;
     }
 }
Пример #7
0
        /// <summary>
        /// Calculate stat caps for a character
        /// </summary>
        /// <returns>Character's stat caps</returns>
        public static Model.Stat CalculateStatCaps(Model.Character character)
        {
            if (!Enum.IsDefined(typeof(Enums.Character), character.CharacterID) ||
                !Enum.IsDefined(typeof(Enums.Class), character.ClassID))
            {
                return(null);
            }

            var characterData = Data.Database.Characters.GetByID(character.CharacterID);
            var classData     = Data.Database.Classes.GetByID(character.ClassID);

            if (character.CorrinName != null) // Corrin and bond units
            {
                if (Enum.IsDefined(typeof(Enums.Stat), character.Boon) &&
                    Enum.IsDefined(typeof(Enums.Stat), character.Bane))
                {
                    return(classData.MaximumStats +
                           Data.Database.Stats.GetByID(character.Boon).MaxBoonModifiers +
                           Data.Database.Stats.GetByID(character.Bane).MaxBaneModifiers +
                           character.StatueBonusStats);
                }
                else
                {
                    return(null);
                }
            }
            else if (characterData.IsChild) // Children
            {
                var childBonusStats = new Model.Stat {
                    HP = 0, Str = 1, Mag = 1, Skl = 1, Spd = 1, Lck = 1, Def = 1, Res = 1
                };
                return(classData.MaximumStats +
                       Data.Database.Characters.GetByID(character.FatherID).Modifiers +
                       Data.Database.Stats.GetByID(character.FatherBoon).MaxBoonModifiers +
                       Data.Database.Stats.GetByID(character.FatherBane).MaxBaneModifiers +
                       Data.Database.Characters.GetByID(character.MotherID).Modifiers +
                       Data.Database.Stats.GetByID(character.MotherBoon).MaxBoonModifiers +
                       Data.Database.Stats.GetByID(character.MotherBane).MaxBaneModifiers +
                       childBonusStats + character.StatueBonusStats);
            }
            else // All other units
            {
                return(classData.MaximumStats + characterData.Modifiers + character.StatueBonusStats);
            }
        }
Пример #8
0
 private void PopulateControls()
 {
     Model.Stat stats = Utils.StatUtil.CalculateStats(_unit);
     if (stats == null)
     {
         lblStats.Text     = "Stats (raw):";
         txtStatBytes.Text = _unit.GainedStats.ToString();
         btnStats.Enabled  = false;
     }
     else
     {
         lblStats.Text     = "Stats:";
         txtStatBytes.Text = stats.ToString();
         btnStats.Enabled  = true;
     }
     if (Data.Database.Characters.GetByID(_unit.CharacterID).IsCustomDLC)
     {
         btnStats.Enabled = false;
     }
 }
Пример #9
0
        /// <summary>
        /// Calculate stats for a character
        /// </summary>
        /// <returns>Character's stats</returns>
        public static Model.Stat CalculateStats(Model.Character character)
        {
            Model.Stat stats     = new Model.Stat();
            Model.Stat trueStats = CalculateTrueStats(character);
            Model.Stat caps      = CalculateStatCaps(character);

            if (trueStats != null && caps != null)
            {
                if (trueStats.HP < 0)
                {
                    stats.HP = 0;
                }
                else if (trueStats.HP < caps.HP)
                {
                    stats.HP = trueStats.HP;
                }
                else
                {
                    stats.HP = caps.HP;
                }
                if (trueStats.Str < 0)
                {
                    stats.Str = 0;
                }
                else if (trueStats.Str < caps.Str)
                {
                    stats.Str = trueStats.Str;
                }
                else
                {
                    stats.Str = caps.Str;
                }
                if (trueStats.Mag < 0)
                {
                    stats.Mag = 0;
                }
                else if (trueStats.Mag < caps.Mag)
                {
                    stats.Mag = trueStats.Mag;
                }
                else
                {
                    stats.Mag = caps.Mag;
                }
                if (trueStats.Skl < 0)
                {
                    stats.Skl = 0;
                }
                else if (trueStats.Skl < caps.Skl)
                {
                    stats.Skl = trueStats.Skl;
                }
                else
                {
                    stats.Skl = caps.Skl;
                }
                if (trueStats.Spd < 0)
                {
                    stats.Spd = 0;
                }
                else if (trueStats.Spd < caps.Spd)
                {
                    stats.Spd = trueStats.Spd;
                }
                else
                {
                    stats.Spd = caps.Spd;
                }
                if (trueStats.Lck < 0)
                {
                    stats.Lck = 0;
                }
                else if (trueStats.Lck < caps.Lck)
                {
                    stats.Lck = trueStats.Lck;
                }
                else
                {
                    stats.Lck = caps.Lck;
                }
                if (trueStats.Def < 0)
                {
                    stats.Def = 0;
                }
                else if (trueStats.Def < caps.Def)
                {
                    stats.Def = trueStats.Def;
                }
                else
                {
                    stats.Def = caps.Def;
                }
                if (trueStats.Res < 0)
                {
                    stats.Res = 0;
                }
                else if (trueStats.Res < caps.Res)
                {
                    stats.Res = trueStats.Res;
                }
                else
                {
                    stats.Res = caps.Res;
                }
            }
            else
            {
                stats = null;
            }
            return(stats);
        }
Пример #10
0
        private void StatEditor_Load(object sender, EventArgs e)
        {
            // Labels
            var statData = Data.Database.Stats;

            lblHP.Text  = statData.GetByID(Enums.Stat.HP).DisplayName;
            lblStr.Text = statData.GetByID(Enums.Stat.Strength).DisplayName;
            lblMag.Text = statData.GetByID(Enums.Stat.Magic).DisplayName;
            lblSkl.Text = statData.GetByID(Enums.Stat.Skill).DisplayName;
            lblSpd.Text = statData.GetByID(Enums.Stat.Speed).DisplayName;
            lblLck.Text = statData.GetByID(Enums.Stat.Luck).DisplayName;
            lblDef.Text = statData.GetByID(Enums.Stat.Defense).DisplayName;
            lblRes.Text = statData.GetByID(Enums.Stat.Resistance).DisplayName;

            // Stats
            caps = Utils.StatUtil.CalculateStatCaps(_unit);
            Model.Stat stats = Utils.StatUtil.CalculateStats(_unit);

            numHP.Maximum  = caps.HP;
            numStr.Maximum = caps.Str;
            numMag.Maximum = caps.Mag;
            numSkl.Maximum = caps.Skl;
            numSpd.Maximum = caps.Spd;
            numLck.Maximum = caps.Lck;
            numDef.Maximum = caps.Def;
            numRes.Maximum = caps.Res;

            numHP.Value  = stats.HP;
            numStr.Value = stats.Str;
            numMag.Value = stats.Mag;
            numSkl.Value = stats.Skl;
            numSpd.Value = stats.Spd;
            numLck.Value = stats.Lck;
            numDef.Value = stats.Def;
            numRes.Value = stats.Res;

            // Tonic
            Model.Stat tonicBonuses = _unit.TonicBonusStats;
            chkHPTonic.Checked  = (tonicBonuses.HP == 5);
            chkStrTonic.Checked = (tonicBonuses.Str == 2);
            chkMagTonic.Checked = (tonicBonuses.Mag == 2);
            chkSklTonic.Checked = (tonicBonuses.Skl == 2);
            chkSpdTonic.Checked = (tonicBonuses.Spd == 2);
            chkLckTonic.Checked = (tonicBonuses.Lck == 4);
            chkDefTonic.Checked = (tonicBonuses.Def == 2);
            chkResTonic.Checked = (tonicBonuses.Res == 2);

            // Status
            Model.Stat statusBonuses = _unit.StatusBonusStats;
            chkStrStatus.Checked = (statusBonuses.Str == 4);
            chkMagStatus.Checked = (statusBonuses.Mag == 4);
            chkSklStatus.Checked = (statusBonuses.Skl == 4);
            chkSpdStatus.Checked = (statusBonuses.Spd == 4);
            chkLckStatus.Checked = (statusBonuses.Lck == 4);
            chkDefStatus.Checked = (statusBonuses.Def == 4);
            chkResStatus.Checked = (statusBonuses.Res == 4);

            // Meal
            Model.Stat mealBonuses = _unit.MealBonusStats;
            SetMealCheckBox(chkStrMeal, mealBonuses.Str);
            SetMealCheckBox(chkMagMeal, mealBonuses.Mag);
            SetMealCheckBox(chkSklMeal, mealBonuses.Skl);
            SetMealCheckBox(chkSpdMeal, mealBonuses.Spd);
            SetMealCheckBox(chkLckMeal, mealBonuses.Lck);
            SetMealCheckBox(chkDefMeal, mealBonuses.Def);
            SetMealCheckBox(chkResMeal, mealBonuses.Res);
        }
Пример #11
0
        private void btnSave_Click(object sender, EventArgs e)
        {
            Model.Stat baseStats = Utils.StatUtil.CalculateBaseStats(_unit);
            Model.Stat changes   = new Model.Stat
            {
                HP  = (sbyte)numHP.Value,
                Str = (sbyte)numStr.Value,
                Mag = (sbyte)numMag.Value,
                Skl = (sbyte)numSkl.Value,
                Spd = (sbyte)numSpd.Value,
                Lck = (sbyte)numLck.Value,
                Def = (sbyte)numDef.Value,
                Res = (sbyte)numRes.Value
            } -baseStats;
            Model.Stat finalStats = _unit.GainedStats;

            if (changes.HP != 0)
            {
                finalStats.HP = changes.HP; IsStatsChanged = true;
            }
            if (changes.Str != 0)
            {
                finalStats.Str = changes.Str; IsStatsChanged = true;
            }
            if (changes.Mag != 0)
            {
                finalStats.Mag = changes.Mag; IsStatsChanged = true;
            }
            if (changes.Skl != 0)
            {
                finalStats.Skl = changes.Skl; IsStatsChanged = true;
            }
            if (changes.Spd != 0)
            {
                finalStats.Spd = changes.Spd; IsStatsChanged = true;
            }
            if (changes.Lck != 0)
            {
                finalStats.Lck = changes.Lck; IsStatsChanged = true;
            }
            if (changes.Def != 0)
            {
                finalStats.Def = changes.Def; IsStatsChanged = true;
            }
            if (changes.Res != 0)
            {
                finalStats.Res = changes.Res; IsStatsChanged = true;
            }
            _unit.GainedStats = finalStats;

            // Tonic
            Model.Stat tonicBonuses = new Model.Stat()
            {
                HP  = chkHPTonic.Checked ? (sbyte)5 : (sbyte)0,
                Str = chkStrTonic.Checked ? (sbyte)2 : (sbyte)0,
                Mag = chkMagTonic.Checked ? (sbyte)2 : (sbyte)0,
                Skl = chkSklTonic.Checked ? (sbyte)2 : (sbyte)0,
                Spd = chkSpdTonic.Checked ? (sbyte)2 : (sbyte)0,
                Lck = chkLckTonic.Checked ? (sbyte)4 : (sbyte)0,
                Def = chkDefTonic.Checked ? (sbyte)2 : (sbyte)0,
                Res = chkResTonic.Checked ? (sbyte)2 : (sbyte)0
            };
            _unit.TonicBonusStats = tonicBonuses;

            // Status
            Model.Stat statusBonuses = new Model.Stat()
            {
                HP  = 0,
                Str = chkStrStatus.Checked ? (sbyte)4 : (sbyte)0,
                Mag = chkMagStatus.Checked ? (sbyte)4 : (sbyte)0,
                Skl = chkSklStatus.Checked ? (sbyte)4 : (sbyte)0,
                Spd = chkSpdStatus.Checked ? (sbyte)4 : (sbyte)0,
                Lck = chkLckStatus.Checked ? (sbyte)4 : (sbyte)0,
                Def = chkDefStatus.Checked ? (sbyte)4 : (sbyte)0,
                Res = chkResStatus.Checked ? (sbyte)4 : (sbyte)0
            };
            _unit.StatusBonusStats = statusBonuses;

            // Meal
            Model.Stat oldMealBonuses = _unit.MealBonusStats;
            Model.Stat newMealBonuses = new Model.Stat()
            {
                HP  = 0,
                Str = GetMealCheckBox(chkStrMeal, oldMealBonuses.Str),
                Mag = GetMealCheckBox(chkMagMeal, oldMealBonuses.Mag),
                Skl = GetMealCheckBox(chkSklMeal, oldMealBonuses.Skl),
                Spd = GetMealCheckBox(chkSpdMeal, oldMealBonuses.Spd),
                Lck = GetMealCheckBox(chkLckMeal, oldMealBonuses.Lck),
                Def = GetMealCheckBox(chkDefMeal, oldMealBonuses.Def),
                Res = GetMealCheckBox(chkResMeal, oldMealBonuses.Res)
            };
            _unit.MealBonusStats = newMealBonuses;

            this.Close();
        }