mirror of
				https://github.com/DerTyp7/defrain-shooter-unity.git
				synced 2025-11-03 22:58:59 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			194 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			194 lines
		
	
	
		
			3.5 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
using System.Collections;
 | 
						|
using System.Collections.Generic;
 | 
						|
using UnityEngine;
 | 
						|
using Mirror;
 | 
						|
 | 
						|
public class Player : NetworkBehaviour
 | 
						|
{
 | 
						|
    public bool isAlive = true;
 | 
						|
    public Team team;
 | 
						|
 | 
						|
 | 
						|
 | 
						|
    [SerializeField]PlayerUIController playerUIController;
 | 
						|
    [SerializeField] private const int defaultHp = 100;
 | 
						|
    GameObject GameManager;
 | 
						|
    GameMaster gameMaster;
 | 
						|
 | 
						|
 | 
						|
    public ulong clientId;
 | 
						|
 | 
						|
    [SyncVar(hook = nameof(SetName))] 
 | 
						|
    public string username;
 | 
						|
 | 
						|
    [SerializeField] GameObject usernameTextObj;
 | 
						|
 | 
						|
    [SerializeField] [SyncVar]public int health = 100;
 | 
						|
    private int kills;
 | 
						|
    private int deaths;
 | 
						|
 | 
						|
    private void Start()
 | 
						|
    {
 | 
						|
        
 | 
						|
        GameManager = GameObject.Find("MatchController");
 | 
						|
        gameMaster = GameManager.GetComponent<GameMaster>();
 | 
						|
        if (isServer) 
 | 
						|
        {
 | 
						|
            health = defaultHp;
 | 
						|
            gameMaster.RegisterPlayer(GetComponent<Player>());
 | 
						|
            //respawnPos(gameMaster.RespawnRequest(this.gameObject, team.teamID));
 | 
						|
        }
 | 
						|
        
 | 
						|
 | 
						|
    }
 | 
						|
 | 
						|
    private void Update()
 | 
						|
    {
 | 
						|
        if (isLocalPlayer)
 | 
						|
        {
 | 
						|
            if (Input.GetKeyDown(KeyCode.N))
 | 
						|
            {
 | 
						|
                playerUIController.showHit();
 | 
						|
                
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
    public override void OnStartLocalPlayer()
 | 
						|
    {
 | 
						|
        base.OnStartClient();
 | 
						|
        
 | 
						|
    }
 | 
						|
 | 
						|
    public void SetName(string oldName, string newName)
 | 
						|
    {
 | 
						|
        username = newName;
 | 
						|
        usernameTextObj.GetComponent<TMPro.TextMeshPro>().SetText(username);
 | 
						|
    }
 | 
						|
 | 
						|
    public string GetName()
 | 
						|
    {
 | 
						|
        return name;
 | 
						|
    }
 | 
						|
    public void Respawn()
 | 
						|
    {
 | 
						|
        
 | 
						|
        
 | 
						|
    }
 | 
						|
    [Command]
 | 
						|
    void CmdRespawnRequest() 
 | 
						|
    {
 | 
						|
        respawnPos(gameMaster.RespawnRequest(this.gameObject, team.teamID));
 | 
						|
        isAlive = true;
 | 
						|
    }
 | 
						|
 | 
						|
    [ClientRpc]
 | 
						|
    public void respawnPos(Vector3 pos) 
 | 
						|
    {
 | 
						|
        GetComponent<CharacterController>().enabled = false;
 | 
						|
        transform.position = pos;
 | 
						|
        GetComponent<CharacterController>().enabled = true;
 | 
						|
        health = defaultHp;
 | 
						|
        isAlive = true;
 | 
						|
    }
 | 
						|
 | 
						|
    public void Die()
 | 
						|
    {
 | 
						|
        isAlive = false;
 | 
						|
        AddDeaths(1);
 | 
						|
        Debug.Log("DIE");
 | 
						|
    }
 | 
						|
 | 
						|
    //Health
 | 
						|
    public void AddHealth(int value)
 | 
						|
    {
 | 
						|
        if (isAlive)
 | 
						|
        {
 | 
						|
            health += value;
 | 
						|
        }
 | 
						|
        
 | 
						|
    }
 | 
						|
    public void RemoveHealth(int value)
 | 
						|
    {
 | 
						|
 | 
						|
        
 | 
						|
        if (isAlive)
 | 
						|
        {
 | 
						|
            ShowHit();
 | 
						|
            health -= value;
 | 
						|
            if (health <= 0)
 | 
						|
            {
 | 
						|
                health = 0;
 | 
						|
                Die();
 | 
						|
            }
 | 
						|
        }
 | 
						|
        
 | 
						|
    }
 | 
						|
 | 
						|
    [ClientRpc]
 | 
						|
    private void ShowHit() 
 | 
						|
    {
 | 
						|
        playerUIController.showHit();
 | 
						|
    }
 | 
						|
    public void SetHealth(int value)
 | 
						|
    {
 | 
						|
        if (isAlive)
 | 
						|
        {
 | 
						|
            health = value;
 | 
						|
            if (health <= 0)
 | 
						|
            {
 | 
						|
                AddDeaths(1);
 | 
						|
                health = 0;
 | 
						|
                Die();
 | 
						|
            }
 | 
						|
        }
 | 
						|
    }
 | 
						|
 | 
						|
    public int GetHealth()
 | 
						|
    {
 | 
						|
        return health;
 | 
						|
    }
 | 
						|
 | 
						|
    //Kills
 | 
						|
    public void AddKills(int value)
 | 
						|
    {
 | 
						|
        kills += value;
 | 
						|
    }
 | 
						|
    public void RemoveKills(int value)
 | 
						|
    {
 | 
						|
        kills -= value;
 | 
						|
    }
 | 
						|
    public void SetKills(int value)
 | 
						|
    {
 | 
						|
        kills = value;
 | 
						|
    }
 | 
						|
 | 
						|
    public int GetKills()
 | 
						|
    {
 | 
						|
        return kills;
 | 
						|
    }
 | 
						|
 | 
						|
    //Deaths
 | 
						|
    public void AddDeaths(int value)
 | 
						|
    {
 | 
						|
        deaths += value;
 | 
						|
    }
 | 
						|
    public void RemoveDeaths(int value)
 | 
						|
    {
 | 
						|
        deaths -= value;
 | 
						|
    }
 | 
						|
    public void SetDeaths(int value)
 | 
						|
    {
 | 
						|
        deaths = value;
 | 
						|
    }
 | 
						|
 | 
						|
    public int GetDeaths()
 | 
						|
    {
 | 
						|
        return deaths;
 | 
						|
    }
 | 
						|
 | 
						|
}
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |