update: basicspawner( => random)
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -5,7 +5,7 @@ using UnityEngine;
|
||||
public struct _PlayerMetaData : INetworkStruct
|
||||
{
|
||||
public NetworkString<_16> Name;
|
||||
public _CharacterClass Class;
|
||||
public _Role Role;
|
||||
}
|
||||
|
||||
public class _PlayerDataManager : NetworkBehaviour
|
||||
|
||||
@@ -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})";
|
||||
|
||||
|
||||
@@ -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}");
|
||||
}
|
||||
}
|
||||
|
||||
30
Assets/Scripts/Duy/_PlayerData.cs
Normal file
30
Assets/Scripts/Duy/_PlayerData.cs
Normal 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
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Duy/_PlayerData.cs.meta
Normal file
2
Assets/Scripts/Duy/_PlayerData.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 96ce77b74a34e7440a0b54af32c6d402
|
||||
Reference in New Issue
Block a user