diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2022-09-18 00:42:40 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2022-09-18 00:42:40 +0200 |
commit | ba35d2bff4a0309dd987d1dab737199ce2a6a29b (patch) | |
tree | 40e11cf942f6e51ce23c53866d1f32e68ed7d0d9 /modules/multiplayer/multiplayer_spawner.cpp | |
parent | 0bb57bd9f206eb05e67c295b2c012129970d4780 (diff) | |
parent | ba6f5471c4ace6c2b5177d400b5d58aa626e05ef (diff) |
Merge pull request #65945 from Faless/mp/4.x_nodes_warnings
[MP] Add warnings to spawner and synchronizer.
Diffstat (limited to 'modules/multiplayer/multiplayer_spawner.cpp')
-rw-r--r-- | modules/multiplayer/multiplayer_spawner.cpp | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/modules/multiplayer/multiplayer_spawner.cpp b/modules/multiplayer/multiplayer_spawner.cpp index d46972ffb6..c68e2e5a99 100644 --- a/modules/multiplayer/multiplayer_spawner.cpp +++ b/modules/multiplayer/multiplayer_spawner.cpp @@ -86,6 +86,23 @@ void MultiplayerSpawner::_get_property_list(List<PropertyInfo> *p_list) const { } } #endif + +TypedArray<String> MultiplayerSpawner::get_configuration_warnings() const { + TypedArray<String> warnings = Node::get_configuration_warnings(); + + if (spawn_path.is_empty() || !has_node(spawn_path)) { + warnings.push_back(RTR("A valid NodePath must be set in the \"Spawn Path\" property in order for MultiplayerSpawner to be able to spawn Nodes.")); + } + bool has_scenes = get_spawnable_scene_count() > 0; + // Can't check if method is overriden in placeholder scripts. + bool has_placeholder_script = get_script_instance() && get_script_instance()->is_placeholder(); + if (!has_scenes && !GDVIRTUAL_IS_OVERRIDDEN(_spawn_custom) && !has_placeholder_script) { + warnings.push_back(RTR("A list of PackedScenes must be set in the \"Auto Spawn List\" property in order for MultiplayerSpawner to automatically spawn them remotely when added as child of \"spawn_path\".")); + warnings.push_back(RTR("Alternatively, a Script implementing the function \"_spawn_custom\" must be set for this MultiplayerSpawner, and \"spawn\" must be called explicitly in code.")); + } + return warnings; +} + void MultiplayerSpawner::add_spawnable_scene(const String &p_path) { SpawnableScene sc; sc.path = p_path; @@ -94,13 +111,16 @@ void MultiplayerSpawner::add_spawnable_scene(const String &p_path) { } spawnable_scenes.push_back(sc); } + int MultiplayerSpawner::get_spawnable_scene_count() const { return spawnable_scenes.size(); } + String MultiplayerSpawner::get_spawnable_scene(int p_idx) const { ERR_FAIL_INDEX_V(p_idx, (int)spawnable_scenes.size(), ""); return spawnable_scenes[p_idx].path; } + void MultiplayerSpawner::clear_spawnable_scenes() { spawnable_scenes.clear(); } |