Add synchronized time and weather systems

This commit is contained in:
Alexander Sellite 2026-08-02 12:48:33 -04:00
parent 30ad9215ca
commit 58fb3d6605
37 changed files with 1900 additions and 17 deletions

View file

@ -77,6 +77,17 @@ const PlayerAppearanceStoreType = preload(
const NetworkProfileServiceType = preload(
"res://network/network_profile_service.gd"
)
const WorldTimeServiceType = preload("res://world/world_time_service.gd")
const WorldTimeVisualControllerType = preload(
"res://world/world_time_visual_controller.gd"
)
const NetworkWorldTimeServiceType = preload(
"res://network/network_world_time_service.gd"
)
const WorldWeatherServiceType = preload("res://world/world_weather_service.gd")
const NetworkWorldWeatherServiceType = preload(
"res://network/network_world_weather_service.gd"
)
const TITLE_MUSIC_SILENCE_DB: float = -80.0
const PLAYER_MENU_PATTERN_SCALE: float = 0.85
@ -108,6 +119,17 @@ const SHOP_PATTERN_SCALE: float = 1.75
%WorldPixelationPostprocess
)
@onready var _network_session: NetworkSessionType = %NetworkSession
@onready var _world_time: WorldTimeServiceType = %WorldTimeService
@onready var _world_time_visuals: WorldTimeVisualControllerType = (
%WorldTimeVisualController
)
@onready var _network_world_time: NetworkWorldTimeServiceType = (
%NetworkWorldTimeService
)
@onready var _world_weather: WorldWeatherServiceType = %WorldWeatherService
@onready var _network_world_weather: NetworkWorldWeatherServiceType = (
%NetworkWorldWeatherService
)
@onready var _data_root: PlayerDataRoot = %PlayerDataRoot
@onready var _identity_backups: IdentityBackupService = %IdentityBackupService
@onready var _network_profile: NetworkProfilePreferencesType = (
@ -263,6 +285,15 @@ func _initialize_after_data_root() -> void:
_server_trust,
_host_bans,
)
_world_time_visuals.setup(
_world_time,
_test_world.get_world_environment(),
_test_world.get_sun(),
_world_weather,
_player,
)
_network_world_time.setup(_network_session, _world_time)
_network_world_weather.setup(_network_session, _world_weather)
_identity_backups.setup(_data_root, _player_identity, _host_identity)
_network_profile_service.setup(
_network_session,
@ -428,7 +459,9 @@ func _initialize_after_data_root() -> void:
_network_item_use,
_player.cooler_capacity,
_network_session,
_network_fishing
_network_fishing,
_world_time,
_world_weather,
)
_game_ui.setup(
_player,
@ -460,6 +493,8 @@ func _initialize_after_data_root() -> void:
_settings_manager,
_network_surface_drawing,
_player.art_unlocks,
_world_time,
_world_weather,
)
_game_ui.setup_data_and_identity(
_data_root,

View file

@ -46,6 +46,11 @@
[ext_resource type="PackedScene" uid="uid://w7n4gjqq1juc" path="res://art/exported/characters/base/netfishing_base_character.glb" id="44_4pcu1"]
[ext_resource type="Script" path="res://network/network_fish_showcase_service.gd" id="45_fish_showcase"]
[ext_resource type="Script" path="res://network/network_surface_drawing_service.gd" id="46_surface_drawing"]
[ext_resource type="Script" path="res://world/world_time_service.gd" id="47_world_time"]
[ext_resource type="Script" path="res://world/world_time_visual_controller.gd" id="48_world_time_visuals"]
[ext_resource type="Script" path="res://network/network_world_time_service.gd" id="49_network_world_time"]
[ext_resource type="Script" path="res://world/world_weather_service.gd" id="50_world_weather"]
[ext_resource type="Script" path="res://network/network_world_weather_service.gd" id="51_network_world_weather"]
[sub_resource type="ShaderMaterial" id="ShaderMaterial_title_water_native"]
shader = ExtResource("40_title_water")
@ -113,6 +118,26 @@ mouse_filter = 2
unique_name_in_owner = true
script = ExtResource("39_fonts")
[node name="WorldTimeService" type="Node" parent="."]
unique_name_in_owner = true
script = ExtResource("47_world_time")
[node name="WorldTimeVisualController" type="Node" parent="."]
unique_name_in_owner = true
script = ExtResource("48_world_time_visuals")
[node name="NetworkWorldTimeService" type="Node" parent="."]
unique_name_in_owner = true
script = ExtResource("49_network_world_time")
[node name="WorldWeatherService" type="Node" parent="."]
unique_name_in_owner = true
script = ExtResource("50_world_weather")
[node name="NetworkWorldWeatherService" type="Node" parent="."]
unique_name_in_owner = true
script = ExtResource("51_network_world_weather")
[node name="PlayerDataRoot" type="Node" parent="." unique_id=281868360]
unique_name_in_owner = true
script = ExtResource("37_data_root")