update: basicspawner( => random)
This commit is contained in:
@@ -14,11 +14,8 @@
|
|||||||
|
|
||||||
[Header("Character Selection")] public TMP_InputField playerNameInput;
|
[Header("Character Selection")] public TMP_InputField playerNameInput;
|
||||||
|
|
||||||
public Image[] characterPreviewImages;
|
|
||||||
|
|
||||||
|
|
||||||
public int selectedCharacterIndex = 0;
|
|
||||||
|
|
||||||
[Header("Room List")] public GameObject roomListParent;
|
[Header("Room List")] public GameObject roomListParent;
|
||||||
public GameObject roomListItemPrefab;
|
public GameObject roomListItemPrefab;
|
||||||
public TMP_InputField roomNameInput;
|
public TMP_InputField roomNameInput;
|
||||||
@@ -28,23 +25,13 @@
|
|||||||
{
|
{
|
||||||
lobbyPanel.SetActive(false);
|
lobbyPanel.SetActive(false);
|
||||||
characterSelectionPanel.SetActive(true);
|
characterSelectionPanel.SetActive(true);
|
||||||
OnSelectCharacter(selectedCharacterIndex);
|
|
||||||
|
|
||||||
spawner = FindFirstObjectByType<_BasicSpawner>();
|
spawner = FindFirstObjectByType<_BasicSpawner>();
|
||||||
await spawner.StartLobby();
|
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()
|
public void OnNextButton()
|
||||||
{
|
{
|
||||||
@@ -59,11 +46,11 @@
|
|||||||
var _profile = new _PlayerProfile()
|
var _profile = new _PlayerProfile()
|
||||||
{
|
{
|
||||||
Name = playerName,
|
Name = playerName,
|
||||||
Class = (_CharacterClass)selectedCharacterIndex
|
|
||||||
};
|
};
|
||||||
spawner.SetLocalPlayerProfile(_profile);
|
spawner.SetLocalPlayerProfile(_profile);
|
||||||
// đưa lên host để tạo player object, ở đây tạm thời chỉ log ra console
|
// đư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
|
// chuyển sang lobby panel
|
||||||
characterSelectionPanel.SetActive(false);
|
characterSelectionPanel.SetActive(false);
|
||||||
lobbyPanel.SetActive(true);
|
lobbyPanel.SetActive(true);
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ using UnityEngine;
|
|||||||
public struct _PlayerMetaData : INetworkStruct
|
public struct _PlayerMetaData : INetworkStruct
|
||||||
{
|
{
|
||||||
public NetworkString<_16> Name;
|
public NetworkString<_16> Name;
|
||||||
public _CharacterClass Class;
|
public _Role Role;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class _PlayerDataManager : NetworkBehaviour
|
public class _PlayerDataManager : NetworkBehaviour
|
||||||
|
|||||||
@@ -2,16 +2,16 @@ using Fusion;
|
|||||||
using TMPro;
|
using TMPro;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public enum _CharacterClass
|
public enum _Role
|
||||||
{
|
{
|
||||||
Blue,
|
Seeker,
|
||||||
Red
|
Trapper
|
||||||
}
|
}
|
||||||
|
|
||||||
public struct _PlayerProfile
|
public struct _PlayerProfile
|
||||||
{
|
{
|
||||||
public string Name;
|
public string Name;
|
||||||
public _CharacterClass Class;
|
public _Role Role;
|
||||||
}
|
}
|
||||||
|
|
||||||
public class PlayerInfo : NetworkBehaviour
|
public class PlayerInfo : NetworkBehaviour
|
||||||
@@ -37,7 +37,7 @@ public class PlayerInfo : NetworkBehaviour
|
|||||||
if (playerDataManager.TryGetPlayerMetaData(Object.InputAuthority, out var metadata))
|
if (playerDataManager.TryGetPlayerMetaData(Object.InputAuthority, out var metadata))
|
||||||
{
|
{
|
||||||
var name = metadata.Name;
|
var name = metadata.Name;
|
||||||
var charClass = metadata.Class;
|
var charClass = metadata.Role;
|
||||||
|
|
||||||
nameText.text = $"{name} ({charClass})";
|
nameText.text = $"{name} ({charClass})";
|
||||||
|
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ public class _BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
|
|||||||
var metaData = new _PlayerMetaData()
|
var metaData = new _PlayerMetaData()
|
||||||
{
|
{
|
||||||
Name = LocalPlayerProfile.Name,
|
Name = LocalPlayerProfile.Name,
|
||||||
Class = LocalPlayerProfile.Class,
|
Role = LocalPlayerProfile.Role,
|
||||||
|
|
||||||
};
|
};
|
||||||
pdm.RPC_UpdatePlayerMetaData(player, metaData);
|
pdm.RPC_UpdatePlayerMetaData(player, metaData);
|
||||||
@@ -275,4 +275,27 @@ public class _BasicSpawner : MonoBehaviour, INetworkRunnerCallbacks
|
|||||||
}
|
}
|
||||||
return null;
|
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