EU-Utility/memory/2026-02-09.md

1.8 KiB

2026-02-09 - Lemontropia Suite Development

Bug Fixes - Armor System Serialization

Issue 1: JSON Serialization Error

Problem: "Decimal is not JSON serializable" when saving loadouts with new armor system.

Root Cause: The to_dict method in LoadoutConfig wasn't handling:

  • current_armor_protection (ProtectionProfile object)
  • current_armor_pieces (list of ArmorPiece objects)
  • current_armor_decay (Decimal)

Fix: Updated to_dict to properly serialize these fields before JSON serialization.

Commit: 0c843df

Issue 2: Armor Decay Not Loaded Into Session

Problem: Warning "Cost tracking not available for file-based loadouts" and armor decay not showing in HUD.

Root Cause:

  1. _get_current_config wasn't including new armor fields when creating LoadoutConfig
  2. from_dict wasn't deserializing new armor fields
  3. _set_config wasn't restoring new armor fields when loading

Fix:

  • Updated _get_current_config to include new armor fields
  • Updated from_dict to deserialize current_armor_protection, current_armor_pieces, current_armor_decay
  • Updated _set_config to restore new armor fields
  • Updated _on_loadout_selected_for_session to extract cost data for JSON-based loadouts

Commit: 8308425

Technical Details

Files Modified

  • ui/loadout_manager.py - Serialization/deserialization fixes
  • ui/main_window.py - Cost extraction for session start

Key Changes

  1. to_dict now handles complex objects manually instead of using asdict() blindly
  2. from_dict converts Decimals and reconstructs ProtectionProfile/ArmorPiece objects
  3. Session startup now extracts costs from both database and JSON loadouts

Testing Status

  • JSON serialization fixed
  • Armor decay now flows from LoadoutManager → JSON file → Session
  • Need to verify live cost tracking in HUD during gameplay