update: basicspawner( => random)

This commit is contained in:
manhduyhoang90
2026-04-23 08:56:35 +07:00
parent d2e3dbf653
commit fb50541036
6 changed files with 66 additions and 24 deletions

View File

@@ -14,10 +14,7 @@
[Header("Character Selection")] public TMP_InputField playerNameInput;
public Image[] characterPreviewImages;
public int selectedCharacterIndex = 0;
[Header("Room List")] public GameObject roomListParent;
public GameObject roomListItemPrefab;
@@ -28,23 +25,13 @@
{
lobbyPanel.SetActive(false);
characterSelectionPanel.SetActive(true);
OnSelectCharacter(selectedCharacterIndex);
spawner = FindFirstObjectByType<_BasicSpawner>();
await spawner.StartLobby();
}
public void OnSelectCharacter(int index)
{
selectedCharacterIndex = index;
// update preview images
for (var i = 0; i < characterPreviewImages.Length; i++)
{
characterPreviewImages[i].color = (i == index)
? Color.green
: Color.white;
}
}
public void OnNextButton()
{
@@ -59,11 +46,11 @@
var _profile = new _PlayerProfile()
{
Name = playerName,
Class = (_CharacterClass)selectedCharacterIndex
};
spawner.SetLocalPlayerProfile(_profile);
// đưa lên host để tạo player object, ở đây tạm thời chỉ log ra console
Debug.Log($"Player Name: {_profile.Name}, Class: {_profile.Class}");
Debug.Log($"Player Name: {_profile.Name}, Class: {_profile.Role}");
// chuyển sang lobby panel
characterSelectionPanel.SetActive(false);
lobbyPanel.SetActive(true);

View File

@@ -5,7 +5,7 @@ using UnityEngine;
public struct _PlayerMetaData : INetworkStruct
{
public NetworkString<_16> Name;
public _CharacterClass Class;
public _Role Role;
}
public class _PlayerDataManager : NetworkBehaviour

View File

@@ -2,16 +2,16 @@ using Fusion;
using TMPro;
using UnityEngine;
public enum _CharacterClass
public enum _Role
{
Blue,
Red
Seeker,
Trapper
}
public struct _PlayerProfile
{
public string Name;
public _CharacterClass Class;
public _Role Role;
}
public class PlayerInfo : NetworkBehaviour
@@ -37,7 +37,7 @@ public class PlayerInfo : NetworkBehaviour
if (playerDataManager.TryGetPlayerMetaData(Object.InputAuthority, out var metadata))
{
var name = metadata.Name;
var charClass = metadata.Class;
var charClass = metadata.Role;
nameText.text = $"{name} ({charClass})";

View File

@@ -146,7 +146,7 @@ public class _BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
var metaData = new _PlayerMetaData()
{
Name = LocalPlayerProfile.Name,
Class = LocalPlayerProfile.Class,
Role = LocalPlayerProfile.Role,
};
pdm.RPC_UpdatePlayerMetaData(player, metaData);
@@ -275,4 +275,27 @@ public class _BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
}
return null;
}
void AssignRoles(NetworkRunner runner)
{
var players = runner.ActivePlayers.ToList();
if (players.Count < 2) return;
var p1 = players[0];
var p2 = players[1];
bool random = UnityEngine.Random.value > 0.5f;
SetRole(runner, p1, random ? _Role.Seeker : _Role.Trapper);
SetRole(runner, p2, random ? _Role.Trapper : _Role.Seeker);
}
void SetRole(NetworkRunner runner, PlayerRef player, _Role role)
{
var obj = runner.GetPlayerObject(player);
var data = obj.GetComponent<_PlayerData>();
data.PlayerRole = role;
Debug.Log($"Player {player} assigned role: {role}");
}
}

View File

@@ -0,0 +1,30 @@
using Fusion;
using UnityEngine;
public class _PlayerData : NetworkBehaviour
{
[Networked]
public _Role PlayerRole { get; set; }
public override void Spawned()
{
if (Object.HasInputAuthority)
{
SetupByRole(PlayerRole);
}
}
void SetupByRole(_Role role)
{
if (role == _Role.Seeker)
{
Debug.Log("I am Seeker");
// bật flashlight
}
else
{
Debug.Log("I am Trapper");
// bật trap UI
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 96ce77b74a34e7440a0b54af32c6d402