Add host-validated multiplayer shop purchases

This commit is contained in:
Alexander Sellite 2026-07-29 18:51:51 -04:00
parent f7044669a8
commit 5e04b70609
12 changed files with 932 additions and 52 deletions

View file

@ -49,6 +49,9 @@ const NetworkFishingServiceType = preload(
const NetworkSaleServiceType = preload(
"res://network/network_sale_service.gd"
)
const NetworkShopServiceType = preload(
"res://network/network_shop_service.gd"
)
const TITLE_MUSIC_SILENCE_DB: float = -80.0
@ -87,6 +90,7 @@ const TITLE_MUSIC_SILENCE_DB: float = -80.0
%NetworkFishingService
)
@onready var _network_sale: NetworkSaleServiceType = %NetworkSaleService
@onready var _network_shop: NetworkShopServiceType = %NetworkShopService
@onready var _players_root: Node3D = $Players
var _gameplay_started: bool = false
@ -169,6 +173,18 @@ func _ready() -> void:
pelican_buyer_profile,
_test_world.get_pelican_convenience_landmark()
)
_network_shop.setup(
_network_session,
_player_spawn_service,
_network_fishing,
_shop_interaction,
_player.wallet,
_player.bag,
item_catalog,
_player.fishing_upgrades,
_player.cooler_capacity,
_save_manager
)
_fishing_spot.setup(
_player,
_player.inventory,
@ -200,7 +216,8 @@ func _ready() -> void:
_player.item_effects,
_player.cooler_capacity,
_network_session,
_network_sale
_network_sale,
_network_shop
)
_water_recovery.setup(
_player,

View file

@ -1,4 +1,4 @@
[gd_scene load_steps=23 format=3]
[gd_scene load_steps=24 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"]
@ -22,6 +22,7 @@
[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"]
[ext_resource type="Script" path="res://network/network_sale_service.gd" id="22_network_sale"]
[ext_resource type="Script" path="res://network/network_shop_service.gd" id="23_network_shop"]
[node name="Main" type="Node3D"]
script = ExtResource("3_main")
@ -54,6 +55,10 @@ script = ExtResource("21_network_fishing")
unique_name_in_owner = true
script = ExtResource("22_network_sale")
[node name="NetworkShopService" type="Node" parent="."]
unique_name_in_owner = true
script = ExtResource("23_network_shop")
[node name="TestWorld" parent="." instance=ExtResource("1_world")]
[node name="Players" type="Node3D" parent="."]