From 937d25ed021c68ba9f61c897acdd7bc6b687d4f1 Mon Sep 17 00:00:00 2001 From: C J Silverio Date: Fri, 12 Jan 2024 18:06:53 -0800 Subject: [PATCH] KID improvements, color cleanup, dead code pruning. --- installer/core/SoulsyHUD_KID.ini | 11 ++++----- src/data/mod.rs | 39 +++++++++----------------------- src/data/power.rs | 12 ++++++---- src/data/spell.rs | 13 +++++------ 4 files changed, 29 insertions(+), 46 deletions(-) diff --git a/installer/core/SoulsyHUD_KID.ini b/installer/core/SoulsyHUD_KID.ini index 4038e8ea..5dfb1775 100644 --- a/installer/core/SoulsyHUD_KID.ini +++ b/installer/core/SoulsyHUD_KID.ini @@ -50,13 +50,10 @@ Keyword = OCF_InvColorWhite|Armor|0x805~EldenRingLantern.esp ; Effects granted by some minor powers and spells ; Bats vampire lord spell "Bats Effect" [MGEF:0200E654] -Keyword = Soulsy_Power_Bats|Magic Effect|DLC1VQ08BatsEffect|NONE|100 -Keyword = Soulsy_Power_Bats|Spell|DLC1VQ08Bats|NONE|100 -Keyword = Soulsy_Power_Bats|Spell|DLC1VampireBats|NONE|100 -Keyword = Soulsy_Power_Bats|Magic Effect|0x0200E654|NONE|100 -Keyword = Soulsy_Power_Vampire|Spell|DLC1VampireChange|NONE|100 -Keyword = Soulsy_Power_Vampire|Magic Effect|DLC1VampireChangeEffect|NONE|100 -Keyword = Soulsy_Power_RevertForm|Spell|DLC1RevertForm|NONE|100 +Keyword = Soulsy_Power_Bats|Magic Effect|DLC1BatsEffect +;Keyword = Soulsy_Power_Vampire|Spell|DLC1VampireChange|NONE|100 +;Keyword = Soulsy_Power_Vampire|Magic Effect|DLC1VampireChangeEffect|NONE|100 +;Keyword = Soulsy_Power_RevertForm|Spell|DLC1RevertForm|NONE|100 ; Spells associated with shouts. ; We can't assign keywords to shouts directly, so we use their spells. diff --git a/src/data/mod.rs b/src/data/mod.rs index f6488d1b..b6d1f570 100644 --- a/src/data/mod.rs +++ b/src/data/mod.rs @@ -54,6 +54,17 @@ pub fn hud_item_from_keywords( Box::new(result) } +pub fn categorize_shout( + keywords_ffi: &CxxVector, + name: String, + form_string: String, +) -> Box { + let keywords: Vec = keywords_ffi.iter().map(|xs| xs.to_string()).collect(); + let kind = BaseType::Shout(ShoutType::new(keywords)); + let result = HudItem::preclassified(name, form_string, 1, kind); + Box::new(result) +} + pub fn fill_out_spell_data( hostile: bool, resist: i32, @@ -87,17 +98,6 @@ pub fn magic_from_spelldata( Box::new(result) } -pub fn categorize_shout( - keywords_ffi: &CxxVector, - name: String, - form_string: String, -) -> Box { - let keywords: Vec = keywords_ffi.iter().map(|xs| xs.to_string()).collect(); - let kind = BaseType::Shout(ShoutType::new(keywords)); - let result = HudItem::preclassified(name, form_string, 1, kind); - Box::new(result) -} - pub fn simple_from_formdata(kind: ItemCategory, name: String, form_string: String) -> Box { let classification = match kind { ItemCategory::Book => BaseType::Book, @@ -175,23 +175,6 @@ pub trait HasKeywords { fn classify(name: &str, keywords: Vec, twohanded: bool) -> Self; } -// A generic convert keywords to enum variants function. -pub fn strings_to_keywords TryFrom<&'a str>>(tags: &[String]) -> Vec { - let keywords: Vec = tags - .iter() - .filter_map(|xs| { - if let Ok(subtype) = T::try_from(xs.as_str()) { - Some(subtype) - } else { - log::trace!("Unknown keyword: '{xs}';"); - - None - } - }) - .collect(); - keywords -} - // Generic convert keywords to an enum set. pub fn strings_to_enumset TryFrom<&'a str>>( tags: &[String], diff --git a/src/data/power.rs b/src/data/power.rs index edd9ede2..09dee79c 100644 --- a/src/data/power.rs +++ b/src/data/power.rs @@ -1,6 +1,7 @@ use super::color::InvColor; use super::keywords::*; use super::{strings_to_enumset, HasIcon}; +use crate::data::color::color_from_keywords; use crate::images::Icon; use crate::plugin::Color; @@ -22,10 +23,13 @@ impl PowerType { Icon::Power }; - PowerType { - icon, - color: color_for_tagset(&kywds).unwrap_or_default(), - } + let color = if let Some(c) = color_from_keywords(&tags) { + c + } else { + color_for_tagset(&kywds).unwrap_or_default() + }; + + PowerType { icon, color } } } diff --git a/src/data/spell.rs b/src/data/spell.rs index ef71867b..27c2c004 100644 --- a/src/data/spell.rs +++ b/src/data/spell.rs @@ -11,10 +11,10 @@ use enumset::EnumSet; -use super::color::InvColor; +use super::color::{color_from_keywords, InvColor}; use super::keywords::*; use super::magic::{School, SpellData}; -use super::{strings_to_enumset, strings_to_keywords, HasIcon}; +use super::{strings_to_enumset, HasIcon}; use crate::images::icons::Icon; use crate::plugin::Color; @@ -51,11 +51,10 @@ impl SpellType { // Colors. We base this on damage type, mostly, but first we look to see // if we have a color keyword. - let color_kwds = strings_to_keywords::(&tags); - let color = if let Some(assigned) = color_kwds.first() { - assigned.clone() - } else if let Some(color) = color_for_tagset(&tagset) { - color + let color = if let Some(c) = color_from_keywords(&tags) { + c + } else if let Some(c) = color_for_tagset(&tagset) { + c } else { match data.school { // TODO identify common colors for magical schools