From c424cce4d835a75b1c3229257ddb2f144600c75b Mon Sep 17 00:00:00 2001 From: Marcus Minhorst Date: Fri, 29 Aug 2025 12:15:17 -0400 Subject: [PATCH] Expanded compat matching --- src/common/engine/m_haptics.cpp | 35 ++++++++++++++++----------------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/common/engine/m_haptics.cpp b/src/common/engine/m_haptics.cpp index 52b303010..abcc695b1 100644 --- a/src/common/engine/m_haptics.cpp +++ b/src/common/engine/m_haptics.cpp @@ -87,7 +87,8 @@ const FName HapticIntense = "INTENSE", HapticHeavy = "HEAVY", HapticMedium = "MEDIUM", HapticLight = "LIGHT", - HapticSubtle = "SUBTLE"; + HapticSubtle = "SUBTLE", + HapticNone = "NONE"; // PUBLIC DATA DEFINITIONS ------------------------------------------------- @@ -161,28 +162,26 @@ CVARD(Bool, haptics_do_action, true, CVAR_ARCHIVE | CVAR_GLOBALCONFIG, "allow ha const FName * Joy_GuessMapping(const FName identifier) { FString text = identifier.GetChars(); - - text.ToLower(); // I would like to slugify here // Maybe one day + text.ToLower(); - auto search = [&text](TArray &strs) { - for (auto str: strs) - { - if (text.IndexOf(str) != -1) return true; - } - return false; + struct MapSet { const FName * mapping; const TArray tokens; }; + static struct MapSet mappings[] = { + { &HapticNone, { "ricochet", "casing" } }, + { &HapticIntense, { "quake", "death", "gibbed" } }, + { &HapticHeavy, { "teleport", "activate", "secret" } }, + { &HapticMedium, { "success", "grunt", "land", "pain", "pkup", "pickup", "fist", "weapon", + "fire", "shoot", "blast", "attack", "launch", "punch" } }, + { &HapticLight, { "push", "menu", "use", "fail", "open", "close", "eject", "reload", + "charge", "try" } }, + { &HapticNone, { "step", "floor" } }, }; - static TArray intense = { "quake", "death", "gibbed" }; - static TArray heavy = { "teleport", "activate", "secret" }; - static TArray medium = { "success", "grunt", "land", "pain", "pkup", "pickup", "fist", "weapon", "fire"}; - static TArray light = { "push", "menu", "use", "fail", "open", "close", "eject" }; - - if (search(intense)) return &HapticIntense; - if (search(heavy)) return &HapticHeavy; - if (search(medium)) return &HapticMedium; - if (search(light)) return &HapticLight; + for (auto mapping: mappings) + for (auto token: mapping.tokens) + if (text.IndexOf(token) != -1) + return mapping.mapping; return nullptr; }