92 lines
2.7 KiB
C#
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));
|
|
}
|
|
}
|
|
}
|