mirror of
https://github.com/DerTyp7/harvestdale-unity.git
synced 2025-10-29 20:52:10 +01:00
add field functinallity
This commit is contained in:
@@ -9,11 +9,11 @@ MonoBehaviour:
|
|||||||
m_GameObject: {fileID: 0}
|
m_GameObject: {fileID: 0}
|
||||||
m_Enabled: 1
|
m_Enabled: 1
|
||||||
m_EditorHideFlags: 0
|
m_EditorHideFlags: 0
|
||||||
m_Script: {fileID: 11500000, guid: 00ac127aa1678874aa5c9f1381b6b47a, type: 3}
|
m_Script: {fileID: 11500000, guid: 01eac50f7d5dd124e94a48f3e4428435, type: 3}
|
||||||
m_Name: Apple
|
m_Name: Apple
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
uuid: apple
|
uuid: harvest_apple
|
||||||
itemName: Apple
|
itemName: Apple
|
||||||
sprite: {fileID: -992969038, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
sprite: {fileID: 0}
|
||||||
stackable: 1
|
stackable: 1
|
||||||
maxStackSize: 100
|
maxStackSize: 100
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!114 &11400000
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 0}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: 00ac127aa1678874aa5c9f1381b6b47a, type: 3}
|
|
||||||
m_Name: Banana
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
uuid: banana
|
|
||||||
itemName: Banana
|
|
||||||
sprite: {fileID: 1603187126, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
|
||||||
stackable: 1
|
|
||||||
maxStackSize: 100
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: cbbbe8384f7ec2845b4145744d51ecf8
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 11400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -17,7 +17,7 @@ MonoBehaviour:
|
|||||||
sprite: {fileID: -992969038, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
sprite: {fileID: -992969038, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
||||||
stackable: 0
|
stackable: 0
|
||||||
maxStackSize: 1
|
maxStackSize: 1
|
||||||
daysToGrow: 6
|
daysToGrow: 1
|
||||||
sprites:
|
sprites:
|
||||||
- {fileID: -1568493089, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
- {fileID: -1568493089, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
||||||
- {fileID: 1918686608, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
- {fileID: 1918686608, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
||||||
@@ -25,3 +25,4 @@ MonoBehaviour:
|
|||||||
- {fileID: -1058307475, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
- {fileID: -1058307475, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
||||||
- {fileID: -1664452952, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
- {fileID: -1664452952, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
||||||
- {fileID: 1402415594, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
- {fileID: 1402415594, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
||||||
|
harvest: {fileID: 11400000, guid: 601d7a33a6c338d49a35134d5c772940, type: 2}
|
||||||
|
|||||||
@@ -1,19 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!114 &11400000
|
|
||||||
MonoBehaviour:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
m_CorrespondingSourceObject: {fileID: 0}
|
|
||||||
m_PrefabInstance: {fileID: 0}
|
|
||||||
m_PrefabAsset: {fileID: 0}
|
|
||||||
m_GameObject: {fileID: 0}
|
|
||||||
m_Enabled: 1
|
|
||||||
m_EditorHideFlags: 0
|
|
||||||
m_Script: {fileID: 11500000, guid: ab99e668aa1ba5a469eef680f3bb4b45, type: 3}
|
|
||||||
m_Name: Hoe
|
|
||||||
m_EditorClassIdentifier:
|
|
||||||
uuid: Dia Hoe
|
|
||||||
itemName:
|
|
||||||
sprite: {fileID: 0}
|
|
||||||
stackable: 0
|
|
||||||
maxStackSize: 1
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 030984201821ba840872812944c9dc13
|
|
||||||
NativeFormatImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
mainObjectFileID: 11400000
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -150,7 +150,7 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 122753038}
|
m_GameObject: {fileID: 122753038}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 9.95, y: 5.15, z: 0}
|
m_LocalPosition: {x: 1.71, y: 4.66, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
@@ -222,10 +222,9 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
radius: 3
|
radius: 3
|
||||||
interactText: Interact
|
|
||||||
interactTextOutOfRange: Out of range
|
interactTextOutOfRange: Out of range
|
||||||
field: {fileID: 0}
|
field: {fileID: 1047402457}
|
||||||
crop: {fileID: 0}
|
testCrop: {fileID: 11400000, guid: 4ce577b0996dc314ab1b42f42614e3a2, type: 2}
|
||||||
--- !u!61 &122753042
|
--- !u!61 &122753042
|
||||||
BoxCollider2D:
|
BoxCollider2D:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -554,7 +553,7 @@ SpriteRenderer:
|
|||||||
m_SortingLayerID: 949894591
|
m_SortingLayerID: 949894591
|
||||||
m_SortingLayer: -1
|
m_SortingLayer: -1
|
||||||
m_SortingOrder: 1
|
m_SortingOrder: 1
|
||||||
m_Sprite: {fileID: 109301499, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
|
m_Sprite: {fileID: 0}
|
||||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
m_FlipX: 0
|
m_FlipX: 0
|
||||||
m_FlipY: 0
|
m_FlipY: 0
|
||||||
@@ -562,7 +561,7 @@ SpriteRenderer:
|
|||||||
m_Size: {x: 10, y: 10}
|
m_Size: {x: 10, y: 10}
|
||||||
m_AdaptiveModeThreshold: 0.5
|
m_AdaptiveModeThreshold: 0.5
|
||||||
m_SpriteTileMode: 0
|
m_SpriteTileMode: 0
|
||||||
m_WasSpriteAssigned: 1
|
m_WasSpriteAssigned: 0
|
||||||
m_MaskInteraction: 0
|
m_MaskInteraction: 0
|
||||||
m_SpriteSortPoint: 0
|
m_SpriteSortPoint: 0
|
||||||
--- !u!4 &518922043
|
--- !u!4 &518922043
|
||||||
@@ -573,7 +572,7 @@ Transform:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 518922041}
|
m_GameObject: {fileID: 518922041}
|
||||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
m_LocalPosition: {x: 0, y: 0.1, z: 0}
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
m_ConstrainProportionsScale: 0
|
m_ConstrainProportionsScale: 0
|
||||||
m_Children: []
|
m_Children: []
|
||||||
@@ -959,7 +958,7 @@ SpriteRenderer:
|
|||||||
m_FlipX: 0
|
m_FlipX: 0
|
||||||
m_FlipY: 0
|
m_FlipY: 0
|
||||||
m_DrawMode: 2
|
m_DrawMode: 2
|
||||||
m_Size: {x: 10, y: 10}
|
m_Size: {x: 14, y: 10}
|
||||||
m_AdaptiveModeThreshold: 0.5
|
m_AdaptiveModeThreshold: 0.5
|
||||||
m_SpriteTileMode: 0
|
m_SpriteTileMode: 0
|
||||||
m_WasSpriteAssigned: 1
|
m_WasSpriteAssigned: 1
|
||||||
@@ -1314,6 +1313,10 @@ MonoBehaviour:
|
|||||||
maxSlots: 0
|
maxSlots: 0
|
||||||
maxStackSize: 0
|
maxStackSize: 0
|
||||||
items: []
|
items: []
|
||||||
|
harvestInventory:
|
||||||
|
maxSlots: 0
|
||||||
|
maxStackSize: 0
|
||||||
|
items: []
|
||||||
--- !u!1 &783176647
|
--- !u!1 &783176647
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -57128,14 +57131,12 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 53c8af14dae8dbe4e95cda372289f89e, type: 3}
|
m_Script: {fileID: 11500000, guid: 53c8af14dae8dbe4e95cda372289f89e, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
isPlaced: 0
|
isPlaced: 1
|
||||||
placeableObject: {fileID: 0}
|
placeableObject: {fileID: 11400000, guid: a29dd64dd331a6342b05e81d10b9b099, type: 2}
|
||||||
TESTCROP: {fileID: 0}
|
cropSpriteRenderer: {fileID: 518922042}
|
||||||
|
backgroundSpriteRenderer: {fileID: 531540403}
|
||||||
|
fieldController: {fileID: 122753038}
|
||||||
crop: {fileID: 0}
|
crop: {fileID: 0}
|
||||||
currentCropSprite: {fileID: 0}
|
|
||||||
daysSincePlanted: 0
|
|
||||||
isWatered: 1
|
|
||||||
state: 0
|
|
||||||
--- !u!1 &1507699183
|
--- !u!1 &1507699183
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
|
|||||||
@@ -2,9 +2,40 @@ using UnityEngine;
|
|||||||
|
|
||||||
public class FarmManager : MonoBehaviour
|
public class FarmManager : MonoBehaviour
|
||||||
{
|
{
|
||||||
public Inventory<Crop> cropInventory;
|
|
||||||
|
// Singleton
|
||||||
|
public static FarmManager Instance { get; private set; }
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
private Inventory<Crop> cropInventory;
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
private Inventory<Harvest> harvestInventory;
|
||||||
|
|
||||||
|
public Inventory<Crop> CropInventory
|
||||||
|
{
|
||||||
|
get { return cropInventory; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public Inventory<Harvest> HarvestInventory
|
||||||
|
{
|
||||||
|
get { return harvestInventory; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
if (Instance == null)
|
||||||
|
{
|
||||||
|
Instance = this;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Destroy(gameObject);
|
||||||
|
}
|
||||||
|
}
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
cropInventory = new Inventory<Crop>(2, 200);
|
cropInventory = new Inventory<Crop>(2, 200);
|
||||||
|
harvestInventory = new Inventory<Harvest>(2, 200);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,3 +1,8 @@
|
|||||||
|
// Contains logic for the field
|
||||||
|
// Checks if a plant is dead, growing or harvestable
|
||||||
|
// Determines what sprite to show
|
||||||
|
// Handles planting and harvesting
|
||||||
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
public enum FieldState
|
public enum FieldState
|
||||||
@@ -10,57 +15,133 @@ public enum FieldState
|
|||||||
|
|
||||||
public class Field : Building
|
public class Field : Building
|
||||||
{
|
{
|
||||||
public Crop crop;
|
[Header("Children Objects")]
|
||||||
|
[SerializeField]
|
||||||
|
private SpriteRenderer cropSpriteRenderer;
|
||||||
|
|
||||||
public SpriteRenderer currentCropSpriteRenderer;
|
[SerializeField]
|
||||||
public int daysSincePlanted;
|
private SpriteRenderer backgroundSpriteRenderer;
|
||||||
public bool isWatered = false;
|
|
||||||
public FieldState state = FieldState.EMPTY;
|
|
||||||
|
|
||||||
|
[SerializeField]
|
||||||
|
private GameObject fieldController;
|
||||||
|
|
||||||
|
[Header("Field Properties")]
|
||||||
|
[SerializeField]
|
||||||
|
private Crop crop;
|
||||||
|
|
||||||
|
private Vector2Int size;
|
||||||
|
private int daysSincePlanted;
|
||||||
|
private bool isWatered = false;
|
||||||
|
|
||||||
|
private FieldState state = FieldState.EMPTY;
|
||||||
|
|
||||||
|
public FieldState State
|
||||||
|
{
|
||||||
|
get { return state; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool IsWatered
|
||||||
|
{
|
||||||
|
get { return isWatered; }
|
||||||
|
}
|
||||||
|
|
||||||
private void Start()
|
private void Start()
|
||||||
{
|
{
|
||||||
TimeManager.OnDayChanged += AddDay;
|
size = DeterminSize();
|
||||||
|
SetFieldControllerPosition();
|
||||||
|
fieldController.GetComponent<FieldController>().SetField(this);
|
||||||
|
|
||||||
|
TimeManager.OnDayChanged += DayInterval;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void OnPlace()
|
||||||
|
{
|
||||||
|
EmptyField();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void SetFieldControllerPosition()
|
||||||
|
{
|
||||||
|
if (fieldController)
|
||||||
|
{
|
||||||
|
fieldController.transform.localPosition = new Vector3(size.x, size.y / 2, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Vector2Int DeterminSize()
|
||||||
|
{
|
||||||
|
return new Vector2Int(Mathf.FloorToInt(backgroundSpriteRenderer.size.x), Mathf.FloorToInt(backgroundSpriteRenderer.size.y));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void SetSprite(Sprite sprite)
|
private void SetSprite(Sprite sprite)
|
||||||
{
|
{
|
||||||
if (currentCropSpriteRenderer)
|
if (cropSpriteRenderer)
|
||||||
{
|
{
|
||||||
currentCropSpriteRenderer.sprite = sprite;
|
cropSpriteRenderer.sprite = sprite;
|
||||||
currentCropSpriteRenderer.drawMode = SpriteDrawMode.Tiled;
|
cropSpriteRenderer.drawMode = SpriteDrawMode.Tiled;
|
||||||
currentCropSpriteRenderer.size = new Vector2(10, 10); // TODO: Make this dynamic
|
cropSpriteRenderer.size = size;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void DayInterval()
|
||||||
private void AddDay()
|
|
||||||
{
|
{
|
||||||
if (crop && isPlaced && state != FieldState.DEAD)
|
if (state == FieldState.GROWING)
|
||||||
{
|
{
|
||||||
if (!isWatered)
|
if (!isWatered)
|
||||||
state = FieldState.DEAD;
|
state = FieldState.DEAD;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
daysSincePlanted++;
|
daysSincePlanted++;
|
||||||
|
if (daysSincePlanted >= crop.daysToGrow)
|
||||||
|
{
|
||||||
|
state = FieldState.HARVESTABLE;
|
||||||
|
}
|
||||||
SetSprite(crop.sprites[daysSincePlanted]);
|
SetSprite(crop.sprites[daysSincePlanted]);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region Field controlling
|
||||||
public void Plant(Crop newCrop)
|
public void Plant(Crop newCrop)
|
||||||
|
{
|
||||||
|
bool enoughItemsInInventory = FarmManager.Instance.CropInventory.RemoveExactAmount(newCrop, size.x * size.y);
|
||||||
|
if (enoughItemsInInventory)
|
||||||
{
|
{
|
||||||
daysSincePlanted = 0;
|
daysSincePlanted = 0;
|
||||||
state = FieldState.GROWING;
|
state = FieldState.GROWING;
|
||||||
crop = newCrop;
|
crop = newCrop;
|
||||||
SetSprite(crop.sprites[0]);
|
SetSprite(crop.sprites[0]);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else
|
||||||
public override void OnPlace()
|
|
||||||
{
|
{
|
||||||
Plant(null);
|
Debug.Log("Not enough items in inventory");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Harvest()
|
||||||
|
{
|
||||||
|
if (state == FieldState.HARVESTABLE)
|
||||||
|
{
|
||||||
|
FarmManager.Instance.HarvestInventory.Add(crop.harvest, size.x * size.y);
|
||||||
|
state = FieldState.EMPTY;
|
||||||
|
SetSprite(null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Water()
|
||||||
|
{
|
||||||
|
isWatered = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void UnWater()
|
||||||
|
{
|
||||||
|
isWatered = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void EmptyField()
|
||||||
|
{
|
||||||
|
state = FieldState.EMPTY;
|
||||||
|
SetSprite(null);
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -7,8 +7,7 @@ public abstract class Interactable : MonoBehaviour
|
|||||||
[Range(0f, 10f)]
|
[Range(0f, 10f)]
|
||||||
private float radius = 2f; // radius of interaction
|
private float radius = 2f; // radius of interaction
|
||||||
|
|
||||||
[SerializeField]
|
public abstract string interactText { get; } // text to display when player is in range
|
||||||
private string interactText = "Interact"; // text to display when player is in range
|
|
||||||
|
|
||||||
[SerializeField]
|
[SerializeField]
|
||||||
private string interactTextOutOfRange = "Out of range"; // text to display when player is out of range
|
private string interactTextOutOfRange = "Out of range"; // text to display when player is out of range
|
||||||
|
|||||||
@@ -11,6 +11,10 @@ public class Inventory<TItem> where TItem : Item
|
|||||||
[SerializeField]
|
[SerializeField]
|
||||||
private InventoryItem<TItem>[] items;
|
private InventoryItem<TItem>[] items;
|
||||||
|
|
||||||
|
public InventoryItem<TItem>[] Items
|
||||||
|
{
|
||||||
|
get { return items; }
|
||||||
|
}
|
||||||
public Inventory(int maxSlots = 1, int maxStackSize = 100)
|
public Inventory(int maxSlots = 1, int maxStackSize = 100)
|
||||||
{
|
{
|
||||||
this.maxSlots = maxSlots;
|
this.maxSlots = maxSlots;
|
||||||
@@ -89,7 +93,7 @@ public class Inventory<TItem> where TItem : Item
|
|||||||
|
|
||||||
|
|
||||||
// removes an item from the inventory, returns the quantity of items which could not be removed
|
// removes an item from the inventory, returns the quantity of items which could not be removed
|
||||||
public int Remove(Item item, int count)
|
public int Remove(TItem item, int count)
|
||||||
{
|
{
|
||||||
int remainingCount = count;
|
int remainingCount = count;
|
||||||
|
|
||||||
@@ -113,17 +117,48 @@ public class Inventory<TItem> where TItem : Item
|
|||||||
// exit the loop if all items have been removed
|
// exit the loop if all items have been removed
|
||||||
if (remainingCount == 0)
|
if (remainingCount == 0)
|
||||||
{
|
{
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// return the quantity of items which could not be removed
|
// return the quantity of items which could not be removed
|
||||||
|
|
||||||
return remainingCount;
|
return remainingCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int GetCountOfItem(TItem item)
|
||||||
|
{
|
||||||
|
int count = 0;
|
||||||
|
|
||||||
|
// look for an existing stack of the item in the inventory
|
||||||
|
for (int i = 0; i < items.Length; i++)
|
||||||
|
{
|
||||||
|
InventoryItem<TItem> invItem = items[i];
|
||||||
|
if (invItem != null && invItem.item == item)
|
||||||
|
{
|
||||||
|
count += invItem.count;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return count;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Remove the exact amount of items from the inventory
|
||||||
|
// If the amount of items in the inventory is less than the amount to remove, it will remove nothing and return false
|
||||||
|
public bool RemoveExactAmount(TItem item, int count)
|
||||||
|
{
|
||||||
|
if (GetCountOfItem(item) < count)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
Remove(item, count);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void SwapItems(int index1, int index2)
|
public void SwapItems(int index1, int index2)
|
||||||
{
|
{
|
||||||
InventoryItem<TItem> temp = items[index1];
|
InventoryItem<TItem> temp = items[index1];
|
||||||
|
|||||||
@@ -8,4 +8,5 @@ public class Crop : Item
|
|||||||
{
|
{
|
||||||
public int daysToGrow;
|
public int daysToGrow;
|
||||||
public List<Sprite> sprites = new List<Sprite>();
|
public List<Sprite> sprites = new List<Sprite>();
|
||||||
|
public Harvest harvest;
|
||||||
}
|
}
|
||||||
9
Assets/Scripts/Items/Harvest.cs
Normal file
9
Assets/Scripts/Items/Harvest.cs
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
[CreateAssetMenu(fileName = "Harvest", menuName = "Harvestdale/Items/Harvest", order = 0)]
|
||||||
|
public class Harvest : Item
|
||||||
|
{
|
||||||
|
}
|
||||||
11
Assets/Scripts/Items/Harvest.cs.meta
Normal file
11
Assets/Scripts/Items/Harvest.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 01eac50f7d5dd124e94a48f3e4428435
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -1,7 +1,5 @@
|
|||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using System;
|
|
||||||
using System.Collections;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
[CreateAssetMenu(fileName = "Item", menuName = "Harvestdale/Items/Item", order = 0)]
|
[CreateAssetMenu(fileName = "Item", menuName = "Harvestdale/Items/Item", order = 0)]
|
||||||
public class Item : ScriptableObject
|
public class Item : ScriptableObject
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user