Move prefabs to game_manager from map
This commit is contained in:
parent
934b06657b
commit
506d0f3b50
@ -5,11 +5,21 @@
|
||||
[ext_resource type="PackedScene" uid="uid://df84sctteh4kw" path="res://scenes/game_finished.tscn" id="1_qf2qp"]
|
||||
[ext_resource type="MapResource" uid="uid://sc3507f75002" path="res://maps/diner.tres" id="2_glms7"]
|
||||
[ext_resource type="PackedScene" uid="uid://lahirbqfppvw" path="res://scenes/main.tscn" id="3_7ele1"]
|
||||
[ext_resource type="PackedScene" uid="uid://ct70bpbca8one" path="res://scenes/player/local_player.tscn" id="4_3b0rc"]
|
||||
[ext_resource type="PackedScene" uid="uid://kfxc0migw80o" path="res://scenes/player/remote_player.tscn" id="5_nxoss"]
|
||||
[ext_resource type="MapResource" uid="uid://bsjoandgu476y" path="res://maps/two_towers.tres" id="5_rotn8"]
|
||||
[ext_resource type="PackedScene" uid="uid://hmh2lrrlo2wy" path="res://scenes/player/replay_player.tscn" id="6_5fjlq"]
|
||||
[ext_resource type="PackedScene" uid="uid://dfnbc8sbufa4j" path="res://scenes/misc/ball.tscn" id="7_cv0ql"]
|
||||
[ext_resource type="PackedScene" uid="uid://dc17w5n6y1an" path="res://scenes/misc/replay_ball.tscn" id="8_m1inn"]
|
||||
|
||||
[node name="game_manager" type="GameManager" unique_id=1442044769]
|
||||
respawn_timer = 10.0
|
||||
lobby_screen = ExtResource("1_3ama4")
|
||||
game_finished_screen = ExtResource("1_qf2qp")
|
||||
main_menu = ExtResource("3_7ele1")
|
||||
local_player = ExtResource("4_3b0rc")
|
||||
remote_player = ExtResource("5_nxoss")
|
||||
replay_player = ExtResource("6_5fjlq")
|
||||
ball = ExtResource("7_cv0ql")
|
||||
replay_ball = ExtResource("8_m1inn")
|
||||
maps = Array[MapResource]([ExtResource("1_glms7"), ExtResource("2_glms7"), ExtResource("5_rotn8")])
|
||||
|
||||
@ -42,6 +42,22 @@ pub struct GameManager {
|
||||
#[export]
|
||||
pub main_menu: Option<Gd<PackedScene>>,
|
||||
|
||||
#[export]
|
||||
#[export_group(name = "Prefabs")]
|
||||
pub local_player: Option<Gd<PackedScene>>,
|
||||
#[export]
|
||||
#[export_group(name = "Prefabs")]
|
||||
pub remote_player: Option<Gd<PackedScene>>,
|
||||
#[export]
|
||||
#[export_group(name = "Prefabs")]
|
||||
pub replay_player: Option<Gd<PackedScene>>,
|
||||
#[export]
|
||||
#[export_group(name = "Prefabs")]
|
||||
pub ball: Option<Gd<PackedScene>>,
|
||||
#[export]
|
||||
#[export_group(name = "Prefabs")]
|
||||
pub replay_ball: Option<Gd<PackedScene>>,
|
||||
|
||||
pub game: Option<Gd<Game>>,
|
||||
base: Base<Node>,
|
||||
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
use godot::{classes::CharacterBody3D, prelude::*};
|
||||
|
||||
use crate::{
|
||||
game_manager::Game,
|
||||
game_manager::{Game, GameManager},
|
||||
net::util::NetVector3,
|
||||
player::{
|
||||
IPlayer, NetTransform, ball::Ball, local_player::LocalPlayer, remote_player::RemotePlayer,
|
||||
@ -16,16 +16,6 @@ pub struct Map {
|
||||
pub spawners: Array<Gd<Node3D>>,
|
||||
#[export]
|
||||
pub ball_spawner: Option<Gd<Node3D>>,
|
||||
#[export]
|
||||
pub local_player: Option<Gd<PackedScene>>,
|
||||
#[export]
|
||||
pub remote_player: Option<Gd<PackedScene>>,
|
||||
#[export]
|
||||
pub replay_player: Option<Gd<PackedScene>>,
|
||||
#[export]
|
||||
pub ball: Option<Gd<PackedScene>>,
|
||||
#[export]
|
||||
pub replay_ball: Option<Gd<PackedScene>>,
|
||||
|
||||
base: Base<Node3D>,
|
||||
}
|
||||
@ -53,7 +43,7 @@ impl Map {
|
||||
get_remote_data: bool,
|
||||
) -> Option<DynGd<CharacterBody3D, dyn IPlayer + 'static>> {
|
||||
if is_local {
|
||||
if let Some(local_player) = &self.local_player {
|
||||
if let Some(local_player) = &GameManager::singleton().bind().local_player {
|
||||
let mut node = local_player.instantiate_as::<LocalPlayer>();
|
||||
node.bind_mut().player_id = Some(player_id);
|
||||
self.base_mut().add_child(&node);
|
||||
@ -75,7 +65,7 @@ impl Map {
|
||||
} else {
|
||||
None
|
||||
}
|
||||
} else if let Some(remote_player) = &self.remote_player {
|
||||
} else if let Some(remote_player) = &GameManager::singleton().bind().remote_player {
|
||||
let mut node = remote_player.instantiate_as::<RemotePlayer>();
|
||||
node.bind_mut().player_id = Some(player_id);
|
||||
if get_remote_data {
|
||||
@ -118,7 +108,7 @@ impl Map {
|
||||
player: &ReplayPlayer,
|
||||
state: ReplayPlayerState,
|
||||
) -> Option<Gd<RemotePlayer>> {
|
||||
if let Some(replay_player) = &self.replay_player {
|
||||
if let Some(replay_player) = &GameManager::singleton().bind().replay_player {
|
||||
let mut node: Gd<RemotePlayer> = replay_player.instantiate_as();
|
||||
node.bind_mut().player_id = Some(player_id);
|
||||
node.bind_mut().player_name = player.name.clone();
|
||||
@ -147,7 +137,7 @@ impl Map {
|
||||
player_id: Option<u16>,
|
||||
) -> Option<Gd<Ball>> {
|
||||
if let Some(ball_spawner) = self.ball_spawner.clone()
|
||||
&& let Some(ball_prefab) = &self.ball
|
||||
&& let Some(ball_prefab) = &GameManager::singleton().bind().ball
|
||||
{
|
||||
let mut ball = ball_prefab.instantiate_as::<Ball>();
|
||||
ball.bind_mut().dropper = player_id;
|
||||
@ -174,7 +164,7 @@ impl Map {
|
||||
player_id: Option<u16>,
|
||||
) -> Option<Gd<Ball>> {
|
||||
if let Some(ball_spawner) = self.ball_spawner.clone()
|
||||
&& let Some(ball_prefab) = &self.replay_ball
|
||||
&& let Some(ball_prefab) = &GameManager::singleton().bind().replay_ball
|
||||
{
|
||||
let mut ball = ball_prefab.instantiate_as::<Ball>();
|
||||
ball.bind_mut().dropper = player_id;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user