Files
UltimateFishing2020/Assets/Scripts/Assembly-CSharp/MultiplayerRodSpawner.cs
2026-03-04 10:03:45 +08:00

83 lines
3.6 KiB
C#

using System.Collections.Generic;
using Photon.Pun;
using UnityEngine;
public class MultiplayerRodSpawner : MonoBehaviour
{
[SerializeField]
private MultiplayerRodEntity rod_prefab;
private MultiplayerRodEntity spawnedRodInHands;
private List<MultiplayerRodEntity> spawnedRodInSupport;
private void SceneLoader_OnBeginSceneLoad(string sceneLoadName)
{
spawnedRodInSupport = new List<MultiplayerRodEntity>();
}
private void InventoryManager_OnRodInHandChange(FRod fRod)
{
if (MultiplayerManager.InRoomLocationStatic)
{
if ((bool)spawnedRodInHands)
{
PhotonNetwork.Destroy(spawnedRodInHands.gameObject);
spawnedRodInHands = null;
}
if (fRod != null)
{
GameManager.PlayerData.CSlots cSlots = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerSlotsEquip[fRod.indexOfslot];
MultiplayerRodEntity.InstantiationData instantiationData = new MultiplayerRodEntity.InstantiationData(cSlots.rod.ID, cSlots.reel.isNull ? (-1) : cSlots.reel.ID, cSlots.ffloat.isNull ? (-1) : cSlots.ffloat.ID, cSlots.feeder.isNull ? (-1) : cSlots.feeder.ID, cSlots.hook.isNull ? (-1) : cSlots.hook.ID, cSlots.bait.isNull ? (-1) : cSlots.bait.ID, cSlots.line.isNull ? (-1) : cSlots.line.ID, cSlots.weight.isNull ? (-1) : cSlots.weight.ID);
spawnedRodInHands = PhotonNetwork.Instantiate(rod_prefab.name, fRod.transform.position, fRod.transform.rotation, 0, instantiationData.ToObjectArray()).GetComponent<MultiplayerRodEntity>();
spawnedRodInHands.Init(fRod);
}
}
}
private void RodSupport_OnRodPutDown(FRod fRod)
{
if (MultiplayerManager.InRoomLocationStatic)
{
GameManager.PlayerData.CSlots cSlots = Singleton<SaveDataManager>.Instance.GetCurrentPlayerData().PlayerSlotsEquip[fRod.indexOfslot];
MultiplayerRodEntity.InstantiationData instantiationData = new MultiplayerRodEntity.InstantiationData(cSlots.rod.ID, cSlots.reel.isNull ? (-1) : cSlots.reel.ID, cSlots.ffloat.isNull ? (-1) : cSlots.ffloat.ID, cSlots.feeder.isNull ? (-1) : cSlots.feeder.ID, cSlots.hook.isNull ? (-1) : cSlots.hook.ID, cSlots.bait.isNull ? (-1) : cSlots.bait.ID, cSlots.line.isNull ? (-1) : cSlots.line.ID, cSlots.weight.isNull ? (-1) : cSlots.weight.ID);
MultiplayerRodEntity component = PhotonNetwork.Instantiate(rod_prefab.name, fRod.transform.position, fRod.transform.rotation, 0, instantiationData.ToObjectArray()).GetComponent<MultiplayerRodEntity>();
component.Init(fRod);
spawnedRodInSupport.Add(component);
}
}
private void RodSupport_OnRodTake(FRod fRod)
{
if (MultiplayerManager.InRoomLocationStatic)
{
MultiplayerRodEntity multiplayerRodEntity = spawnedRodInSupport.Find((MultiplayerRodEntity element) => element.FRod == fRod);
if (multiplayerRodEntity != null)
{
spawnedRodInSupport.Remove(multiplayerRodEntity);
PhotonNetwork.Destroy(multiplayerRodEntity.gameObject);
}
}
}
private void OnEnable()
{
SceneLoader.OnBeginSceneLoad += SceneLoader_OnBeginSceneLoad;
InventoryManager.OnRodInHandChange += InventoryManager_OnRodInHandChange;
RodSupport.OnRodPutDown += RodSupport_OnRodPutDown;
RodSupport.OnRodTake += RodSupport_OnRodTake;
BoatRodSupport.OnRodPutDown += RodSupport_OnRodPutDown;
BoatRodSupport.OnRodTake += RodSupport_OnRodTake;
}
private void OnDisable()
{
SceneLoader.OnBeginSceneLoad -= SceneLoader_OnBeginSceneLoad;
InventoryManager.OnRodInHandChange -= InventoryManager_OnRodInHandChange;
RodSupport.OnRodPutDown -= RodSupport_OnRodPutDown;
RodSupport.OnRodTake -= RodSupport_OnRodTake;
BoatRodSupport.OnRodPutDown -= RodSupport_OnRodPutDown;
BoatRodSupport.OnRodTake -= RodSupport_OnRodTake;
}
}