Add host-authoritative multiplayer fishing
This commit is contained in:
parent
b0e2e84ba4
commit
d3e3bf4053
17 changed files with 1672 additions and 23 deletions
24
main/main.gd
24
main/main.gd
|
|
@ -43,6 +43,9 @@ const SavedServerStoreType = preload(
|
|||
const PlayerSpawnServiceType = preload(
|
||||
"res://network/player_spawn_service.gd"
|
||||
)
|
||||
const NetworkFishingServiceType = preload(
|
||||
"res://network/network_fishing_service.gd"
|
||||
)
|
||||
|
||||
const TITLE_MUSIC_SILENCE_DB: float = -80.0
|
||||
|
||||
|
|
@ -77,6 +80,9 @@ const TITLE_MUSIC_SILENCE_DB: float = -80.0
|
|||
@onready var _player_spawn_service: PlayerSpawnServiceType = (
|
||||
%PlayerSpawnService
|
||||
)
|
||||
@onready var _network_fishing: NetworkFishingServiceType = (
|
||||
%NetworkFishingService
|
||||
)
|
||||
@onready var _players_root: Node3D = $Players
|
||||
|
||||
var _gameplay_started: bool = false
|
||||
|
|
@ -136,6 +142,17 @@ func _ready() -> void:
|
|||
_player.cooler_capacity
|
||||
)
|
||||
_save_manager.set_autosave_enabled(false)
|
||||
_network_fishing.setup(
|
||||
_network_session,
|
||||
_player_spawn_service,
|
||||
_fishing_spot,
|
||||
_player.inventory,
|
||||
_player.collection_log,
|
||||
_player.cooler_capacity,
|
||||
_save_manager,
|
||||
item_catalog,
|
||||
fish_catalog
|
||||
)
|
||||
_fishing_spot.setup(
|
||||
_player,
|
||||
_player.inventory,
|
||||
|
|
@ -146,7 +163,8 @@ func _ready() -> void:
|
|||
_player.fishing_upgrades,
|
||||
_player.item_effects,
|
||||
_player.cooler_capacity,
|
||||
_network_session
|
||||
_network_session,
|
||||
_network_fishing
|
||||
)
|
||||
_game_ui.setup(
|
||||
_player,
|
||||
|
|
@ -562,6 +580,10 @@ func _on_remote_recovery_requested(
|
|||
var avatar: PlayerType = _player_spawn_service.get_avatar(peer_id)
|
||||
if avatar == null:
|
||||
return
|
||||
_network_fishing.cancel_peer_attempt(
|
||||
peer_id,
|
||||
"Fishing attempt ended."
|
||||
)
|
||||
var target_position: Vector3 = _test_world.get_player_spawn_transform().origin
|
||||
var nearest_distance: float = INF
|
||||
for point: SafeRespawnPoint in _test_world.get_safe_respawn_points():
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
[gd_scene load_steps=21 format=3]
|
||||
[gd_scene load_steps=22 format=3]
|
||||
|
||||
[ext_resource type="PackedScene" path="res://world/test_world.tscn" id="1_world"]
|
||||
[ext_resource type="PackedScene" path="res://player/player.tscn" id="2_player"]
|
||||
|
|
@ -20,6 +20,7 @@
|
|||
[ext_resource type="Script" path="res://network/network_profile_preferences.gd" id="18_network_profile"]
|
||||
[ext_resource type="Script" path="res://network/saved_server_store.gd" id="19_saved_servers"]
|
||||
[ext_resource type="Script" path="res://network/player_spawn_service.gd" id="20_spawn_service"]
|
||||
[ext_resource type="Script" path="res://network/network_fishing_service.gd" id="21_network_fishing"]
|
||||
|
||||
[node name="Main" type="Node3D"]
|
||||
script = ExtResource("3_main")
|
||||
|
|
@ -44,6 +45,10 @@ script = ExtResource("19_saved_servers")
|
|||
unique_name_in_owner = true
|
||||
script = ExtResource("20_spawn_service")
|
||||
|
||||
[node name="NetworkFishingService" type="Node" parent="."]
|
||||
unique_name_in_owner = true
|
||||
script = ExtResource("21_network_fishing")
|
||||
|
||||
[node name="TestWorld" parent="." instance=ExtResource("1_world")]
|
||||
|
||||
[node name="Players" type="Node3D" parent="."]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue