using UnityEngine; using System.Collections.Generic; using System.Linq; using RTG; public class SimulationModelStore : SimulationModel { public List storePositions = new List(); public int maxCapacity; public List storedProducts = new List(); public string storeType = "fifo"; public List transporterPositions = new List(); public void StoreProduct(GameObject product) { product.transform.parent = transform; for (int i = 0; i < storePositions.Count; i++) { Transform storePos = storePositions[i]; if (storePos.childCount == 0) { product.transform.parent = storePos; break; } } product.transform.localPosition = Vector3.zero; product.transform.localRotation = Quaternion.identity; storedProducts.Add(product); if (storedProducts.Count > maxCapacity) Debug.LogWarning("Max Capacity " + maxCapacity + " Reached on : " + nodeID); } public GameObject GetProduct() { if (storedProducts.Count == 0) return null; if (storeType.Contains("fifo")) { GameObject product = storedProducts[0]; storedProducts.Remove(product); return product; } else if (storeType.Contains("lifo")) { GameObject product = storedProducts[storedProducts.Count - 1]; storedProducts.Remove(product); return product; } return null; } public Transform GetTransporterPosition() { if (transporterPositions.Count == 0) return null; return transporterPositions[UnityEngine.Random.Range(0, transporterPositions.Count)]; } }