Add freshwater habitats and saltwater tide ribbons

This commit is contained in:
Alexander Sellite 2026-07-31 16:05:44 -04:00
parent 53fdc9ef21
commit 69b7969e25
40 changed files with 1323 additions and 148 deletions

View file

@ -3,12 +3,6 @@ extends RefCounted
const FishDataType = preload("res://fish/fish_data.gd")
enum Category {
FRESH_WATER,
SALT_WATER,
OTHER,
}
# Catalog numbers are a presentation contract. Add future species deliberately;
# filtering and display order must not redefine an existing number.
const CATALOG_ORDER: Array[StringName] = [
@ -22,41 +16,21 @@ const CATALOG_ORDER: Array[StringName] = [
&"catfish_white",
]
# These maps remain explicit until fish resources gain authored habitat fields.
const FRESH_WATER_IDS: Array[StringName] = [
&"catfish_blue",
&"catfish_channel",
&"catfish_flathead",
&"catfish_white",
]
const SALT_WATER_IDS: Array[StringName] = []
static func category_for(fish: FishDataType) -> Category:
static func category_for(fish: FishDataType) -> WaterType.Type:
if fish == null:
return Category.OTHER
if fish.id in FRESH_WATER_IDS:
return Category.FRESH_WATER
if fish.id in SALT_WATER_IDS:
return Category.SALT_WATER
return Category.OTHER
return WaterType.Type.OTHER
return fish.get_primary_water_type()
static func category_label(category: Category) -> String:
static func category_label(category: WaterType.Type) -> String:
return WaterType.label(category)
static func empty_state(category: WaterType.Type) -> String:
match category:
Category.FRESH_WATER:
return "Fresh Water"
Category.SALT_WATER:
return "Salt Water"
_:
return "Other"
static func empty_state(category: Category) -> String:
match category:
Category.FRESH_WATER:
WaterType.Type.FRESH_WATER:
return "No freshwater catches cataloged yet."
Category.SALT_WATER:
WaterType.Type.SALT_WATER:
return "No saltwater catches cataloged yet."
_:
return "No entries available."

View file

@ -21,7 +21,7 @@ const LOGBOOK_TAB_LEFT_INSET: float = 34.0
var _collection_log: CollectionLogType
var _inventory: FishInventoryType
var _catalog: FishPoolType
var _category: LogbookCatalog.Category = LogbookCatalog.Category.OTHER
var _category: WaterType.Type = WaterType.Type.OTHER
var _selected_id: StringName
var _selected_entry_key: StringName
var _active: bool = false
@ -148,10 +148,10 @@ func _build_interface() -> void:
tabs.mouse_filter = Control.MOUSE_FILTER_PASS
tabs.add_theme_constant_override("separation", 6)
stack.add_child(tabs)
for category: LogbookCatalog.Category in [
LogbookCatalog.Category.FRESH_WATER,
LogbookCatalog.Category.SALT_WATER,
LogbookCatalog.Category.OTHER,
for category: WaterType.Type in [
WaterType.Type.FRESH_WATER,
WaterType.Type.SALT_WATER,
WaterType.Type.OTHER,
]:
var tab := OrganizerTabType.new()
tab.custom_minimum_size = Vector2(124, 38)
@ -362,7 +362,7 @@ func _add_unknown_entry_content(
content.add_child(discovery_hint)
func _select_category(category: LogbookCatalog.Category) -> void:
func _select_category(category: WaterType.Type) -> void:
if category == _category:
return
_category = category
@ -516,7 +516,7 @@ func _build_known_details(fish: FishDataType) -> void:
"#%03d" % catalog_number if catalog_number > 0 else "Unknown",
)
_add_detail_row("rarity", fish.get_rarity_name())
_add_detail_row("body of water", "Unknown")
_add_detail_row("body of water", WaterType.label(fish.get_primary_water_type()))
_add_detail_row("time of day", _availability_text(fish))
_add_detail_row(
"weight range",