mirror of
				https://github.com/DerTyp7/industrialize-unity.git
				synced 2025-10-31 05:17:10 +01:00 
			
		
		
		
	conveyorPO
This commit is contained in:
		
							
								
								
									
										17
									
								
								Assets/Scripts/Items/ItemManager.cs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										17
									
								
								Assets/Scripts/Items/ItemManager.cs
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,17 @@ | ||||
| using UnityEngine; | ||||
|  | ||||
| public class ItemManager : MonoBehaviour | ||||
| { | ||||
|     public static ItemManager instance; | ||||
|  | ||||
|     private void Awake() | ||||
|     { | ||||
|         if (instance == null) | ||||
|         { | ||||
|             instance = this; | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
|  | ||||
| } | ||||
							
								
								
									
										11
									
								
								Assets/Scripts/Items/ItemManager.cs.meta
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								Assets/Scripts/Items/ItemManager.cs.meta
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,11 @@ | ||||
| fileFormatVersion: 2 | ||||
| guid: 27ab07ac74967d54c86450327d86934a | ||||
| MonoImporter: | ||||
|   externalObjects: {} | ||||
|   serializedVersion: 2 | ||||
|   defaultReferences: [] | ||||
|   executionOrder: 0 | ||||
|   icon: {instanceID: 0} | ||||
|   userData:  | ||||
|   assetBundleName:  | ||||
|   assetBundleVariant:  | ||||
| @@ -1,7 +1,63 @@ | ||||
| using UnityEngine; | ||||
|  | ||||
| public class ItemObject : ScriptableObject | ||||
| public abstract class ItemObject : MonoBehaviour | ||||
| { | ||||
|     public int maxStackSize = 5; | ||||
|     public int stackSize = 1; | ||||
|     public ItemSO itemSO; | ||||
|     public float timeAlive = 0.0f; | ||||
|     public float maxTimeAlive = 60.0f; | ||||
|     public abstract void OnSpawn(); | ||||
|  | ||||
|     private Rigidbody2D rb; | ||||
|  | ||||
|     void Awake() | ||||
|     { | ||||
|         rb = GetComponent<Rigidbody2D>(); | ||||
|     } | ||||
|  | ||||
|     public void Despawn() | ||||
|     { | ||||
|         Destroy(gameObject); | ||||
|     } | ||||
|  | ||||
|     private void OnCollisionEnter2D(Collision2D collision) | ||||
|     { | ||||
|         if (collision.gameObject.GetComponent<ItemObject>() != null) | ||||
|         { | ||||
|             ItemObject collisionItemObject = collision.gameObject.GetComponent<ItemObject>(); | ||||
|             int addedStackSize = stackSize + collisionItemObject.stackSize; | ||||
|  | ||||
|             if (collisionItemObject.timeAlive < timeAlive) // The other item stacks to me | ||||
|             { | ||||
|                 if (addedStackSize <= maxStackSize) | ||||
|                 { | ||||
|                     stackSize = addedStackSize; | ||||
|                     collisionItemObject.Despawn(); | ||||
|                 } | ||||
|                 else | ||||
|                 { | ||||
|                     stackSize = maxStackSize; | ||||
|                     collisionItemObject.stackSize = addedStackSize - maxStackSize; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void Update() | ||||
|     { | ||||
|         timeAlive += Time.deltaTime; | ||||
|         if (timeAlive > maxTimeAlive) | ||||
|         { | ||||
|             Despawn(); | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     void FixedUpdate() | ||||
|     { | ||||
|         float speed = 0.3f; // TODO Get speed from ConveyorBelt | ||||
|         Vector2 direction = new Vector2(1f, 0f); // TODO Get direction from ConveyorBelt | ||||
|  | ||||
|         rb.MovePosition(rb.position + (direction * speed) * Time.fixedDeltaTime); | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -4,13 +4,22 @@ using UnityEngine; | ||||
| public class ItemSO : ScriptableObject | ||||
| { | ||||
|     public string id; | ||||
|     public string name; | ||||
|     public string itemName; | ||||
|     public GameObject prefab; | ||||
|     public Sprite icon; | ||||
|  | ||||
|     public void Spawn(Vector3 position) | ||||
|     public GameObject Spawn(Vector3 position) | ||||
|     { | ||||
|         GameObject item = Instantiate(prefab, position, Quaternion.identity); | ||||
|         // Snap to grid | ||||
|  | ||||
|         GridBuildingSystem.instance.buildingGrid.GetXY(position, out int x, out int y); | ||||
|  | ||||
|         position = GridBuildingSystem.instance.buildingGrid.GetWorldPosition(x, y); | ||||
|  | ||||
|         GameObject item = Instantiate(prefab, new Vector3(position.x, position.y, 0), Quaternion.identity); | ||||
|         item.name = name; | ||||
|         item.GetComponent<ItemObject>().itemSO = this; | ||||
|  | ||||
|         return item; | ||||
|     } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Janis
					Janis