fix(client): add explicit type annotations for GDScript strict mode
Dictionary.get() returns Variant, which fails GDScript's strict type inference (warnings-as-errors). Add explicit type casts on all dictionary access in clothing and accessory tab code. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -593,7 +593,7 @@ func _build_clothing_tab(tab: Control) -> void:
|
||||
vbox.add_child(slot_row)
|
||||
_clothing_slot_btns.clear()
|
||||
for i in CLOTHING_SLOTS.size():
|
||||
var slot := CLOTHING_SLOTS[i]
|
||||
var slot: String = CLOTHING_SLOTS[i]
|
||||
var btn := _make_slot_btn(CLOTHING_SLOT_LABELS[i])
|
||||
btn.pressed.connect(_on_clothing_slot_selected.bind(slot))
|
||||
slot_row.add_child(btn)
|
||||
@@ -667,11 +667,11 @@ func _rebuild_clothing_color_dock(container: Control) -> void:
|
||||
row.add_theme_constant_override("separation", 8)
|
||||
container.add_child(row)
|
||||
|
||||
var item_id := _descriptor.clothing_slots.get(_active_clothing_slot, "")
|
||||
var tints: Array = _descriptor.clothing_tints.get(item_id, []) if not item_id.is_empty() else []
|
||||
var primary: Color = tints[0] if tints.size() > 0 else Color(0.7, 0.65, 0.6)
|
||||
var secondary: Color = tints[1] if tints.size() > 1 else _derive_secondary(primary)
|
||||
var accent: Color = tints[2] if tints.size() > 2 else _derive_accent(primary)
|
||||
var item_id: String = str(_descriptor.clothing_slots.get(_active_clothing_slot, ""))
|
||||
var tints: Array = _descriptor.clothing_tints.get(item_id, []) as Array if not item_id.is_empty() else [] as Array
|
||||
var primary: Color = tints[0] as Color if tints.size() > 0 else Color(0.7, 0.65, 0.6)
|
||||
var secondary: Color = tints[1] as Color if tints.size() > 1 else _derive_secondary(primary)
|
||||
var accent: Color = tints[2] as Color if tints.size() > 2 else _derive_accent(primary)
|
||||
|
||||
var p_swatch := _make_color_swatch(primary, "Primary",
|
||||
func(c): _on_clothing_primary_changed(c))
|
||||
@@ -704,10 +704,10 @@ func _on_clothing_item_selected(slot: String, item_id: String) -> void:
|
||||
|
||||
|
||||
func _on_clothing_primary_changed(color: Color) -> void:
|
||||
var item_id := _descriptor.clothing_slots.get(_active_clothing_slot, "")
|
||||
var item_id: String = str(_descriptor.clothing_slots.get(_active_clothing_slot, ""))
|
||||
if item_id.is_empty():
|
||||
return
|
||||
var tints: Array = _descriptor.clothing_tints.get(item_id, [])
|
||||
var tints: Array = _descriptor.clothing_tints.get(item_id, []) as Array
|
||||
if tints.is_empty():
|
||||
tints = [color]
|
||||
else:
|
||||
@@ -720,9 +720,9 @@ func _on_clothing_primary_changed(color: Color) -> void:
|
||||
|
||||
func _on_clothing_secondary_changed(color: Color) -> void:
|
||||
_clothing_secondary_auto[_active_clothing_slot] = false
|
||||
var item_id := _descriptor.clothing_slots.get(_active_clothing_slot, "")
|
||||
var item_id: String = str(_descriptor.clothing_slots.get(_active_clothing_slot, ""))
|
||||
if not item_id.is_empty():
|
||||
var tints: Array = _descriptor.clothing_tints.get(item_id, [Color(0.7, 0.65, 0.6)])
|
||||
var tints: Array = _descriptor.clothing_tints.get(item_id, [Color(0.7, 0.65, 0.6)]) as Array
|
||||
while tints.size() < 2:
|
||||
tints.append(color)
|
||||
tints[1] = color
|
||||
@@ -732,9 +732,9 @@ func _on_clothing_secondary_changed(color: Color) -> void:
|
||||
|
||||
func _on_clothing_accent_changed(color: Color) -> void:
|
||||
_clothing_accent_auto[_active_clothing_slot] = false
|
||||
var item_id := _descriptor.clothing_slots.get(_active_clothing_slot, "")
|
||||
var item_id: String = str(_descriptor.clothing_slots.get(_active_clothing_slot, ""))
|
||||
if not item_id.is_empty():
|
||||
var tints: Array = _descriptor.clothing_tints.get(item_id, [Color(0.7, 0.65, 0.6)])
|
||||
var tints: Array = _descriptor.clothing_tints.get(item_id, [Color(0.7, 0.65, 0.6)]) as Array
|
||||
while tints.size() < 3:
|
||||
tints.append(color)
|
||||
tints[2] = color
|
||||
@@ -744,13 +744,13 @@ func _on_clothing_accent_changed(color: Color) -> void:
|
||||
|
||||
func _update_clothing_slot_btns() -> void:
|
||||
for i in CLOTHING_SLOTS.size():
|
||||
var selected := CLOTHING_SLOTS[i] == _active_clothing_slot
|
||||
var selected: bool = CLOTHING_SLOTS[i] == _active_clothing_slot
|
||||
_set_item_selected(_clothing_slot_btns[i], selected)
|
||||
|
||||
|
||||
func _update_clothing_item_btns() -> void:
|
||||
for slot in _clothing_item_btns:
|
||||
var active_item := _descriptor.clothing_slots.get(slot, "")
|
||||
for slot: String in _clothing_item_btns:
|
||||
var active_item: String = str(_descriptor.clothing_slots.get(slot, ""))
|
||||
for item_id in _clothing_item_btns[slot]:
|
||||
_set_item_selected(_clothing_item_btns[slot][item_id], item_id == active_item)
|
||||
|
||||
@@ -769,7 +769,7 @@ func _build_accessories_tab(tab: Control) -> void:
|
||||
vbox.add_child(slot_flow)
|
||||
_accessory_slot_btns.clear()
|
||||
for i in ACCESSORY_SLOTS.size():
|
||||
var slot := ACCESSORY_SLOTS[i]
|
||||
var slot: String = ACCESSORY_SLOTS[i]
|
||||
var btn := _make_slot_btn(ACCESSORY_SLOT_LABELS[i])
|
||||
btn.pressed.connect(_on_accessory_slot_selected.bind(slot))
|
||||
slot_flow.add_child(btn)
|
||||
@@ -837,9 +837,9 @@ func _rebuild_accessory_color_dock(container: Control) -> void:
|
||||
row.add_theme_constant_override("separation", 8)
|
||||
container.add_child(row)
|
||||
|
||||
var item_id := _descriptor.accessory_slots.get(_active_accessory_slot, "")
|
||||
var tints_arr: Array = _descriptor.accessory_tints.get(item_id, []) if not item_id.is_empty() else []
|
||||
var primary: Color = tints_arr[0] if not tints_arr.is_empty() else Color.WHITE
|
||||
var item_id: String = str(_descriptor.accessory_slots.get(_active_accessory_slot, ""))
|
||||
var tints_arr: Array = _descriptor.accessory_tints.get(item_id, []) as Array if not item_id.is_empty() else [] as Array
|
||||
var primary: Color = tints_arr[0] as Color if not tints_arr.is_empty() else Color.WHITE
|
||||
var secondary: Color = _derive_secondary(primary)
|
||||
|
||||
var p_swatch := _make_color_swatch(primary, "Primary",
|
||||
@@ -864,9 +864,9 @@ func _on_accessory_item_selected(slot: String, item_id: String) -> void:
|
||||
|
||||
|
||||
func _on_accessory_primary_changed(color: Color) -> void:
|
||||
var item_id := _descriptor.accessory_slots.get(_active_accessory_slot, "")
|
||||
var item_id: String = str(_descriptor.accessory_slots.get(_active_accessory_slot, ""))
|
||||
if not item_id.is_empty():
|
||||
var existing: Array = _descriptor.accessory_tints.get(item_id, [])
|
||||
var existing: Array = _descriptor.accessory_tints.get(item_id, []) as Array
|
||||
if existing.is_empty():
|
||||
existing = [color]
|
||||
else:
|
||||
@@ -877,9 +877,9 @@ func _on_accessory_primary_changed(color: Color) -> void:
|
||||
|
||||
func _on_accessory_secondary_changed(color: Color) -> void:
|
||||
_accessory_secondary_auto[_active_accessory_slot] = false
|
||||
var item_id := _descriptor.accessory_slots.get(_active_accessory_slot, "")
|
||||
var item_id: String = str(_descriptor.accessory_slots.get(_active_accessory_slot, ""))
|
||||
if not item_id.is_empty():
|
||||
var tints: Array = _descriptor.accessory_tints.get(item_id, [Color.WHITE])
|
||||
var tints: Array = _descriptor.accessory_tints.get(item_id, [Color.WHITE]) as Array
|
||||
while tints.size() < 2:
|
||||
tints.append(color)
|
||||
tints[1] = color
|
||||
@@ -893,8 +893,8 @@ func _update_accessory_slot_btns() -> void:
|
||||
|
||||
|
||||
func _update_accessory_item_btns() -> void:
|
||||
for slot in _accessory_item_btns:
|
||||
var active_item := _descriptor.accessory_slots.get(slot, "")
|
||||
for slot: String in _accessory_item_btns:
|
||||
var active_item: String = str(_descriptor.accessory_slots.get(slot, ""))
|
||||
for item_id in _accessory_item_btns[slot]:
|
||||
_set_item_selected(_accessory_item_btns[slot][item_id], item_id == active_item)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user