Implement RCON weapon icon alias mapping
This commit is contained in:
@@ -0,0 +1,131 @@
|
|||||||
|
---
|
||||||
|
id: TASK-209
|
||||||
|
title: Implement RCON weapon icon alias mapping
|
||||||
|
status: done
|
||||||
|
type: frontend
|
||||||
|
team: Frontend Senior
|
||||||
|
supporting_teams: [Analista]
|
||||||
|
roadmap_item: foundation
|
||||||
|
priority: high
|
||||||
|
---
|
||||||
|
|
||||||
|
# TASK-209 - Implement RCON weapon icon alias mapping
|
||||||
|
|
||||||
|
## Goal
|
||||||
|
|
||||||
|
Implement the full RCON weapon-to-icon mapping in frontend JavaScript using explicit aliases and the `frontend/assets/img/weapons/black/` icon set, without modifying SVG files.
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
`TASK-208` produced the reviewable mapping matrix between the pasted RCON weapon universe and the local `black` silhouettes. The runtime still uses an older partial `white/` mapping in `frontend/assets/js/partida-actual.js`, with legacy filenames and incomplete coverage.
|
||||||
|
|
||||||
|
This task applies the documented mapping in frontend code only:
|
||||||
|
|
||||||
|
- cover the 220 documented RCON weapons plus `UNKNOWN`
|
||||||
|
- use actual `black` SVG filenames
|
||||||
|
- preserve legacy/ambiguous cases through explicit aliases
|
||||||
|
- keep SVG files untouched
|
||||||
|
|
||||||
|
## Steps
|
||||||
|
|
||||||
|
1. Inspect the analysis document, current runtime resolver and actual `black` icon filenames.
|
||||||
|
2. Replace the partial runtime weapon mapping with the documented full alias mapping.
|
||||||
|
3. Add local validation that checks mapping coverage and that assigned icon filenames exist in `frontend/assets/img/weapons/black/`.
|
||||||
|
4. Update documentation with implementation notes and validation results.
|
||||||
|
|
||||||
|
## Files to Read First
|
||||||
|
|
||||||
|
- `AGENTS.md`
|
||||||
|
- `ai/repo-context.md`
|
||||||
|
- `ai/architecture-index.md`
|
||||||
|
- `docs/weapon-icon-black-mapping-analysis.md`
|
||||||
|
- `ai/tasks/done/TASK-208-analyze-weapon-icons-black-folder-mapping.md`
|
||||||
|
- `frontend/assets/js/partida-actual.js`
|
||||||
|
|
||||||
|
## Expected Files to Modify
|
||||||
|
|
||||||
|
- `frontend/assets/js/current-match-weapon-icons.js`
|
||||||
|
- `frontend/assets/js/partida-actual.js`
|
||||||
|
- `frontend/partida-actual.html`
|
||||||
|
- `docs/weapon-icon-black-mapping-analysis.md`
|
||||||
|
- `ai/tasks/done/TASK-209-implement-rcon-weapon-icon-alias-mapping.md`
|
||||||
|
|
||||||
|
## Constraints
|
||||||
|
|
||||||
|
- Do not modify, rename, delete, replace or move SVG files.
|
||||||
|
- Do not touch backend code, endpoints or scripts.
|
||||||
|
- Do not touch `ai/system-metrics.md`.
|
||||||
|
- Do not push.
|
||||||
|
- Keep aliases explicit and reviewable.
|
||||||
|
- Use existing `black` filenames even when they are legacy or inconsistent.
|
||||||
|
|
||||||
|
## Validation
|
||||||
|
|
||||||
|
Before completing the task ensure:
|
||||||
|
|
||||||
|
- `node --check frontend/assets/js/partida-actual.js`
|
||||||
|
- a local script confirms all documented RCON names resolve to an existing `black` SVG or to the documented fallback UI path
|
||||||
|
- `git diff --name-only` matches the expected scope
|
||||||
|
- `git status --short --untracked-files=all` confirms no SVGs were modified by this task
|
||||||
|
|
||||||
|
## Outcome
|
||||||
|
|
||||||
|
Document:
|
||||||
|
|
||||||
|
- the JS file modified
|
||||||
|
- alias strategy used
|
||||||
|
- number of covered weapons
|
||||||
|
- implemented fallback cases
|
||||||
|
- validation results
|
||||||
|
- confirmation that no SVG or backend file was touched
|
||||||
|
|
||||||
|
Result:
|
||||||
|
|
||||||
|
- Added `frontend/assets/js/current-match-weapon-icons.js` with:
|
||||||
|
- `123` real `black` filenames
|
||||||
|
- `220` explicit RCON `weapon -> svg` entries
|
||||||
|
- `120` legacy/colloquial aliases for runtime lookup
|
||||||
|
- Updated `frontend/partida-actual.html` to load the new runtime mapping before `partida-actual.js`.
|
||||||
|
- Updated `frontend/assets/js/partida-actual.js` so killfeed weapon resolution now prefers the complete `black` runtime mapping and falls back to the old local resolver only if the new asset is unavailable.
|
||||||
|
- Updated `docs/weapon-icon-black-mapping-analysis.md` with an `Implementación aplicada` section.
|
||||||
|
|
||||||
|
Validation performed:
|
||||||
|
|
||||||
|
- PASS: `node --check frontend/assets/js/partida-actual.js`
|
||||||
|
- PASS: `node --check frontend/assets/js/current-match-weapon-icons.js`
|
||||||
|
- PASS: local Node validation against the analysis document and runtime mapping:
|
||||||
|
- `totalWeapons = 220`
|
||||||
|
- `mappedWeapons = 220`
|
||||||
|
- `totalIcons = 123`
|
||||||
|
- `usedIcons = 123`
|
||||||
|
- `aliasCount = 120`
|
||||||
|
- `missingWeapons = 0`
|
||||||
|
- `brokenIcons = 0`
|
||||||
|
- `missingAliases = 0`
|
||||||
|
- `unusedIcons = 0`
|
||||||
|
- PASS: reviewed `git diff --name-only`
|
||||||
|
- PASS: reviewed `git status --short --untracked-files=all`
|
||||||
|
|
||||||
|
Main implemented fallbacks:
|
||||||
|
|
||||||
|
- `UNKNOWN -> precision_strike_black.svg`
|
||||||
|
- `MOLOTOV -> rg42_grenade_black.svg`
|
||||||
|
- `No.77 -> no82_grenade_black.svg`
|
||||||
|
- `Daimler` and `QF 2-POUNDER [Daimler]` / `COAXIAL BESA [Daimler] -> m8_greyhound_black.svg`
|
||||||
|
- `GAZ-67 -> jeep_black.svg`
|
||||||
|
- `122MM HOWITZER [M1938 (M-30)] -> zis2_57mm_cannon_black.svg`
|
||||||
|
- `155MM HOWITZER [M114] -> m1_57mm_cannon_black.svg`
|
||||||
|
- `150MM HOWITZER [sFH 18] -> pak_40_75mm_black.svg`
|
||||||
|
- `FLAMETHROWER -> m2_flamethrower_black.svg`
|
||||||
|
- `FairbairnSykes -> m3_knife_black.svg`
|
||||||
|
|
||||||
|
Scope confirmation:
|
||||||
|
|
||||||
|
- No SVG was modified, renamed, deleted or replaced.
|
||||||
|
- No backend file, endpoint or backend script was touched.
|
||||||
|
- No push was made.
|
||||||
|
|
||||||
|
## Change Budget
|
||||||
|
|
||||||
|
- Prefer fewer than 5 modified files.
|
||||||
|
- Split follow-up cleanups, visual tuning or future icon creation into separate tasks.
|
||||||
546
frontend/assets/js/current-match-weapon-icons.js
Normal file
546
frontend/assets/js/current-match-weapon-icons.js
Normal file
@@ -0,0 +1,546 @@
|
|||||||
|
const CURRENT_MATCH_BLACK_WEAPON_ICON_PATH = "./assets/img/weapons/black/";
|
||||||
|
|
||||||
|
const CURRENT_MATCH_BLACK_WEAPON_ICON_FILES = Object.freeze([
|
||||||
|
"60l_supply_black.svg",
|
||||||
|
"60l_transport_black.svg",
|
||||||
|
"at_mine_gs_mk_v_black.svg",
|
||||||
|
"ba10_black.svg",
|
||||||
|
"bazooka_black.svg",
|
||||||
|
"bedford_oyd_supply_black.svg",
|
||||||
|
"bedford_oyd_transport_black.svg",
|
||||||
|
"bishop_sp_25pdr_black.svg",
|
||||||
|
"bombing_run_black.svg",
|
||||||
|
"boys_anti_tank_rifle_black.svg",
|
||||||
|
"bren_gun_black.svg",
|
||||||
|
"browning_m1919_black.svg",
|
||||||
|
"canadian_sten_mk_ii_black.svg",
|
||||||
|
"churchill_mk_iii_avre_black.svg",
|
||||||
|
"churchill_mk_iii_black.svg",
|
||||||
|
"churchill_mk_vii_black.svg",
|
||||||
|
"colt_1911_black.svg",
|
||||||
|
"cromwell_black.svg",
|
||||||
|
"crusader_mk_iii_black.svg",
|
||||||
|
"enfield_no2_mk_i_black.svg",
|
||||||
|
"feldspaten_black.svg",
|
||||||
|
"fg42_black.svg",
|
||||||
|
"fg42_x4_black.svg",
|
||||||
|
"firefly_black.svg",
|
||||||
|
"flammenwerfer41_black.svg",
|
||||||
|
"flare_gun_black.svg",
|
||||||
|
"fn_inglis_no2_mk_i_black.svg",
|
||||||
|
"gewehr_black.svg",
|
||||||
|
"gmc_cckw_353_supply_black.svg",
|
||||||
|
"gmc_cckw_363_supply_black.svg",
|
||||||
|
"gmc_cckw_363_transport_black.svg",
|
||||||
|
"half_track_black.svg",
|
||||||
|
"is_1_black.svg",
|
||||||
|
"jeep_black.svg",
|
||||||
|
"jeep_willys_black.svg",
|
||||||
|
"kar98k_black.svg",
|
||||||
|
"kar98k_x8_black.svg",
|
||||||
|
"kubelwagen_black.svg",
|
||||||
|
"kv2_black.svg",
|
||||||
|
"lanchester_black.svg",
|
||||||
|
"lee_enfield_jungle_carbine_black.svg",
|
||||||
|
"lee_enfield_n4_black.svg",
|
||||||
|
"lee_enfield_pattern_1914_black.svg",
|
||||||
|
"lee_enfield_pattern_1914_sniper_black.svg",
|
||||||
|
"lewis_gun_black.svg",
|
||||||
|
"luger_p08_black.svg",
|
||||||
|
"m1903_springfield_black.svg",
|
||||||
|
"m1903_springfield_sniper_black.svg",
|
||||||
|
"m1918a2_bar_black.svg",
|
||||||
|
"m1_57mm_cannon_black.svg",
|
||||||
|
"m1_carbine_black.svg",
|
||||||
|
"m1_garand_black.svg",
|
||||||
|
"m1a1_at_mine_black.svg",
|
||||||
|
"m24_stielhandgranate_black.svg",
|
||||||
|
"m2_ap_mine_black.svg",
|
||||||
|
"m2_flamethrower_black.svg",
|
||||||
|
"m3_grease_gun_black.svg",
|
||||||
|
"m3_half_track_black.svg",
|
||||||
|
"m3_knife_black.svg",
|
||||||
|
"m43_stielhandgranate_black.svg",
|
||||||
|
"m4a3_105mm_black.svg",
|
||||||
|
"m8_greyhound_black.svg",
|
||||||
|
"m97_black.svg",
|
||||||
|
"mg34_black.svg",
|
||||||
|
"mg42_black.svg",
|
||||||
|
"mills_bomb_black.svg",
|
||||||
|
"mk2_grenade_black.svg",
|
||||||
|
"mosin_nagant_1891_black.svg",
|
||||||
|
"mosin_nagant_9130_black.svg",
|
||||||
|
"mosin_nagant_m38_black.svg",
|
||||||
|
"mp40_black.svg",
|
||||||
|
"mpl50_spade_black.svg",
|
||||||
|
"nagant_m1895_black.svg",
|
||||||
|
"no82_grenade_black.svg",
|
||||||
|
"opel_blitz_supply_black.svg",
|
||||||
|
"opel_blitz_transport_black.svg",
|
||||||
|
"pak_40_75mm_black.svg",
|
||||||
|
"panzer_iii_ausf_n_black.svg",
|
||||||
|
"panzerschreck_black.svg",
|
||||||
|
"piat_black.svg",
|
||||||
|
"pomz_ap_mine_black.svg",
|
||||||
|
"ppsh41_black.svg",
|
||||||
|
"ppsh_41w_drum_black.svg",
|
||||||
|
"precision_strike_black.svg",
|
||||||
|
"ptrs41_black.svg",
|
||||||
|
"qf_6_pounder_black.svg",
|
||||||
|
"rg42_grenade_black.svg",
|
||||||
|
"rifle_no4_mk_i_black.svg",
|
||||||
|
"rifle_no4_mk_i_sniper_black.svg",
|
||||||
|
"rifle_no5_mk_i_black.svg",
|
||||||
|
"satchel_charge_black.svg",
|
||||||
|
"scoped_mosin_nagant_9130_black.svg",
|
||||||
|
"scoped_svt40_black.svg",
|
||||||
|
"sdkfz_121_luchs_black.svg",
|
||||||
|
"sdkfz_161_panzer_iv_black.svg",
|
||||||
|
"sdkfz_171_panther_black.svg",
|
||||||
|
"sdkfz_181_tiger_1_black.svg",
|
||||||
|
"sdkfz_234_puma_black.svg",
|
||||||
|
"sdkfz_251_half_track_black.svg",
|
||||||
|
"sherman_m4a3e2_76_black.svg",
|
||||||
|
"sherman_m4a3e2_black.svg",
|
||||||
|
"sherman_m4a3_75w_black.svg",
|
||||||
|
"smle_no1_mk_iii_black.svg",
|
||||||
|
"sten_gun_black.svg",
|
||||||
|
"sten_gun_mk_ii_black.svg",
|
||||||
|
"stg44_black.svg",
|
||||||
|
"strafing_run_black.svg",
|
||||||
|
"stuart_m5a1_black.svg",
|
||||||
|
"sturmpanzer_iv_black.svg",
|
||||||
|
"svt40_black.svg",
|
||||||
|
"s_mine_black.svg",
|
||||||
|
"t34_76_black.svg",
|
||||||
|
"t70_black.svg",
|
||||||
|
"tellermine_43_black.svg",
|
||||||
|
"tetrarch_black.svg",
|
||||||
|
"thompson_black.svg",
|
||||||
|
"tm35_at_mine_black.svg",
|
||||||
|
"tokarev_tt33_black.svg",
|
||||||
|
"walther_p38_black.svg",
|
||||||
|
"webley_revolver_black.svg",
|
||||||
|
"zis2_57mm_cannon_black.svg",
|
||||||
|
"zis5_supply_black.svg",
|
||||||
|
"zis5_transport_black.svg",
|
||||||
|
]);
|
||||||
|
|
||||||
|
const CURRENT_MATCH_RCON_WEAPON_ICON_ENTRIES = Object.freeze([
|
||||||
|
["105MM HOWITZER [M4A3 (105mm)]", "m4a3_105mm_black.svg"],
|
||||||
|
["122MM HOWITZER [M1938 (M-30)]", "zis2_57mm_cannon_black.svg"],
|
||||||
|
["150MM HOWITZER [sFH 18]", "pak_40_75mm_black.svg"],
|
||||||
|
["152MM M-10T [KV-2]", "kv2_black.svg"],
|
||||||
|
["155MM HOWITZER [M114]", "m1_57mm_cannon_black.svg"],
|
||||||
|
["19-K 45MM [BA-10]", "ba10_black.svg"],
|
||||||
|
["20MM KWK 30 [Sd.Kfz.121 Luchs]", "sdkfz_121_luchs_black.svg"],
|
||||||
|
["230MM PETARD [Churchill Mk III A.V.R.E.]", "churchill_mk_iii_avre_black.svg"],
|
||||||
|
["37MM CANNON [M3 Stuart Honey]", "stuart_m5a1_black.svg"],
|
||||||
|
["37MM CANNON [Stuart M5A1]", "stuart_m5a1_black.svg"],
|
||||||
|
["45MM M1937 [T70]", "t70_black.svg"],
|
||||||
|
["50mm KwK 39/1 [Sd.Kfz.234 Puma]", "sdkfz_234_puma_black.svg"],
|
||||||
|
["57MM CANNON [M1 57mm]", "m1_57mm_cannon_black.svg"],
|
||||||
|
["57MM CANNON [ZiS-2]", "zis2_57mm_cannon_black.svg"],
|
||||||
|
["60L (Supply)", "60l_supply_black.svg"],
|
||||||
|
["60L (Transport)", "60l_transport_black.svg"],
|
||||||
|
["7.5CM KwK 37 [Panzer III Ausf.N]", "panzer_iii_ausf_n_black.svg"],
|
||||||
|
["7.5CM KwK 37 [Sd.Kfz.161 Panzer IV]", "sdkfz_161_panzer_iv_black.svg"],
|
||||||
|
["75MM CANNON [PAK 40]", "pak_40_75mm_black.svg"],
|
||||||
|
["75MM CANNON [Sd.Kfz.161 Panzer IV]", "sdkfz_161_panzer_iv_black.svg"],
|
||||||
|
["75MM CANNON [Sd.Kfz.171 Panther]", "sdkfz_171_panther_black.svg"],
|
||||||
|
["75MM CANNON [Sherman M4A3(75)W]", "sherman_m4a3_75w_black.svg"],
|
||||||
|
["75MM M3 GUN [Sherman M4A3E2]", "sherman_m4a3e2_black.svg"],
|
||||||
|
["76MM M1 GUN [Sherman M4A3E2(76)]", "sherman_m4a3e2_76_black.svg"],
|
||||||
|
["76MM ZiS-5 [T34/76]", "t34_76_black.svg"],
|
||||||
|
["88 KWK 36 L/56 [Sd.Kfz.181 Tiger 1]", "sdkfz_181_tiger_1_black.svg"],
|
||||||
|
["A.P. Shrapnel Mine Mk II", "s_mine_black.svg"],
|
||||||
|
["A.T. Mine G.S. Mk V", "at_mine_gs_mk_v_black.svg"],
|
||||||
|
["BA-10", "ba10_black.svg"],
|
||||||
|
["BAZOOKA", "bazooka_black.svg"],
|
||||||
|
["Bedford OYD (Supply)", "bedford_oyd_supply_black.svg"],
|
||||||
|
["Bedford OYD (Transport)", "bedford_oyd_transport_black.svg"],
|
||||||
|
["Bishop SP 25pdr", "bishop_sp_25pdr_black.svg"],
|
||||||
|
["BOMBING RUN", "bombing_run_black.svg"],
|
||||||
|
["Boys Anti-tank Rifle", "boys_anti_tank_rifle_black.svg"],
|
||||||
|
["Bren Gun", "bren_gun_black.svg"],
|
||||||
|
["BROWNING M1919", "browning_m1919_black.svg"],
|
||||||
|
["Canadian Sten Mk.II", "canadian_sten_mk_ii_black.svg"],
|
||||||
|
["Churchill Mk III A.V.R.E.", "churchill_mk_iii_avre_black.svg"],
|
||||||
|
["Churchill Mk.III", "churchill_mk_iii_black.svg"],
|
||||||
|
["COAXIAL BESA [Cromwell]", "cromwell_black.svg"],
|
||||||
|
["COAXIAL BESA [Crusader Mk.III]", "crusader_mk_iii_black.svg"],
|
||||||
|
["COAXIAL BESA [Daimler]", "m8_greyhound_black.svg"],
|
||||||
|
["COAXIAL BESA [Tetrarch]", "tetrarch_black.svg"],
|
||||||
|
["COAXIAL BESA 7.92mm", "cromwell_black.svg"],
|
||||||
|
["COAXIAL BESA 7.92mm [Churchill Mk III A.V.R.E.]", "churchill_mk_iii_avre_black.svg"],
|
||||||
|
["COAXIAL BESA 7.92mm [Churchill Mk.III]", "churchill_mk_iii_black.svg"],
|
||||||
|
["COAXIAL BESA 7.92mm [Churchill Mk.VII]", "churchill_mk_vii_black.svg"],
|
||||||
|
["COAXIAL BESA 7.92mm [M4A3 (105mm)]", "m4a3_105mm_black.svg"],
|
||||||
|
["COAXIAL DT [BA-10]", "ba10_black.svg"],
|
||||||
|
["COAXIAL DT [IS-1]", "is_1_black.svg"],
|
||||||
|
["COAXIAL DT [T34/76]", "t34_76_black.svg"],
|
||||||
|
["COAXIAL DT [T70]", "t70_black.svg"],
|
||||||
|
["COAXIAL M1919 [Firefly]", "firefly_black.svg"],
|
||||||
|
["COAXIAL M1919 [M3 Stuart Honey]", "stuart_m5a1_black.svg"],
|
||||||
|
["COAXIAL M1919 [M4A3 (105mm)]", "m4a3_105mm_black.svg"],
|
||||||
|
["COAXIAL M1919 [M8 Greyhound]", "m8_greyhound_black.svg"],
|
||||||
|
["COAXIAL M1919 [Sherman M4A3(75)W]", "sherman_m4a3_75w_black.svg"],
|
||||||
|
["COAXIAL M1919 [Sherman M4A3E2(76)]", "sherman_m4a3e2_76_black.svg"],
|
||||||
|
["COAXIAL M1919 [Sherman M4A3E2]", "sherman_m4a3e2_black.svg"],
|
||||||
|
["COAXIAL M1919 [Stuart M5A1]", "stuart_m5a1_black.svg"],
|
||||||
|
["COAXIAL MG34", "mg34_black.svg"],
|
||||||
|
["COAXIAL MG34 [Panzer III Ausf.N]", "panzer_iii_ausf_n_black.svg"],
|
||||||
|
["COAXIAL MG34 [Sd.Kfz.121 Luchs]", "sdkfz_121_luchs_black.svg"],
|
||||||
|
["COAXIAL MG34 [Sd.Kfz.161 Panzer IV]", "sdkfz_161_panzer_iv_black.svg"],
|
||||||
|
["COAXIAL MG34 [Sd.Kfz.171 Panther]", "sdkfz_171_panther_black.svg"],
|
||||||
|
["COAXIAL MG34 [Sd.Kfz.181 Tiger 1]", "sdkfz_181_tiger_1_black.svg"],
|
||||||
|
["COAXIAL MG34 [Sd.Kfz.234 Puma]", "sdkfz_234_puma_black.svg"],
|
||||||
|
["COLT M1911", "colt_1911_black.svg"],
|
||||||
|
["Cromwell", "cromwell_black.svg"],
|
||||||
|
["D-5T 85MM [IS-1]", "is_1_black.svg"],
|
||||||
|
["Daimler", "m8_greyhound_black.svg"],
|
||||||
|
["DP-27", "lewis_gun_black.svg"],
|
||||||
|
["Enfield No.2 Mk I", "enfield_no2_mk_i_black.svg"],
|
||||||
|
["FairbairnSykes", "m3_knife_black.svg"],
|
||||||
|
["FELDSPATEN", "feldspaten_black.svg"],
|
||||||
|
["FG42", "fg42_black.svg"],
|
||||||
|
["FG42 x4", "fg42_x4_black.svg"],
|
||||||
|
["Firefly", "firefly_black.svg"],
|
||||||
|
["FLAMETHROWER", "m2_flamethrower_black.svg"],
|
||||||
|
["FLAMMENWERFER 41", "flammenwerfer41_black.svg"],
|
||||||
|
["FLARE GUN", "flare_gun_black.svg"],
|
||||||
|
["FN-Inglis No 2 MK I", "fn_inglis_no2_mk_i_black.svg"],
|
||||||
|
["GAZ-67", "jeep_black.svg"],
|
||||||
|
["GEWEHR 43", "gewehr_black.svg"],
|
||||||
|
["GMC CCKW 353 (Supply)", "gmc_cckw_353_supply_black.svg"],
|
||||||
|
["GMC CCKW 363 (Supply)", "gmc_cckw_363_supply_black.svg"],
|
||||||
|
["GMC CCKW 363 (Transport)", "gmc_cckw_363_transport_black.svg"],
|
||||||
|
["Half-track", "half_track_black.svg"],
|
||||||
|
["HULL BESA [Cromwell]", "cromwell_black.svg"],
|
||||||
|
["HULL BESA 7.92mm [Churchill Mk.III]", "churchill_mk_iii_black.svg"],
|
||||||
|
["HULL BESA 7.92mm [Churchill Mk.VII]", "churchill_mk_vii_black.svg"],
|
||||||
|
["HULL BESA 7.92mm [M4A3 (105mm)]", "m4a3_105mm_black.svg"],
|
||||||
|
["HULL DT [IS-1]", "is_1_black.svg"],
|
||||||
|
["HULL DT [KV-2]", "kv2_black.svg"],
|
||||||
|
["HULL DT [T34/76]", "t34_76_black.svg"],
|
||||||
|
["HULL M1919 [M4A3 (105mm)]", "m4a3_105mm_black.svg"],
|
||||||
|
["HULL M1919 [Sherman M4A3(75)W]", "sherman_m4a3_75w_black.svg"],
|
||||||
|
["HULL M1919 [Sherman M4A3E2(76)]", "sherman_m4a3e2_76_black.svg"],
|
||||||
|
["HULL M1919 [Sherman M4A3E2]", "sherman_m4a3e2_black.svg"],
|
||||||
|
["HULL M1919 [Stuart M5A1]", "stuart_m5a1_black.svg"],
|
||||||
|
["HULL MG34 [Sd.Kfz.161 Panzer IV]", "sdkfz_161_panzer_iv_black.svg"],
|
||||||
|
["HULL MG34 [Sd.Kfz.171 Panther]", "sdkfz_171_panther_black.svg"],
|
||||||
|
["HULL MG34 [Sd.Kfz.181 Tiger 1]", "sdkfz_181_tiger_1_black.svg"],
|
||||||
|
["IS-1", "is_1_black.svg"],
|
||||||
|
["Jeep", "jeep_black.svg"],
|
||||||
|
["Jeep Willys", "jeep_willys_black.svg"],
|
||||||
|
["KARABINER 98K", "kar98k_black.svg"],
|
||||||
|
["KARABINER 98K x8", "kar98k_x8_black.svg"],
|
||||||
|
["Kubelwagen", "kubelwagen_black.svg"],
|
||||||
|
["KV-2", "kv2_black.svg"],
|
||||||
|
["Lanchester", "lanchester_black.svg"],
|
||||||
|
["Lee-Enfield Pattern 1914", "lee_enfield_pattern_1914_black.svg"],
|
||||||
|
["Lee-Enfield Pattern 1914 Sniper", "lee_enfield_pattern_1914_sniper_black.svg"],
|
||||||
|
["LeeEnfield Jungle Carbine", "lee_enfield_jungle_carbine_black.svg"],
|
||||||
|
["LeeEnfield No.4 Mk I", "lee_enfield_n4_black.svg"],
|
||||||
|
["Lewis Gun", "lewis_gun_black.svg"],
|
||||||
|
["LUGER P08", "luger_p08_black.svg"],
|
||||||
|
["M1 CARBINE", "m1_carbine_black.svg"],
|
||||||
|
["M1 GARAND", "m1_garand_black.svg"],
|
||||||
|
["M1903 SPRINGFIELD", "m1903_springfield_sniper_black.svg"],
|
||||||
|
["M1918A2 BAR", "m1918a2_bar_black.svg"],
|
||||||
|
["M1919 SPRINGFIELD", "m1903_springfield_black.svg"],
|
||||||
|
["M1928A1 THOMPSON", "thompson_black.svg"],
|
||||||
|
["M1A1 AT MINE", "m1a1_at_mine_black.svg"],
|
||||||
|
["M1A1 THOMPSON", "thompson_black.svg"],
|
||||||
|
["M2 AP MINE", "m2_ap_mine_black.svg"],
|
||||||
|
["M2 Browning [Half-track]", "half_track_black.svg"],
|
||||||
|
["M2 Browning [M3 Half-track]", "m3_half_track_black.svg"],
|
||||||
|
["M2 FLAMETHROWER", "m2_flamethrower_black.svg"],
|
||||||
|
["M24 STIELHANDGRANATE", "m24_stielhandgranate_black.svg"],
|
||||||
|
["M3 GREASE GUN", "m3_grease_gun_black.svg"],
|
||||||
|
["M3 Half-track", "m3_half_track_black.svg"],
|
||||||
|
["M3 KNIFE", "m3_knife_black.svg"],
|
||||||
|
["M3 Stuart Honey", "stuart_m5a1_black.svg"],
|
||||||
|
["M43 STIELHANDGRANATE", "m43_stielhandgranate_black.svg"],
|
||||||
|
["M4A3 (105mm)", "m4a3_105mm_black.svg"],
|
||||||
|
["M6 37mm [M8 Greyhound]", "m8_greyhound_black.svg"],
|
||||||
|
["M8 Greyhound", "m8_greyhound_black.svg"],
|
||||||
|
["M97 TRENCH GUN", "m97_black.svg"],
|
||||||
|
["MG 42 [Sd.Kfz 251 Half-track]", "sdkfz_251_half_track_black.svg"],
|
||||||
|
["MG34", "mg34_black.svg"],
|
||||||
|
["MG42", "mg42_black.svg"],
|
||||||
|
["Mills Bomb", "mills_bomb_black.svg"],
|
||||||
|
["MK2 GRENADE", "mk2_grenade_black.svg"],
|
||||||
|
["MOLOTOV", "rg42_grenade_black.svg"],
|
||||||
|
["MOSIN NAGANT 1891", "mosin_nagant_1891_black.svg"],
|
||||||
|
["MOSIN NAGANT 91/30", "mosin_nagant_9130_black.svg"],
|
||||||
|
["MOSIN NAGANT M38", "mosin_nagant_m38_black.svg"],
|
||||||
|
["MP40", "mp40_black.svg"],
|
||||||
|
["MPL-50 SPADE", "mpl50_spade_black.svg"],
|
||||||
|
["NAGANT M1895", "nagant_m1895_black.svg"],
|
||||||
|
["No.2 Mk 5 Flare Pistol", "flare_gun_black.svg"],
|
||||||
|
["No.77", "no82_grenade_black.svg"],
|
||||||
|
["No.82 Grenade", "no82_grenade_black.svg"],
|
||||||
|
["Opel Blitz (Supply)", "opel_blitz_supply_black.svg"],
|
||||||
|
["Opel Blitz (Transport)", "opel_blitz_transport_black.svg"],
|
||||||
|
["OQF 57MM [Churchill Mk.III]", "churchill_mk_iii_black.svg"],
|
||||||
|
["OQF 57MM [Crusader Mk.III]", "crusader_mk_iii_black.svg"],
|
||||||
|
["OQF 57MM [Sturmpanzer IV]", "sturmpanzer_iv_black.svg"],
|
||||||
|
["OQF 6 - POUNDER Mk.V [Churchill Mk.III]", "churchill_mk_iii_black.svg"],
|
||||||
|
["OQF 75MM [Churchill Mk.VII]", "churchill_mk_vii_black.svg"],
|
||||||
|
["OQF 75MM [Cromwell]", "cromwell_black.svg"],
|
||||||
|
["Ordnance QF 6-pounder", "qf_6_pounder_black.svg"],
|
||||||
|
["Panzer III Ausf.N", "panzer_iii_ausf_n_black.svg"],
|
||||||
|
["PANZERSCHRECK", "panzerschreck_black.svg"],
|
||||||
|
["PETARD 230MM [M4A3 (105mm)]", "m4a3_105mm_black.svg"],
|
||||||
|
["PIAT", "piat_black.svg"],
|
||||||
|
["POMZ AP MINE", "pomz_ap_mine_black.svg"],
|
||||||
|
["PPSH 41", "ppsh41_black.svg"],
|
||||||
|
["PPSH 41 W/DRUM", "ppsh_41w_drum_black.svg"],
|
||||||
|
["PRECISION STRIKE", "precision_strike_black.svg"],
|
||||||
|
["PTRS-41", "ptrs41_black.svg"],
|
||||||
|
["QF 17-POUNDER [Firefly]", "firefly_black.svg"],
|
||||||
|
["QF 2-POUNDER [Daimler]", "m8_greyhound_black.svg"],
|
||||||
|
["QF 2-POUNDER [Tetrarch]", "tetrarch_black.svg"],
|
||||||
|
["QF 25 POUNDER [Bishop SP 25pdr]", "bishop_sp_25pdr_black.svg"],
|
||||||
|
["QF 25-POUNDER [QF 25-Pounder]", "bishop_sp_25pdr_black.svg"],
|
||||||
|
["QF 6-POUNDER [QF 6-Pounder]", "qf_6_pounder_black.svg"],
|
||||||
|
["QF 75MM [Cromwell]", "cromwell_black.svg"],
|
||||||
|
["RG-42 GRENADE", "rg42_grenade_black.svg"],
|
||||||
|
["Rifle No.4 Mk I", "rifle_no4_mk_i_black.svg"],
|
||||||
|
["Rifle No.4 Mk I Sniper", "rifle_no4_mk_i_sniper_black.svg"],
|
||||||
|
["Rifle No.5 Mk I", "rifle_no5_mk_i_black.svg"],
|
||||||
|
["S-MINE", "s_mine_black.svg"],
|
||||||
|
["Satchel", "satchel_charge_black.svg"],
|
||||||
|
["SATCHEL", "satchel_charge_black.svg"],
|
||||||
|
["SATCHEL CHARGE", "satchel_charge_black.svg"],
|
||||||
|
["SCOPED MOSIN NAGANT 91/30", "scoped_mosin_nagant_9130_black.svg"],
|
||||||
|
["SCOPED SVT40", "scoped_svt40_black.svg"],
|
||||||
|
["Sd.Kfz 251 Half-track", "sdkfz_251_half_track_black.svg"],
|
||||||
|
["Sd.Kfz.121 Luchs", "sdkfz_121_luchs_black.svg"],
|
||||||
|
["Sd.Kfz.161 Panzer IV", "sdkfz_161_panzer_iv_black.svg"],
|
||||||
|
["Sd.Kfz.171 Panther", "sdkfz_171_panther_black.svg"],
|
||||||
|
["Sd.Kfz.181 Tiger 1", "sdkfz_181_tiger_1_black.svg"],
|
||||||
|
["Sd.Kfz.234 Puma", "sdkfz_234_puma_black.svg"],
|
||||||
|
["Sherman M4A3(75)W", "sherman_m4a3_75w_black.svg"],
|
||||||
|
["Sherman M4A3E2", "sherman_m4a3e2_black.svg"],
|
||||||
|
["Sherman M4A3E2(76)", "sherman_m4a3e2_76_black.svg"],
|
||||||
|
["SMLE No.1 Mk III", "smle_no1_mk_iii_black.svg"],
|
||||||
|
["Sten Gun", "sten_gun_black.svg"],
|
||||||
|
["Sten Gun Mk.II", "sten_gun_mk_ii_black.svg"],
|
||||||
|
["Sten Gun Mk.V", "sten_gun_black.svg"],
|
||||||
|
["STG44", "stg44_black.svg"],
|
||||||
|
["STRAFING RUN", "strafing_run_black.svg"],
|
||||||
|
["Stuart M5A1", "stuart_m5a1_black.svg"],
|
||||||
|
["StuH 43 L/12 [Sturmpanzer IV]", "sturmpanzer_iv_black.svg"],
|
||||||
|
["Sturmpanzer IV", "sturmpanzer_iv_black.svg"],
|
||||||
|
["SVT40", "svt40_black.svg"],
|
||||||
|
["T34/76", "t34_76_black.svg"],
|
||||||
|
["T70", "t70_black.svg"],
|
||||||
|
["TELLERMINE 43", "tellermine_43_black.svg"],
|
||||||
|
["Tetrarch", "tetrarch_black.svg"],
|
||||||
|
["TM-35 AT MINE", "tm35_at_mine_black.svg"],
|
||||||
|
["TOKAREV TT33", "tokarev_tt33_black.svg"],
|
||||||
|
["UNKNOWN", "precision_strike_black.svg"],
|
||||||
|
["WALTHER P38", "walther_p38_black.svg"],
|
||||||
|
["Webley MK VI", "webley_revolver_black.svg"],
|
||||||
|
["ZIS-5 (Supply)", "zis5_supply_black.svg"],
|
||||||
|
["ZIS-5 (Transport)", "zis5_transport_black.svg"],
|
||||||
|
]);
|
||||||
|
|
||||||
|
const CURRENT_MATCH_EXTRA_WEAPON_ALIASES = Object.freeze({
|
||||||
|
"m1 bazooka": "BAZOOKA",
|
||||||
|
"us bazooka": "BAZOOKA",
|
||||||
|
bazooka: "BAZOOKA",
|
||||||
|
bren: "Bren Gun",
|
||||||
|
"bren gun": "Bren Gun",
|
||||||
|
m1919: "BROWNING M1919",
|
||||||
|
"m1919 browning": "BROWNING M1919",
|
||||||
|
"browning m1919": "BROWNING M1919",
|
||||||
|
browning: "BROWNING M1919",
|
||||||
|
"us tank machine gun": "BROWNING M1919",
|
||||||
|
"us coaxial mg": "BROWNING M1919",
|
||||||
|
"us vehicle mg": "BROWNING M1919",
|
||||||
|
"coaxial m1919": "BROWNING M1919",
|
||||||
|
"m1919 coaxial": "BROWNING M1919",
|
||||||
|
colt: "COLT M1911",
|
||||||
|
"colt 1911": "COLT M1911",
|
||||||
|
"colt m1911": "COLT M1911",
|
||||||
|
m1911: "COLT M1911",
|
||||||
|
"m1911 pistol": "COLT M1911",
|
||||||
|
dp27: "DP-27",
|
||||||
|
"dp 27": "DP-27",
|
||||||
|
"dp 27 lmg": "DP-27",
|
||||||
|
"flammenwerfer 41": "FLAMMENWERFER 41",
|
||||||
|
flammenwerfer: "FLAMMENWERFER 41",
|
||||||
|
flammenwefer41: "FLAMMENWERFER 41",
|
||||||
|
"german flamethrower": "FLAMMENWERFER 41",
|
||||||
|
"gewehr 43": "GEWEHR 43",
|
||||||
|
gewehr43: "GEWEHR 43",
|
||||||
|
g43: "GEWEHR 43",
|
||||||
|
kar98k: "KARABINER 98K",
|
||||||
|
"kar 98k": "KARABINER 98K",
|
||||||
|
kar98: "KARABINER 98K",
|
||||||
|
k98: "KARABINER 98K",
|
||||||
|
k98k: "KARABINER 98K",
|
||||||
|
"scoped kar98k": "KARABINER 98K x8",
|
||||||
|
"kar98k x8": "KARABINER 98K x8",
|
||||||
|
"kar 98k x8": "KARABINER 98K x8",
|
||||||
|
"german sniper kar98k": "KARABINER 98K x8",
|
||||||
|
"sniper kar98k": "KARABINER 98K x8",
|
||||||
|
"lee enfield no 4": "LeeEnfield No.4 Mk I",
|
||||||
|
"lee enfield no4": "LeeEnfield No.4 Mk I",
|
||||||
|
"lee enfield": "LeeEnfield No.4 Mk I",
|
||||||
|
enfield: "LeeEnfield No.4 Mk I",
|
||||||
|
luger: "LUGER P08",
|
||||||
|
p08: "LUGER P08",
|
||||||
|
"luger p08": "LUGER P08",
|
||||||
|
"m1903 springfield": "M1903 SPRINGFIELD",
|
||||||
|
springfield: "M1903 SPRINGFIELD",
|
||||||
|
"us sniper springfield": "M1903 SPRINGFIELD",
|
||||||
|
"scoped springfield": "M1903 SPRINGFIELD",
|
||||||
|
"m1 carbine": "M1 CARBINE",
|
||||||
|
"m1 carabine": "M1 CARBINE",
|
||||||
|
"m1 garand": "M1 GARAND",
|
||||||
|
garand: "M1 GARAND",
|
||||||
|
"m2 flamethrower": "M2 FLAMETHROWER",
|
||||||
|
"us flamethrower": "M2 FLAMETHROWER",
|
||||||
|
"m3 grease gun": "M3 GREASE GUN",
|
||||||
|
"grease gun": "M3 GREASE GUN",
|
||||||
|
m97: "M97 TRENCH GUN",
|
||||||
|
"winchester m97": "M97 TRENCH GUN",
|
||||||
|
"trench gun": "M97 TRENCH GUN",
|
||||||
|
shotgun: "M97 TRENCH GUN",
|
||||||
|
mg34: "MG34",
|
||||||
|
"mg 34": "MG34",
|
||||||
|
"german tank machine gun": "MG34",
|
||||||
|
"german coaxial mg": "MG34",
|
||||||
|
"german vehicle mg": "MG34",
|
||||||
|
"coaxial mg34": "COAXIAL MG34",
|
||||||
|
"mg34 coaxial": "COAXIAL MG34",
|
||||||
|
mg42: "MG42",
|
||||||
|
"mg 42": "MG42",
|
||||||
|
"mosin nagant 1891": "MOSIN NAGANT 1891",
|
||||||
|
"mosin 1891": "MOSIN NAGANT 1891",
|
||||||
|
"mosin nagant 91 30": "MOSIN NAGANT 91/30",
|
||||||
|
"mosin 9130": "MOSIN NAGANT 91/30",
|
||||||
|
"mosin nagant 9130": "MOSIN NAGANT 91/30",
|
||||||
|
"mosin nagant m38": "MOSIN NAGANT M38",
|
||||||
|
"mosin m38": "MOSIN NAGANT M38",
|
||||||
|
m38: "MOSIN NAGANT M38",
|
||||||
|
"nagant m1895": "NAGANT M1895",
|
||||||
|
"nagant revolver": "NAGANT M1895",
|
||||||
|
panzerschreck: "PANZERSCHRECK",
|
||||||
|
panzerchreck: "PANZERSCHRECK",
|
||||||
|
raketenpanzerbuchse: "PANZERSCHRECK",
|
||||||
|
piat: "PIAT",
|
||||||
|
"ppsh 41": "PPSH 41",
|
||||||
|
ppsh41: "PPSH 41",
|
||||||
|
ppsh: "PPSH 41",
|
||||||
|
"ppsh 41 drum": "PPSH 41 W/DRUM",
|
||||||
|
"ppsh 41 w drum": "PPSH 41 W/DRUM",
|
||||||
|
"ppsh drum": "PPSH 41 W/DRUM",
|
||||||
|
"ppsh41 drum": "PPSH 41 W/DRUM",
|
||||||
|
"ptrs 41": "PTRS-41",
|
||||||
|
ptrs41: "PTRS-41",
|
||||||
|
ptrs: "PTRS-41",
|
||||||
|
"scoped mosin nagant 91 30": "SCOPED MOSIN NAGANT 91/30",
|
||||||
|
"scoped mosin nagant 9130": "SCOPED MOSIN NAGANT 91/30",
|
||||||
|
"soviet sniper mosin": "SCOPED MOSIN NAGANT 91/30",
|
||||||
|
"sniper mosin": "SCOPED MOSIN NAGANT 91/30",
|
||||||
|
"scoped svt 40": "SCOPED SVT40",
|
||||||
|
"scoped svt40": "SCOPED SVT40",
|
||||||
|
"svt40 scoped": "SCOPED SVT40",
|
||||||
|
"sten mk v": "Sten Gun Mk.V",
|
||||||
|
sten: "Sten Gun",
|
||||||
|
stg44: "STG44",
|
||||||
|
"stg 44": "STG44",
|
||||||
|
"sturmgewehr 44": "STG44",
|
||||||
|
"svt 40": "SVT40",
|
||||||
|
svt40: "SVT40",
|
||||||
|
"m1a1 thompson": "M1A1 THOMPSON",
|
||||||
|
m1a1: "M1A1 THOMPSON",
|
||||||
|
"m1928 thompson": "M1928A1 THOMPSON",
|
||||||
|
thompson: "M1A1 THOMPSON",
|
||||||
|
"tokarev tt 33": "TOKAREV TT33",
|
||||||
|
"tokarev tt33": "TOKAREV TT33",
|
||||||
|
tt33: "TOKAREV TT33",
|
||||||
|
"walther p38": "WALTHER P38",
|
||||||
|
p38: "WALTHER P38",
|
||||||
|
webley: "Webley MK VI",
|
||||||
|
"webley revolver": "Webley MK VI",
|
||||||
|
});
|
||||||
|
|
||||||
|
function normalizeCurrentMatchWeaponLookupKey(value) {
|
||||||
|
return String(value || "")
|
||||||
|
.normalize("NFD")
|
||||||
|
.replace(/[\u0300-\u036f]/g, "")
|
||||||
|
.toLowerCase()
|
||||||
|
.replace(/[^a-z0-9]+/g, " ")
|
||||||
|
.trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
function buildCurrentMatchBlackWeaponLookup() {
|
||||||
|
const lookup = Object.create(null);
|
||||||
|
CURRENT_MATCH_RCON_WEAPON_ICON_ENTRIES.forEach(([weapon, iconFile]) => {
|
||||||
|
const icon = `${CURRENT_MATCH_BLACK_WEAPON_ICON_PATH}${iconFile}`;
|
||||||
|
const normalizedWeapon = normalizeCurrentMatchWeaponLookupKey(weapon);
|
||||||
|
lookup[normalizedWeapon] = Object.freeze({
|
||||||
|
label: weapon,
|
||||||
|
icon,
|
||||||
|
iconFile,
|
||||||
|
});
|
||||||
|
});
|
||||||
|
Object.entries(CURRENT_MATCH_EXTRA_WEAPON_ALIASES).forEach(([alias, weapon]) => {
|
||||||
|
const normalizedAlias = normalizeCurrentMatchWeaponLookupKey(alias);
|
||||||
|
const normalizedWeapon = normalizeCurrentMatchWeaponLookupKey(weapon);
|
||||||
|
if (!lookup[normalizedAlias] && lookup[normalizedWeapon]) {
|
||||||
|
lookup[normalizedAlias] = lookup[normalizedWeapon];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return Object.freeze(lookup);
|
||||||
|
}
|
||||||
|
|
||||||
|
function validateCurrentMatchBlackWeaponMapping() {
|
||||||
|
const expectedIcons = new Set(CURRENT_MATCH_BLACK_WEAPON_ICON_FILES);
|
||||||
|
const invalidIcons = [];
|
||||||
|
const mappedWeapons = [];
|
||||||
|
CURRENT_MATCH_RCON_WEAPON_ICON_ENTRIES.forEach(([weapon, iconFile]) => {
|
||||||
|
mappedWeapons.push(weapon);
|
||||||
|
if (!expectedIcons.has(iconFile)) {
|
||||||
|
invalidIcons.push(`${weapon}: ${iconFile}`);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
const usedIcons = new Set(CURRENT_MATCH_RCON_WEAPON_ICON_ENTRIES.map(([, iconFile]) => iconFile));
|
||||||
|
const unusedIcons = CURRENT_MATCH_BLACK_WEAPON_ICON_FILES.filter(
|
||||||
|
(iconFile) => !usedIcons.has(iconFile),
|
||||||
|
);
|
||||||
|
if (invalidIcons.length > 0 || unusedIcons.length > 0) {
|
||||||
|
console.warn("Current match black weapon icon mapping needs review.", {
|
||||||
|
invalidIcons,
|
||||||
|
unusedIcons,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const CURRENT_MATCH_BLACK_WEAPON_LOOKUP = buildCurrentMatchBlackWeaponLookup();
|
||||||
|
const CURRENT_MATCH_BLACK_UNKNOWN_WEAPON =
|
||||||
|
CURRENT_MATCH_BLACK_WEAPON_LOOKUP[normalizeCurrentMatchWeaponLookupKey("UNKNOWN")] ||
|
||||||
|
Object.freeze({
|
||||||
|
label: "UNKNOWN",
|
||||||
|
icon: `${CURRENT_MATCH_BLACK_WEAPON_ICON_PATH}precision_strike_black.svg`,
|
||||||
|
iconFile: "precision_strike_black.svg",
|
||||||
|
});
|
||||||
|
|
||||||
|
globalThis.HLL_VIETNAM_CURRENT_MATCH_WEAPON_ICONS = Object.freeze({
|
||||||
|
path: CURRENT_MATCH_BLACK_WEAPON_ICON_PATH,
|
||||||
|
files: CURRENT_MATCH_BLACK_WEAPON_ICON_FILES,
|
||||||
|
entries: CURRENT_MATCH_RCON_WEAPON_ICON_ENTRIES,
|
||||||
|
aliases: CURRENT_MATCH_EXTRA_WEAPON_ALIASES,
|
||||||
|
lookup: CURRENT_MATCH_BLACK_WEAPON_LOOKUP,
|
||||||
|
unknown: CURRENT_MATCH_BLACK_UNKNOWN_WEAPON,
|
||||||
|
normalize: normalizeCurrentMatchWeaponLookupKey,
|
||||||
|
});
|
||||||
|
|
||||||
|
validateCurrentMatchBlackWeaponMapping();
|
||||||
@@ -526,6 +526,14 @@ function renderKillFeedTeamBadge(team) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function resolveKillFeedWeapon(value) {
|
function resolveKillFeedWeapon(value) {
|
||||||
|
const runtimeWeaponIcons = globalThis.HLL_VIETNAM_CURRENT_MATCH_WEAPON_ICONS;
|
||||||
|
if (runtimeWeaponIcons?.lookup) {
|
||||||
|
const runtimeKey = runtimeWeaponIcons.normalize(value);
|
||||||
|
return runtimeWeaponIcons.lookup[runtimeKey] || {
|
||||||
|
label: String(value || runtimeWeaponIcons.unknown.label),
|
||||||
|
icon: runtimeWeaponIcons.unknown.icon,
|
||||||
|
};
|
||||||
|
}
|
||||||
const key = normalizeLookupText(value);
|
const key = normalizeLookupText(value);
|
||||||
return CURRENT_MATCH_WEAPONS[key] || {
|
return CURRENT_MATCH_WEAPONS[key] || {
|
||||||
label: String(value || CURRENT_MATCH_WEAPONS.unknown.label),
|
label: String(value || CURRENT_MATCH_WEAPONS.unknown.label),
|
||||||
|
|||||||
@@ -134,6 +134,7 @@
|
|||||||
</main>
|
</main>
|
||||||
</div>
|
</div>
|
||||||
<script src="./assets/js/config.js"></script>
|
<script src="./assets/js/config.js"></script>
|
||||||
|
<script src="./assets/js/current-match-weapon-icons.js"></script>
|
||||||
<script src="./assets/js/partida-actual.js"></script>
|
<script src="./assets/js/partida-actual.js"></script>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user