From 26d60e407ceaf1493f7b717fc9f67513e30e6bc2 Mon Sep 17 00:00:00 2001 From: zhexu14 <64713351+zhexu14@users.noreply.github.com> Date: Sun, 26 May 2024 16:28:28 +1000 Subject: [PATCH] Handle duplicate classes due to DCS utilizing both upper and lower case --- dcs/statics.py | 8 ++++---- tools/pydcs_export.lua | 11 ++++++++++- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/dcs/statics.py b/dcs/statics.py index 739d8c09..03781508 100644 --- a/dcs/statics.py +++ b/dcs/statics.py @@ -1164,13 +1164,13 @@ class FarpHide_Dmed(unittype.StaticType): shape_name = "FarpHide_Dmed" rate = 3 - class Container_40ft(unittype.StaticType): + class Container_40ft_(unittype.StaticType): id = "container_40ft" name = "Container 40ft" shape_name = "container_40ft" rate = 1 - class Container_20ft(unittype.StaticType): + class Container_20ft_(unittype.StaticType): id = "container_20ft" name = "Container 20ft" shape_name = "container_20ft" @@ -1538,8 +1538,8 @@ class Freya_Shelter_Concrete(unittype.StaticType): "FarpHide_Med": Fortification.FarpHide_Med, "FarpHide_Dsmall": Fortification.FarpHide_Dsmall, "FarpHide_Dmed": Fortification.FarpHide_Dmed, - "container_40ft": Fortification.Container_40ft, - "container_20ft": Fortification.Container_20ft, + "container_40ft": Fortification.Container_40ft_, + "container_20ft": Fortification.Container_20ft_, "FlagPole": Fortification.FlagPole, "warning_board_a": Fortification.Warning_board_a, "warning_board_b": Fortification.Warning_board_b, diff --git a/tools/pydcs_export.lua b/tools/pydcs_export.lua index caea2d71..c23949b5 100644 --- a/tools/pydcs_export.lua +++ b/tools/pydcs_export.lua @@ -51,8 +51,17 @@ local function safe_name(name) return safeName end +-- DCS will use both capitalized and lower case names for units. +-- Keep track of used class names and suffix duplicate classes with underscore. +local used_class_names = {} local function safe_class_name(name) - return safe_name(name):gsub("^%l", string.upper) + local safeName = safe_name(name) + local safeClassName = safeName:gsub("^%l", string.upper) + if used_class_names[safeClassName] ~= nil and used_class_names[safeClassName] ~= safeName then + safeClassName = safeClassName .. '_' + end + used_class_names[safeClassName] = safeName + return safeClassName end local function safe_display_name(name)