|
|
|
@ -11,7 +11,8 @@ public class CrowManager : NetworkBehaviour
|
|
|
|
|
private List<ServerCharacter> players = new List<ServerCharacter>();
|
|
|
|
|
|
|
|
|
|
private ServerCharacter currentCrow;
|
|
|
|
|
|
|
|
|
|
public GameObject activeForesight;
|
|
|
|
|
|
|
|
|
|
private void Awake()
|
|
|
|
|
{
|
|
|
|
|
if (Instance != null && Instance != this)
|
|
|
|
@ -88,6 +89,11 @@ public class CrowManager : NetworkBehaviour
|
|
|
|
|
if (currentCrow != null)
|
|
|
|
|
{
|
|
|
|
|
currentCrow.Movement.SetSpeedModifier(1f);
|
|
|
|
|
var foresightPrefab = FindObjectOfType<CrowsForesightPrefab>();
|
|
|
|
|
if (foresightPrefab)
|
|
|
|
|
{
|
|
|
|
|
foresightPrefab.DespawnForesight();
|
|
|
|
|
}
|
|
|
|
|
currentCrow.SetAsCrow(false); // Clear old crow
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -136,19 +142,19 @@ public class CrowManager : NetworkBehaviour
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
// If a player was the crow but is now losing it, request foresight removal
|
|
|
|
|
if (player.IsCrow)
|
|
|
|
|
{
|
|
|
|
|
Debug.Log($"[CrowManager] {player.name} is no longer the Crow. Requesting foresight removal.");
|
|
|
|
|
if (IsServer)
|
|
|
|
|
{
|
|
|
|
|
var foresightPrefab = FindObjectOfType<CrowsForesightPrefab>();
|
|
|
|
|
if (foresightPrefab)
|
|
|
|
|
{
|
|
|
|
|
foresightPrefab.DespawnForesight();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// // If a player was the crow but is now losing it, request foresight removal
|
|
|
|
|
// if (player.IsCrow)
|
|
|
|
|
// {
|
|
|
|
|
// Debug.Log($"[CrowManager] {player.name} is no longer the Crow. Requesting foresight removal.");
|
|
|
|
|
// if (IsServer)
|
|
|
|
|
// {
|
|
|
|
|
// var foresightPrefab = FindObjectOfType<CrowsForesightPrefab>();
|
|
|
|
|
// if (foresightPrefab)
|
|
|
|
|
// {
|
|
|
|
|
// foresightPrefab.DespawnForesight();
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
// }
|
|
|
|
|
|
|
|
|
|
player.SetAsCrow(false);
|
|
|
|
|
player.SwitchToPlayerModel();
|
|
|
|
@ -273,36 +279,7 @@ public class CrowManager : NetworkBehaviour
|
|
|
|
|
|
|
|
|
|
foresightPrefab.OnSwapRequested(senderId, receiverId, senderPos, receiverPos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[Rpc(SendTo.Everyone)]
|
|
|
|
|
private void NotifySwapForesightAcceptedClientRpc(ulong senderId, Vector3 receiverPos)
|
|
|
|
|
{
|
|
|
|
|
Debug.Log($"[CrowManager] NotifySwapForesightAcceptedClientRpc received - Sender: {senderId}, ReceiverPos: {receiverPos}");
|
|
|
|
|
|
|
|
|
|
if (currentCrow == null)
|
|
|
|
|
{
|
|
|
|
|
Debug.LogError("[CrowManager] Error: Current Crow is null!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (currentCrow.clientCharacter == null)
|
|
|
|
|
{
|
|
|
|
|
Debug.LogError("[CrowManager] Error: Current Crow clientCharacter is null!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var foresightPrefab = FindObjectOfType<CrowsForesightPrefab>();
|
|
|
|
|
|
|
|
|
|
if (foresightPrefab == null)
|
|
|
|
|
{
|
|
|
|
|
Debug.LogError("[CrowManager] Error: CrowsForesightPrefab not found on Crow!");
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foresightPrefab.OnSwapAccepted(senderId, receiverPos);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|