mirror of
https://github.com/DerTyp7/defrain-shooter-unity.git
synced 2025-10-29 12:52:07 +01:00
105 lines
2.5 KiB
C#
105 lines
2.5 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using Mirror;
|
|
|
|
|
|
// Erstellung von Teams
|
|
// Auflistung von den Spielern
|
|
// Verwaltung der Spieler und Teams
|
|
//
|
|
|
|
public class GameMaster : NetworkBehaviour
|
|
{
|
|
int gameState = 0;
|
|
|
|
[Header("GameMaster")]
|
|
[SerializeField] private List<Player> Players = new List<Player>();
|
|
[SerializeField] private int countOfRounds = 10;
|
|
public SpawnController spawnController;
|
|
private TeamManager teamManager;
|
|
|
|
|
|
public GameObject localPlayer;
|
|
public void RegisterPlayer(Player player)
|
|
{
|
|
Players.Add(player);
|
|
teamManager.AddTeam().AddPlayer(player);
|
|
}
|
|
|
|
private void Start()
|
|
{
|
|
spawnController = GetComponent<SpawnController>();
|
|
teamManager = GetComponent<TeamManager>();
|
|
}
|
|
private void Update()
|
|
{
|
|
StateMachine();
|
|
|
|
if (Input.GetKeyDown(KeyCode.H))
|
|
{
|
|
|
|
Cursor.lockState = CursorLockMode.Confined;
|
|
Cursor.visible = true;
|
|
}
|
|
|
|
if (Input.GetKeyDown(KeyCode.J))
|
|
{
|
|
Cursor.lockState = CursorLockMode.Locked;
|
|
Cursor.visible = false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
void StateMachine()
|
|
{
|
|
switch (gameState)
|
|
{
|
|
case 0:
|
|
//Select teams
|
|
if (Input.GetButtonDown("Sprint"))
|
|
{
|
|
gameState++;
|
|
}
|
|
|
|
break;
|
|
case 1:
|
|
foreach (Player player in Players)
|
|
{
|
|
if (spawnController.GetAvailableSpawnPoint(player.team.teamID, out Vector3 v))
|
|
{
|
|
player.respawnPos(v);
|
|
}
|
|
}
|
|
gameState++;
|
|
break;
|
|
case 2:
|
|
foreach (Team team in teamManager.Teams)
|
|
{
|
|
if (!teamManager.teamAlive(team.teamID))
|
|
{
|
|
team.score++;
|
|
gameState++;
|
|
}
|
|
}
|
|
break;
|
|
case 3:
|
|
gameState = 0;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
public Vector3 RespawnRequest(GameObject player,int teamID)
|
|
{
|
|
if (spawnController.GetAvailableSpawnPoint(teamID, out Vector3 spawnpoint))
|
|
{
|
|
return spawnpoint;
|
|
}
|
|
return player.transform.position;
|
|
}
|
|
}
|