123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 |
- using System.Collections;
- using System.Collections.Generic;
- using Mirror;
- using UnityEngine;
- public class FarmingManager : NetworkBehaviour
- {
- public static FarmingManager instance;
- void Awake(){
- instance = this;
- }
-
- void Start()
- {
- if(!isServer){
- Destroy(this);
- }
- farmingItems = new List<FarmingPositionEntry>();
- foreach(FarmingSpawnPoints point in farmingPoints){
- for(int i=0; i < point.pointsParent.childCount; i++){
- farmingItems.Add(new FarmingPositionEntry(){prefab = point.prefab, spawnLocation = point.pointsParent.GetChild(i)});
- }
- }
- for(int i = 0; i<farmingItems.Count; i++ ){
- farmingItems[i].destroyedTime = -timeToReSpawn;
- }
- }
- public float timeToReSpawn = 180f;
-
- public List<FarmingSpawnPoints> farmingPoints;
- public List<FarmingPositionEntry> farmingItems;
-
- void Update()
- {
- for(int i = 0; i<farmingItems.Count; i++ ){
- FarmingPositionEntry farmingItem = farmingItems[i];
- if(farmingItem.spawnedItem == null ){
- if(Time.time - farmingItem.destroyedTime > timeToReSpawn ){
- Spawn(i);
- }
- }
- }
- }
- public void Spawn(int index){
- FarmingPositionEntry item = farmingItems[index];
- GameObject spawn = Instantiate(item.prefab , item.spawnLocation.position , Quaternion.identity);
- farmingItems[index].spawnedItem = spawn;
- NetworkServer.Spawn(spawn, NetworkConnectionToServer.LocalConnectionId);
- }
- public void DestroyItem(GameObject item){
- int targetIndex =0;
- for(int i=0; i < farmingItems.Count; i++){
- if(farmingItems[i].spawnedItem == item){
- targetIndex = i;
- break;
- }
- }
- farmingItems[targetIndex].destroyedTime = Time.time;
- farmingItems[targetIndex].spawnedItem = null;
-
- NetworkServer.Destroy(item);
- }
- public void DestroyItemByID(uint itemNetId){
- Debug.Log("Destroying farming item " + itemNetId);
- int targetIndex = 0;
- for(int i =0; i < farmingItems.Count; i++){
- if(farmingItems[i].spawnedItem == null){continue;}
- if(farmingItems[i].spawnedItem.GetComponent<NetworkIdentity>().netId == itemNetId){
- targetIndex =i;
- farmingItems[i].spawnedItem.GetComponent<FarmItem>().DestroySelf();
- break;
- }
- }
- farmingItems[targetIndex].destroyedTime = Time.time;
- farmingItems[targetIndex].spawnedItem = null;
- }
- }
- [System.Serializable]
- public class FarmingPositionEntry{
- public Transform spawnLocation;
- public GameObject prefab;
- public GameObject spawnedItem;
- public float destroyedTime;
- }
- [System.Serializable]
- public class FarmingSpawnPoints{
- public Transform pointsParent;
- public GameObject prefab;
- }
|