Progress on gmae setup script

This commit is contained in:
BOTAlex 2024-02-14 05:37:52 +01:00
parent 81862a21f0
commit c0d9c685ca
2 changed files with 40 additions and 13 deletions

View File

@ -1,6 +1,7 @@
using System; using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq;
using Unity.Netcode; using Unity.Netcode;
using UnityEngine; using UnityEngine;
using UnityEngine.SceneManagement; using UnityEngine.SceneManagement;
@ -9,8 +10,6 @@ public class NetworkedGameSetup : NetworkBehaviour
{ {
[SerializeField] private GameObject PlayerPrefab; [SerializeField] private GameObject PlayerPrefab;
private RopeSimulator RopeSim;
private void Start() private void Start()
{ {
DontDestroyOnLoad(this); DontDestroyOnLoad(this);
@ -19,26 +18,54 @@ public class NetworkedGameSetup : NetworkBehaviour
private void SceneLoaded(string sceneName, LoadSceneMode loadSceneMode, List<ulong> clientsCompleted, List<ulong> clientsTimedOut) private void SceneLoaded(string sceneName, LoadSceneMode loadSceneMode, List<ulong> clientsCompleted, List<ulong> clientsTimedOut)
{ {
NetworkManager.Singleton.SceneManager.OnLoadEventCompleted -= SceneLoaded; // Only run once
StartSetupProcedure(clientsCompleted); StartSetupProcedure(clientsCompleted);
} }
private void StartSetupProcedure(List<ulong> playerIds) private void StartSetupProcedure(List<ulong> playerIds)
{ {
SpawnPlayers(playerIds); GameObject[] players;
if (IsHost || IsServer)
players = SpawnPlayers(playerIds);
else
players = GetPlayers(playerIds);
InitRope(players);
} }
private void SpawnPlayers(List<ulong> playerIds) private GameObject[] GetPlayers(List<ulong> playerIds)
{ {
NetworkManager.Singleton.SceneManager.OnLoadEventCompleted -= SceneLoaded; GameObject[] players = new GameObject[playerIds.Count];
// Assuming only 2 palyers for (int i = 0; i < playerIds.Count; i++)
if (IsHost)
{ {
for (int i = 0; i < playerIds.Count; i++) ulong playerId = playerIds[i];
{ players[i] = NetworkManager.SpawnManager.SpawnedObjects[playerId].gameObject;
GameObject player = Instantiate(PlayerPrefab, Vector2.up * 3, Quaternion.identity);
player.GetComponent<NetworkObject>().SpawnAsPlayerObject(playerIds[i], true);
}
} }
return players;
} }
private GameObject[] SpawnPlayers(List<ulong> playerIds)
{
GameObject[] players = new GameObject[playerIds.Count];
for (int i = 0; i < playerIds.Count; i++)
{
GameObject player = Instantiate(PlayerPrefab, Vector2.up * 3, Quaternion.identity);
player.GetComponent<NetworkObject>().SpawnAsPlayerObject(playerIds[i], true);
players[i] = player;
}
return players;
}
private void InitRope(GameObject[] players)
{
RopeSimulator ropeSim = GetComponentInChildren<RopeSimulator>();
//// Assuming 2 players
//ropeSim.start = new RopeJoint(players[0].transform.position, true);
//ropeSim.start = players[1];
}
} }

View File

@ -16,7 +16,7 @@ public class RopeSimulator : MonoBehaviour
private bool constrainStickMinLength; private bool constrainStickMinLength;
[SerializeField] [SerializeField]
RopeJoint start, end; public RopeJoint start, end;
[SerializeField] [SerializeField]
float subDivision = 50f; float subDivision = 50f;