# Map Variant Handling Plan (Revised) **Goal:** 1. Ensure map types listed in a new `RESPECT_VARIANT_MAP_TYPES` config setting (initially just "COL") always receive a numeric suffix (`-1`, `-2`, etc.), based on their order determined by preset keywords and alphabetical sorting within keywords. 2. Ensure all other map types *never* receive a numeric suffix. 3. Correctly prioritize 16-bit map variants (identified by `bit_depth_variants` in presets) over their 8-bit counterparts, ensuring the 8-bit version is ignored/marked as extra and the 16-bit version is correctly classified ("Mapped") in the GUI preview. **Affected Files:** * `config.py`: To define the `RESPECT_VARIANT_MAP_TYPES` list. * `asset_processor.py`: To modify the classification and suffix assignment logic according to the new rule. * `Presets/Poliigon.json`: To remove the conflicting pattern. **Plan Details:** ```mermaid graph TD A[Start] --> B(Modify config.py); B --> C(Modify asset_processor.py); C --> D(Modify Presets/Poliigon.json); D --> E{Review Revised Plan}; E -- Approve --> F(Optional: Write Plan to MD); F --> G(Switch to Code Mode); E -- Request Changes --> B; G --> H[End Plan]; subgraph Modifications B[1. Add RESPECT_VARIANT_MAP_TYPES list to config.py] C[2. Update suffix logic in asset_processor.py (_inventory_and_classify_files)] D[3. Remove "*_16BIT*" pattern from move_to_extra_patterns in Presets/Poliigon.json] end ``` 1. **Modify `config.py`:** * **Action:** Introduce a new configuration list named `RESPECT_VARIANT_MAP_TYPES`. * **Value:** Initialize it as `RESPECT_VARIANT_MAP_TYPES = ["COL"]`. * **Location:** Add this near other map-related settings like `STANDARD_MAP_TYPES`. * **Purpose:** To explicitly define which map types should always respect variant numbering via suffixes. 2. **Modify `asset_processor.py`:** * **File:** `asset_processor.py` * **Method:** `_inventory_and_classify_files` * **Location:** Within Step 5, replacing the suffix assignment logic (currently lines ~470-474). * **Action:** Implement the new conditional logic for assigning the `final_map_type`. * **New Logic:** Inside the loop iterating through `final_ordered_candidates` (for each `base_map_type`): ```python # Determine final map type based on the new rule if base_map_type in self.config.respect_variant_map_types: # Check the new config list # Always assign suffix for types in the list final_map_type = f"{base_map_type}-{i + 1}" else: # Never assign suffix for types NOT in the list final_map_type = base_map_type # Assign to the final map list entry final_map_list.append({ "map_type": final_map_type, # ... rest of the dictionary assignment ... }) ``` * **Purpose:** To implement the strict rule: only types in `RESPECT_VARIANT_MAP_TYPES` get a suffix; all others do not. 3. **Modify `Presets/Poliigon.json`:** * **File:** `Presets/Poliigon.json` * **Location:** Within the `move_to_extra_patterns` list (currently line ~28). * **Action:** Remove the string `"*_16BIT*"`. * **Purpose:** To prevent premature classification of 16-bit variants as "Extra", allowing the specific 16-bit prioritization logic to function correctly.