Add logbook catalog index filters
This commit is contained in:
parent
4575830857
commit
81decf2b71
9 changed files with 1540 additions and 10 deletions
|
|
@ -150,6 +150,7 @@ var _network_session: NetworkSessionType
|
|||
var _network_fishing: NetworkFishingServiceType
|
||||
var _world_time: WorldTimeServiceType
|
||||
var _world_weather: WorldWeatherServiceType
|
||||
var _fishable_water_regions_resolver := Callable()
|
||||
var _active_player: PlayerType
|
||||
var _state_time_remaining: float = 0.0
|
||||
var _cast_charge: float = 0.0
|
||||
|
|
@ -222,6 +223,7 @@ func setup(
|
|||
network_fishing: NetworkFishingServiceType = null,
|
||||
world_time: WorldTimeServiceType = null,
|
||||
world_weather: WorldWeatherServiceType = null,
|
||||
fishable_water_regions_resolver: Callable = Callable(),
|
||||
) -> void:
|
||||
_local_player = local_player
|
||||
_local_inventory = local_inventory
|
||||
|
|
@ -242,6 +244,7 @@ func setup(
|
|||
_network_fishing = network_fishing
|
||||
_world_time = world_time
|
||||
_world_weather = world_weather
|
||||
_fishable_water_regions_resolver = fishable_water_regions_resolver
|
||||
if (
|
||||
_network_session != null
|
||||
and not _network_session.state_changed.is_connected(
|
||||
|
|
@ -1664,6 +1667,47 @@ func build_network_context(
|
|||
return _build_fishing_context(region)
|
||||
|
||||
|
||||
func is_species_available_now(fish: FishDataType) -> bool:
|
||||
if fish == null or not fish.is_selectable():
|
||||
return false
|
||||
var season := (
|
||||
_world_time.get_season()
|
||||
if _world_time != null
|
||||
else CalendarSeason.UNKNOWN
|
||||
)
|
||||
if not fish.is_available_in_season(season):
|
||||
return false
|
||||
if fish.collection_method != FishDataType.CollectionMethod.FISHING:
|
||||
return true
|
||||
for region: FishableWaterRegionType in _get_logbook_water_regions():
|
||||
if (
|
||||
region == null
|
||||
or region.fish_pool == null
|
||||
or region.fish_pool.get_fish_by_id(fish.id) == null
|
||||
):
|
||||
continue
|
||||
var context := _build_fishing_context(region)
|
||||
if not fish.is_allowed_in_water(context.water_type):
|
||||
continue
|
||||
if fish.availability == null or fish.availability.is_available(context):
|
||||
return true
|
||||
return false
|
||||
|
||||
|
||||
func _get_logbook_water_regions() -> Array[FishableWaterRegionType]:
|
||||
var regions: Array[FishableWaterRegionType] = []
|
||||
if not _fishable_water_regions_resolver.is_valid():
|
||||
return regions
|
||||
var resolved: Variant = _fishable_water_regions_resolver.call()
|
||||
if resolved is not Array:
|
||||
return regions
|
||||
for value: Variant in resolved:
|
||||
var region := value as FishableWaterRegionType
|
||||
if region != null and is_instance_valid(region):
|
||||
regions.append(region)
|
||||
return regions
|
||||
|
||||
|
||||
func _get_active_bait_tags() -> Array[StringName]:
|
||||
if _local_player == null or _item_catalog == null:
|
||||
return []
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue