Files
Ultimate-Fishing-Simulator-…/Assets/Scripts/Assembly-CSharp/MultiplayerFishingSetSpawner.cs
2026-03-04 09:37:33 +08:00

92 lines
2.7 KiB
C#

using UnityEngine;
public class MultiplayerFishingSetSpawner : MonoBehaviour
{
[SerializeField]
private ScriptableEventNetworkObjectSpawn OnNetworkObjectSpawn;
private PlayerFishingGearController playerFishingGearController;
private MultiplayerFishingSetControler setInHands;
private void MultiplayerManager_OnInSession()
{
if (playerFishingGearController == null)
{
playerFishingGearController = Object.FindFirstObjectByType<PlayerFishingGearController>();
if ((bool)playerFishingGearController)
{
playerFishingGearController.OnFishingSetEquiped += PlayerFishingGearController_OnFishingSetEquiped;
playerFishingGearController.OnFishingSetUnequip += PlayerFishingGearController_OnFishingSetUnequip;
}
}
SpawnSetInPlayerHands();
}
private void MultiplayerManager_OnLeaveingSession()
{
if ((bool)playerFishingGearController)
{
playerFishingGearController.OnFishingSetEquiped -= PlayerFishingGearController_OnFishingSetEquiped;
playerFishingGearController.OnFishingSetUnequip -= PlayerFishingGearController_OnFishingSetUnequip;
playerFishingGearController = null;
}
}
private void MultiplayerFishingSetControler_OnStartLocal(MultiplayerFishingSetControler mfsc)
{
DespawnSetInPlayerHands();
setInHands = mfsc;
if ((bool)playerFishingGearController && (bool)playerFishingGearController.EquipedFishingSet)
{
setInHands.Init(playerFishingGearController.EquipedFishingSet);
}
else
{
DespawnSetInPlayerHands();
}
}
private void PlayerFishingGearController_OnFishingSetEquiped(FishingSetController fishingSetController)
{
SpawnSetInPlayerHands();
}
private void PlayerFishingGearController_OnFishingSetUnequip()
{
DespawnSetInPlayerHands();
}
private void OnEnable()
{
MultiplayerManager.OnInSession += MultiplayerManager_OnInSession;
MultiplayerManager.OnLeaveingSession += MultiplayerManager_OnLeaveingSession;
MultiplayerFishingSetControler.OnStartLocal += MultiplayerFishingSetControler_OnStartLocal;
}
private void OnDisable()
{
MultiplayerManager.OnInSession -= MultiplayerManager_OnInSession;
MultiplayerManager.OnLeaveingSession -= MultiplayerManager_OnLeaveingSession;
MultiplayerFishingSetControler.OnStartLocal -= MultiplayerFishingSetControler_OnStartLocal;
}
private void DespawnSetInPlayerHands()
{
if ((bool)setInHands)
{
setInHands.Deinit();
setInHands = null;
}
}
private void SpawnSetInPlayerHands()
{
DespawnSetInPlayerHands();
if ((bool)playerFishingGearController && (bool)playerFishingGearController.EquipedFishingSet)
{
OnNetworkObjectSpawn.Raise(new NetworkObjectSpawn("MultiplayerFishingSetControler", playerFishingGearController.EquipedFishingSet.transform.position, playerFishingGearController.EquipedFishingSet.transform.rotation));
}
}
}