2026-04-11 18:13:40 +07:00
|
|
|
using Fusion;
|
|
|
|
|
using TMPro;
|
|
|
|
|
using UnityEngine;
|
|
|
|
|
|
2026-04-23 08:56:35 +07:00
|
|
|
public enum _Role
|
2026-04-11 18:13:40 +07:00
|
|
|
{
|
2026-04-23 08:56:35 +07:00
|
|
|
Seeker,
|
|
|
|
|
Trapper
|
2026-04-11 18:13:40 +07:00
|
|
|
}
|
|
|
|
|
|
2026-04-30 00:55:16 +07:00
|
|
|
[System.Serializable]
|
|
|
|
|
public class PlayerProfile
|
2026-04-11 18:13:40 +07:00
|
|
|
{
|
2026-04-30 00:55:16 +07:00
|
|
|
public string Name = "Player";
|
|
|
|
|
public _Role Role = _Role.Seeker;
|
2026-04-11 18:13:40 +07:00
|
|
|
}
|
|
|
|
|
|
2026-04-30 00:55:16 +07:00
|
|
|
public class PlayerInfo : NetworkBehaviour
|
2026-04-11 18:13:40 +07:00
|
|
|
{
|
|
|
|
|
[Networked] public string playerName { get; set; }
|
|
|
|
|
|
2026-04-30 00:55:16 +07:00
|
|
|
public PlayerDataManager playerDataManager;
|
2026-04-11 18:13:40 +07:00
|
|
|
public TextMeshProUGUI nameText;
|
|
|
|
|
|
|
|
|
|
public GameObject[] characterIcons; // mảng chứa icon tương ứng với từng class, có thể gán trong inspector
|
|
|
|
|
|
|
|
|
|
// sau khi game object được tạo ra trên mạng,
|
|
|
|
|
// sẽ gọi phương thức này để khởi tạo thông tin player
|
|
|
|
|
public override void Spawned()
|
|
|
|
|
{
|
2026-04-30 00:55:16 +07:00
|
|
|
playerDataManager = FindFirstObjectByType<PlayerDataManager>(); // tìm PlayerDataManager trong scene
|
2026-04-11 18:13:40 +07:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// phương thức này sẽ được gọi mỗi frame để cập nhật thông tin hiển thị của player
|
|
|
|
|
public override void Render()
|
|
|
|
|
{
|
|
|
|
|
if (playerDataManager == null) return;
|
|
|
|
|
if (playerDataManager.TryGetPlayerMetaData(Object.InputAuthority, out var metadata))
|
|
|
|
|
{
|
|
|
|
|
var name = metadata.Name;
|
2026-04-23 08:56:35 +07:00
|
|
|
var charClass = metadata.Role;
|
2026-04-11 18:13:40 +07:00
|
|
|
|
2026-04-30 00:55:16 +07:00
|
|
|
if (nameText != null)
|
|
|
|
|
nameText.text = $"{name} ({charClass})";
|
2026-04-11 18:13:40 +07:00
|
|
|
|
2026-04-30 00:55:16 +07:00
|
|
|
if (characterIcons != null)
|
2026-04-11 18:13:40 +07:00
|
|
|
{
|
2026-04-30 00:55:16 +07:00
|
|
|
for (var i = 0; i < characterIcons.Length; i++)
|
|
|
|
|
{
|
|
|
|
|
if (characterIcons[i] != null)
|
|
|
|
|
characterIcons[i].SetActive(i == (int)charClass); // hiển thị icon tương ứng với class của player
|
|
|
|
|
}
|
2026-04-11 18:13:40 +07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
2026-04-30 00:55:16 +07:00
|
|
|
}
|