void SetControlsWithData(CombatDamageCalculatorInputData data) { dataUpdateSuspended = true; PickPanelData panelData = attackerPickPanel.Data; panelData.Unit = data.Attacker; panelData.HeroStats = data.AttackerHeroStats; panelData.Spells = data.AttackerSpells; attackerPickPanel.Data = panelData; panelData = defenderPickPanel.Data; panelData.Unit = data.Defender; panelData.HeroStats = data.DefenderHeroStats; panelData.Spells = data.DefenderSpells; defenderPickPanel.Data = panelData; if (data.Terrain != null) { terrainComboBox.SelectedValue = data.Terrain; } else { terrainComboBox.SelectedIndex = 0; } attackerCountUpDn.Value = data.AttackerCount; defenderCountUpDn.Value = data.DefenderCount; dataUpdateSuspended = false; }
private void SpellDamagePanelDataChanged(object sender, EventArgs e) { CombatDamageCalculatorInputData combatData = combatDamagePanel.Data; SpellDamageCalculatorData spellData = spellDamagePanel.Data; combatData.AttackerHeroStats = spellData.CasterHeroStats; combatData.Defender = spellData.Target; combatDamagePanel.Data = combatData; }
private void UpdateCalculatedDamage() { bool hasInputData = ((Data.Attacker != null) && (Data.Defender != null)); resultPanel.Visible = hasInputData; if (!hasInputData) { return; } int minDamage, maxDamage; string notes; calculator.CalculateDamage(Data, out minDamage, out maxDamage, out notes); int minKills = minDamage / Data.Defender.InitialStats.Health; int maxKills = maxDamage / Data.Defender.InitialStats.Health; calculatedDamageLbl.Text = FormatRange(minDamage, maxDamage); calculatedKillsLbl.Text = FormatRange(minKills, maxKills); notesLbl.Text = (notes != null) ? "(" + notes + ")" : null; //// TODO: refactor this crap int minRetDamage, tempRetDamage, maxRetDamage; string retNotes; CombatDamageCalculatorInputData retData = Data.InverseData(); retData.AttackerCount = Math.Max(0, Data.DefenderCount - minKills); calculator.CalculateDamage(retData, out tempRetDamage, out maxRetDamage, out retNotes); retData.AttackerCount = Math.Max(0, Data.DefenderCount - maxKills); calculator.CalculateDamage(retData, out minRetDamage, out tempRetDamage, out retNotes); int minRetKills = minRetDamage / retData.Defender.InitialStats.Health; int maxRetKills = maxRetDamage / retData.Defender.InitialStats.Health; calculatedRetDamageLbl.Text = FormatRange(minRetDamage, maxRetDamage); calculatedRetKillsLbl.Text = FormatRange(minRetKills, maxRetKills); retNotesLbl.Text = (retNotes != null) ? "(" + retNotes + ")" : null; }
void UpdateDataFromControls(CombatDamageCalculatorInputData data) { data.Attacker = attackerPickPanel.Data.Unit; data.Defender = defenderPickPanel.Data.Unit; data.Terrain = (Terrain)terrainComboBox.SelectedValue; if (data.Terrain.Id == -1) { data.Terrain = null; } data.AttackerHeroStats = attackerPickPanel.Data.HeroStats; data.AttackerSpells = attackerPickPanel.Data.Spells; data.DefenderHeroStats = defenderPickPanel.Data.HeroStats; data.DefenderSpells = defenderPickPanel.Data.Spells; data.AttackerCount = (int)attackerCountUpDn.Value; data.DefenderCount = (int)defenderCountUpDn.Value; }