/// <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(); } }
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!"); }
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!"); }
/// <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); } }
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; } }
/// <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); } }
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; } }
/// <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); }
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); }
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(); }