This commit is contained in:
Janis
2023-03-01 22:28:06 +01:00
parent 36337c8a72
commit ae0b21f9e9
19 changed files with 600 additions and 455 deletions

View File

@@ -0,0 +1,27 @@
%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: f00df81b4ec12f844a6f928d013437b2, type: 3}
m_Name: Apple
m_EditorClassIdentifier:
uuid: apple
itemName: Apple Crop
sprite: {fileID: -992969038, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
stackable: 0
maxStackSize: 1
daysToGrow: 6
sprites:
- {fileID: -1568493089, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
- {fileID: 1918686608, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
- {fileID: -400346732, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
- {fileID: -1058307475, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
- {fileID: -1664452952, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
- {fileID: 1402415594, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 4ce577b0996dc314ab1b42f42614e3a2
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -142,7 +142,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &153338328
RectTransform:
m_ObjectHideFlags: 0
@@ -215,6 +215,9 @@ MonoBehaviour:
m_EditorClassIdentifier:
panelName: Hotbar
hotbarSlotPrefab: {fileID: 1989902681405785901, guid: 9bed75a8e605a864fb4b41f3e0ae9517, type: 3}
slots: []
playerController: {fileID: 0}
hotbarSlotCount: 9
--- !u!114 &153338332
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -318,7 +321,6 @@ GameObject:
- component: {fileID: 224768190}
- component: {fileID: 224768189}
- component: {fileID: 224768188}
- component: {fileID: 224768193}
- component: {fileID: 224768187}
- component: {fileID: 224768191}
- component: {fileID: 224768192}
@@ -468,21 +470,6 @@ CapsuleCollider2D:
m_Offset: {x: 0.005384445, y: -0.8123081}
m_Size: {x: 0.3146143, y: 0.3146143}
m_Direction: 0
--- !u!114 &224768193
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 224768186}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d50a6d9f6c7ba0e49a308d097eb64fb7, type: 3}
m_Name:
m_EditorClassIdentifier:
isPlayerInventory: 1
maxSlots: 36
items: []
--- !u!114 &224768194
MonoBehaviour:
m_ObjectHideFlags: 0
@@ -495,12 +482,90 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: fd29210254821be4dab438ab0312df18, type: 3}
m_Name:
m_EditorClassIdentifier:
testItem1: {fileID: 11400000, guid: 601d7a33a6c338d49a35134d5c772940, type: 2}
testItem2: {fileID: 11400000, guid: cbbbe8384f7ec2845b4145744d51ecf8, type: 2}
interactionDistance: 2
hotbarSlotCount: 9
activeHotbarSlot: 0
playerInventory: {fileID: 0}
--- !u!1 &518922041
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 518922043}
- component: {fileID: 518922042}
m_Layer: 0
m_Name: Crops
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!212 &518922042
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 518922041}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 949894591
m_SortingLayer: -1
m_SortingOrder: 1
m_Sprite: {fileID: 109301499, guid: 81f3e7dd6e7b15747a4a5c1923fb8521, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 2
m_Size: {x: 10, y: 10}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &518922043
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 518922041}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0.1, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1047402456}
m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &519420028
GameObject:
m_ObjectHideFlags: 0
@@ -817,6 +882,90 @@ Tilemap:
e31: 0
e32: 0
e33: 1
--- !u!1 &531540402
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 531540404}
- component: {fileID: 531540403}
m_Layer: 0
m_Name: Background
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!212 &531540403
SpriteRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 531540402}
m_Enabled: 1
m_CastShadows: 0
m_ReceiveShadows: 0
m_DynamicOccludee: 1
m_StaticShadowCaster: 0
m_MotionVectors: 1
m_LightProbeUsage: 1
m_ReflectionProbeUsage: 1
m_RayTracingMode: 0
m_RayTraceProcedural: 0
m_RenderingLayerMask: 1
m_RendererPriority: 0
m_Materials:
- {fileID: 2100000, guid: a97c105638bdf8b4a8650670310a4cd3, type: 2}
m_StaticBatchInfo:
firstSubMesh: 0
subMeshCount: 0
m_StaticBatchRoot: {fileID: 0}
m_ProbeAnchor: {fileID: 0}
m_LightProbeVolumeOverride: {fileID: 0}
m_ScaleInLightmap: 1
m_ReceiveGI: 1
m_PreserveUVs: 0
m_IgnoreNormalsForChartDetection: 0
m_ImportantGI: 0
m_StitchLightmapSeams: 1
m_SelectedEditorRenderState: 0
m_MinimumChartSize: 4
m_AutoUVMaxDistance: 0.5
m_AutoUVMaxAngle: 89
m_LightmapParameters: {fileID: 0}
m_SortingLayerID: 949894591
m_SortingLayer: -1
m_SortingOrder: 0
m_Sprite: {fileID: 2046970518, guid: 705252b03b9874148b86d73e7eb692ac, type: 3}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_FlipX: 0
m_FlipY: 0
m_DrawMode: 2
m_Size: {x: 10, y: 10}
m_AdaptiveModeThreshold: 0.5
m_SpriteTileMode: 0
m_WasSpriteAssigned: 1
m_MaskInteraction: 0
m_SpriteSortPoint: 0
--- !u!4 &531540404
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 531540402}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 1047402456}
m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &550426624
GameObject:
m_ObjectHideFlags: 0
@@ -1087,6 +1236,7 @@ GameObject:
- component: {fileID: 727688472}
- component: {fileID: 727688471}
- component: {fileID: 727688473}
- component: {fileID: 727688474}
m_Layer: 0
m_Name: ---GameManager---
m_TagString: GameController
@@ -1106,7 +1256,7 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: efc6be5d380533e4bb0a0179bec47c77, type: 3}
m_Name:
m_EditorClassIdentifier:
minuteToRealTime: 0.5
minuteToRealTime: 0.05
--- !u!4 &727688472
Transform:
m_ObjectHideFlags: 0
@@ -1134,6 +1284,22 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 7f6b0f7d7d44d8a4c9fa79d01ee4ec53, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &727688474
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 727688470}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 7465a8b99db65d04a862b423ae2ccdf3, type: 3}
m_Name:
m_EditorClassIdentifier:
cropInventory:
maxSlots: 0
maxStackSize: 0
items: []
--- !u!1 &789509403
GameObject:
m_ObjectHideFlags: 0
@@ -56771,7 +56937,7 @@ GameObject:
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
m_IsActive: 0
--- !u!224 &1027537965
RectTransform:
m_ObjectHideFlags: 0
@@ -56847,6 +57013,60 @@ MonoBehaviour:
slotPrefab: {fileID: 9079120991637034566, guid: 9fb7f575f90d73343b4841c421d17567, type: 3}
slotListObj: {fileID: 1707136373}
slotUIList: []
--- !u!1 &1047402454
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1047402456}
- component: {fileID: 1047402455}
m_Layer: 0
m_Name: Field
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1047402455
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1047402454}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: d700e4905ee3fd2408f52a4e3ecb48e8, type: 3}
m_Name:
m_EditorClassIdentifier:
isPlaced: 1
placeableObject: {fileID: 0}
TESTCROP: {fileID: 11400000, guid: 4ce577b0996dc314ab1b42f42614e3a2, type: 2}
crop: {fileID: 0}
currentCropSprite: {fileID: 518922042}
daysSincePlanted: 0
isWatered: 1
state: 0
--- !u!4 &1047402456
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1047402454}
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: -25, y: -5, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 518922043}
- {fileID: 531540404}
m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1507699183
GameObject:
m_ObjectHideFlags: 0

View File

@@ -12,6 +12,6 @@ public class Clock : MonoBehaviour
}
private void GetTime()
{
text.SetText($"{TimeManager.Day:00}D | {TimeManager.Hour:00}:{TimeManager.Minute:00}");
text.SetText($"{TimeManager.Hour:00}:{TimeManager.Minute:00}<br>{TimeManager.Day:00}.{TimeManager.Month:00}.{TimeManager.Year:00}");
}
}

View File

@@ -0,0 +1,10 @@
using UnityEngine;
public class FarmManager : MonoBehaviour
{
public Inventory<Crop> cropInventory;
private void Start()
{
cropInventory = new Inventory<Crop>(2, 200);
}
}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: ab99e668aa1ba5a469eef680f3bb4b45
guid: 7465a8b99db65d04a862b423ae2ccdf3
MonoImporter:
externalObjects: {}
serializedVersion: 2

View File

@@ -1,5 +1,12 @@
using UnityEngine;
using UnityEngine.Tilemaps;
public enum FieldState
{
EMPTY,
DEAD,
GROWING,
HARVESTABLE,
}
public class Field : Building
{
@@ -8,18 +15,22 @@ public class Field : Building
public SpriteRenderer currentCropSprite;
public int daysSincePlanted;
public bool isWatered;
public bool isDead = false;
public bool isWatered = false;
public FieldState state = FieldState.EMPTY;
private void Start()
{
TimeManager.OnDayChanged += AddDay;
//! DEBUG
OnPlace();
}
private void AddDay()
{
if (crop && isPlaced && !isDead)
if (crop && isPlaced && state != FieldState.DEAD)
{
if (!isWatered)
isDead = true;
state = FieldState.DEAD;
else
{
daysSincePlanted++;
@@ -32,14 +43,14 @@ public class Field : Building
public void Plant(Crop newCrop)
{
daysSincePlanted = 0;
isDead = false;
state = FieldState.GROWING;
crop = newCrop;
}
public override void OnPlace()
{
daysSincePlanted = 0;
isDead = false;
state = FieldState.GROWING;
Plant(TESTCROP);
}
}

View File

@@ -1,26 +1,39 @@
using System.Collections.Generic;
using UnityEngine;
using System;
public class Inventory : MonoBehaviour
[System.Serializable]
public class Inventory<TItem> where TItem : Item
{
public static Action OnPlayerInventoryChanged;
[SerializeField]
private int maxSlots;
public int maxStackSize;
public bool isPlayerInventory = false;
public int maxSlots = 20; // maximum number of slots in the inventory
public InventoryItem[] items; // list of items in the inventory
[SerializeField]
private InventoryItem<TItem>[] items;
private void Awake()
public Inventory(int maxSlots = 1, int maxStackSize = 100)
{
items = new InventoryItem[maxSlots];
for (int i = 0; i < maxSlots; i++)
this.maxSlots = maxSlots;
this.maxStackSize = maxStackSize;
items = new InventoryItem<TItem>[maxSlots];
generateEmtpySlots();
}
public void setMaxSlots(int newMaxSlots)
{
maxSlots = newMaxSlots;
generateEmtpySlots();
}
private void generateEmtpySlots()
{
for (int i = items.Length > 0 ? items.Length - 1 : 0; i < maxSlots; i++)
{
items[i] = null;
}
}
// adds an item to the inventory, returns the quantity of items which could not be added
public int Add(Item item, int count)
public int Add(TItem item, int count)
{
int remainingCount = count;
@@ -31,11 +44,11 @@ public class Inventory : MonoBehaviour
// look for an existing stack of the same item in the inventory
for (int i = 0; i < items.Length; i++)
{
InventoryItem invItem = items[i];
if (invItem != null && invItem.item == item && invItem.count < item.maxStackSize)
InventoryItem<TItem> invItem = items[i];
if (invItem != null && invItem.item == item && invItem.count < maxStackSize)
{
// add as many items as possible to the stack
int space = item.maxStackSize - invItem.count;
int space = maxStackSize - invItem.count;
int toAdd = Mathf.Min(space, remainingCount);
invItem.count += toAdd;
remainingCount -= toAdd;
@@ -43,10 +56,6 @@ public class Inventory : MonoBehaviour
// exit the loop if all items have been added
if (remainingCount == 0)
{
if (isPlayerInventory)
{
OnPlayerInventoryChanged?.Invoke();
}
return 0;
}
@@ -58,35 +67,23 @@ public class Inventory : MonoBehaviour
for (int i = 0; i < items.Length; i++)
{
InventoryItem invItem = items[i];
InventoryItem<TItem> invItem = items[i];
Debug.Log(invItem);
if (invItem?.item == null)
{
int toAdd = Mathf.Min(item.maxStackSize, remainingCount);
items[i] = new InventoryItem(item, toAdd);
int toAdd = Mathf.Min(maxStackSize, remainingCount);
items[i] = new InventoryItem<TItem>(item, toAdd);
remainingCount -= toAdd;
// exit the loop if all items have been added
if (remainingCount == 0)
{
if (isPlayerInventory)
{
OnPlayerInventoryChanged?.Invoke();
}
return 0;
}
}
}
// return the quantity of items which could not be added
if (isPlayerInventory)
{
OnPlayerInventoryChanged?.Invoke();
}
return remainingCount;
}
@@ -99,7 +96,7 @@ public class Inventory : MonoBehaviour
// look for an existing stack of the item in the inventory
for (int i = 0; i < items.Length; i++)
{
InventoryItem invItem = items[i];
InventoryItem<TItem> invItem = items[i];
if (invItem != null && invItem.item == item)
{
// remove as many items as possible from the stack
@@ -116,32 +113,22 @@ public class Inventory : MonoBehaviour
// exit the loop if all items have been removed
if (remainingCount == 0)
{
if (isPlayerInventory)
{
OnPlayerInventoryChanged?.Invoke();
}
return 0;
}
}
}
// return the quantity of items which could not be removed
if (isPlayerInventory)
{
OnPlayerInventoryChanged?.Invoke();
}
return remainingCount;
}
public void SwapItems(int index1, int index2)
{
InventoryItem temp = items[index1];
InventoryItem<TItem> temp = items[index1];
items[index1] = items[index2];
items[index2] = temp;
if (isPlayerInventory)
{
OnPlayerInventoryChanged?.Invoke();
}
}
}

View File

@@ -5,12 +5,12 @@ using System.Collections.Generic;
// represents an item in the inventory and its count
[System.Serializable]
public class InventoryItem
public class InventoryItem<TItem> where TItem : Item
{
public Item item;
public TItem item;
public int count;
public InventoryItem(Item item, int count)
public InventoryItem(TItem item, int count)
{
this.item = item;
this.count = count;

View File

@@ -1,32 +0,0 @@
using UnityEngine;
[CreateAssetMenu(fileName = "Hoe", menuName = "Harvestdale/Tools/Hoe", order = 0)]
public class Hoe : Tool
{
GameObject player;
private void Start()
{
player = GameObject.FindGameObjectWithTag("Player");
}
private Vector3 GetVector3IntInMouseDirection()
{
Vector3 direction = (player.transform.position - GridBuildingSystem.Instance.GetSnappedMousePosition()).normalized;
Debug.Log(direction);
return direction;
}
public override void OnUse()
{
Debug.Log("Hoe on use");
GetVector3IntInMouseDirection();
}
public override void Use()
{
Debug.Log("Hoe use");
OnUse();
}
}

View File

@@ -1,14 +0,0 @@
using UnityEngine;
public abstract class Tool : Item
{
public abstract void Use();
public abstract void OnUse();
private void Awake()
{
stackable = false;
maxStackSize = 1;
}
}

View File

@@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 943c595a7de78d44eae1ff08651910a2
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -6,100 +6,14 @@ using System;
public class PlayerController : MonoBehaviour
{
public static Action OnActiveSlotChanged;
public Item testItem1;
public Item testItem2;
public float interactionDistance = 2.5f;
public int hotbarSlotCount = 9;
public int activeHotbarSlot = 0;
[SerializeField] private Inventory playerInventory;
// Start is called before the first frame update
void Start()
{
playerInventory = GetComponent<Inventory>();
GuiManager.Instance.OpenPanel("Hotbar");
}
// Update is called once per frame
void Update()
{
float scroll = Input.GetAxis("Mouse ScrollWheel");
if (scroll != 0)
{
activeHotbarSlot += (int)Mathf.Sign(scroll);
if (activeHotbarSlot < 0)
{
activeHotbarSlot = hotbarSlotCount - 1;
}
else if (activeHotbarSlot >= hotbarSlotCount)
{
activeHotbarSlot = 0;
}
OnActiveSlotChanged?.Invoke();
}
if (Input.GetKeyDown(KeyCode.Tab))
{
GuiManager.Instance.TogglePanel("Inventory");
}
if (Input.GetMouseButtonDown(0))
{
Vector3Int snappedMousePosition = GridBuildingSystem.Instance.GetSnappedMousePosition();
Vector3Int snappedPlayerPosition = GridBuildingSystem.Instance.GetSnappedPosition(gameObject.transform.position);
if (Vector3Int.Distance(snappedMousePosition, snappedPlayerPosition) <= interactionDistance)
{
if (playerInventory.items[activeHotbarSlot]?.item is Tool)
{
Tool tool = playerInventory.items[activeHotbarSlot].item as Tool;
tool.Use();
}
}
else
{
Debug.Log("Not in range");
}
}
//! DEBUG
if (Input.GetKeyDown(KeyCode.U))
{
// add 5 apples
int remainingCount = playerInventory.Add(testItem1, 5);
Debug.Log("Added " + (5 - remainingCount) + " apples to playerInventory.");
}
if (Input.GetKeyDown(KeyCode.I))
{ // add 15 more apples
int remainingCount = playerInventory.Add(testItem1, 15);
Debug.Log("Added " + (15 - remainingCount) + " apples to playerInventory.");
}
if (Input.GetKeyDown(KeyCode.O))
{
// add 10 bananas
int remainingCount = playerInventory.Add(testItem2, 10);
Debug.Log("Added " + (10 - remainingCount) + " bananas to playerInventory.");
}
if (Input.GetKeyDown(KeyCode.J))
{
int count = 3;
int applesRemaining = playerInventory.Remove(testItem1, count);
Debug.Log("Removed " + (count - applesRemaining) + " apples.");
}
if (Input.GetKeyDown(KeyCode.K))
{
int count = 5;
int bananasRemaining = playerInventory.Remove(testItem2, count);
Debug.Log("Removed " + (count - bananasRemaining) + " bananas.");
}
}

View File

@@ -1,25 +1,33 @@
using UnityEngine;
using System;
using System.Collections;
using System.Collections.Generic;
public class TimeManager : MonoBehaviour
{
public static Action OnMinuteChanged;
public static Action OnHourChanged;
public static Action OnDayChanged;
public static Action OnMonthChanged;
public static Action OnYearChanged;
public static int Minute { get; private set; }
public static int Hour { get; private set; }
public static int Day { get; private set; }
public static int Month { get; private set; }
public static int Year { get; private set; }
public float minuteToRealTime = .2f;
[SerializeField]
[Range(.05f, 10f)]
private float minuteToRealTime = .05f;
private float timer;
private void Start()
{
Minute = 0;
Hour = 10;
Day = 1;
Day = 25;
Month = 4;
Year = 1;
timer = minuteToRealTime;
}
@@ -29,17 +37,34 @@ public class TimeManager : MonoBehaviour
if (timer <= 0)
{
// Increase minute
Minute++;
OnMinuteChanged?.Invoke();
if (Minute >= 60)
{
// Increase hour
Hour++;
Minute = 0;
if (Hour >= 24)
{
// Increase day
Day++;
Hour = 0;
OnDayChanged?.Invoke();
if (Day > 28)
{
// Increase month
Month++;
Day = 1;
OnMonthChanged?.Invoke();
if (Month > 4)
{
// Increase year
Year++;
Month = 1;
OnYearChanged?.Invoke();
}
}
}
OnHourChanged?.Invoke();

View File

@@ -1,33 +1,33 @@
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;
// using UnityEngine;
// using UnityEngine.EventSystems;
// using UnityEngine.UI;
public class DraggableSlotContentUI : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
{
public int slotIndex; // slotIndex is set by SlotUI
[HideInInspector] public Transform parentAfterDrag;
public Image image;
public void OnBeginDrag(PointerEventData eventData)
{
parentAfterDrag = transform.parent;
slotIndex = parentAfterDrag.GetComponent<SlotUI>().slotIndex; // Set slotIndex again to be safe, but should be already set
transform.SetParent(transform.root);
transform.SetAsLastSibling();
image.raycastTarget = false;
}
// public class DraggableSlotContentUI : MonoBehaviour, IBeginDragHandler, IDragHandler, IEndDragHandler
// {
// public int slotIndex; // slotIndex is set by SlotUI
// [HideInInspector] public Transform parentAfterDrag;
// public Image image;
// public void OnBeginDrag(PointerEventData eventData)
// {
// parentAfterDrag = transform.parent;
// slotIndex = parentAfterDrag.GetComponent<SlotUI>().slotIndex; // Set slotIndex again to be safe, but should be already set
// transform.SetParent(transform.root);
// transform.SetAsLastSibling();
// image.raycastTarget = false;
// }
public void OnDrag(PointerEventData eventData)
{
Debug.Log("Dragging");
transform.position = Input.mousePosition;
// public void OnDrag(PointerEventData eventData)
// {
// Debug.Log("Dragging");
// transform.position = Input.mousePosition;
}
// }
public void OnEndDrag(PointerEventData eventData)
{
transform.SetParent(parentAfterDrag);
image.raycastTarget = true;
// invoke
Inventory.OnPlayerInventoryChanged?.Invoke();
}
}
// public void OnEndDrag(PointerEventData eventData)
// {
// transform.SetParent(parentAfterDrag);
// image.raycastTarget = true;
// // invoke
// Inventory.OnPlayerInventoryChanged?.Invoke();
// }
// }

View File

@@ -1,56 +1,56 @@
using System.Collections;
using UnityEngine.UI;
using System.Collections.Generic;
using UnityEngine;
using TMPro;
public class HotbarSlotUI : MonoBehaviour
{
public int slotIndex;
// using System.Collections;
// using UnityEngine.UI;
// using System.Collections.Generic;
// using UnityEngine;
// using TMPro;
// public class HotbarSlotUI : MonoBehaviour
// {
// public int slotIndex;
private PlayerController playerController;
// private PlayerController playerController;
private InventoryItem invItem;
// private InventoryItem invItem;
[SerializeField] private Image border;
[SerializeField] private Image image;
[SerializeField] private TextMeshProUGUI quantityText;
// [SerializeField] private Image border;
// [SerializeField] private Image image;
// [SerializeField] private TextMeshProUGUI quantityText;
private void Start()
{
playerController = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
PlayerController.OnActiveSlotChanged += CheckSelectedSlot;
CheckSelectedSlot();
}
// private void Start()
// {
// playerController = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
// PlayerController.OnActiveSlotChanged += CheckSelectedSlot;
// CheckSelectedSlot();
// }
private void CheckSelectedSlot()
{
if (playerController.activeHotbarSlot == slotIndex)
{
border.gameObject.SetActive(true);
}
else
{
border.gameObject.SetActive(false);
}
}
// private void CheckSelectedSlot()
// {
// if (playerController.activeHotbarSlot == slotIndex)
// {
// border.gameObject.SetActive(true);
// }
// else
// {
// border.gameObject.SetActive(false);
// }
// }
public void SetInventoryItem(InventoryItem newInvItem)
{
invItem = newInvItem;
UpdateSlot();
}
// public void SetInventoryItem(InventoryItem newInvItem)
// {
// invItem = newInvItem;
// UpdateSlot();
// }
private void UpdateSlot()
{
image.sprite = invItem?.item?.sprite ?? null;
quantityText.SetText(invItem?.count.ToString() ?? "");
if (image.sprite == null)
{
image.color = new Color(0, 0, 0, 0);
}
else
{
image.color = Color.white;
}
}
}
// private void UpdateSlot()
// {
// image.sprite = invItem?.item?.sprite ?? null;
// quantityText.SetText(invItem?.count.ToString() ?? "");
// if (image.sprite == null)
// {
// image.color = new Color(0, 0, 0, 0);
// }
// else
// {
// image.color = Color.white;
// }
// }
// }

View File

@@ -1,52 +1,52 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
// using System.Collections;
// using System.Collections.Generic;
// using UnityEngine;
// using UnityEngine.UI;
public class HotbarUI : GuiPanel
{
[SerializeField] private GameObject hotbarSlotPrefab;
private List<HotbarSlotUI> slots = new List<HotbarSlotUI>();
private Inventory playerInventory;
private PlayerController playerController;
private int hotbarSlotCount = 9;
// public class HotbarUI : GuiPanel
// {
// [SerializeField] private GameObject hotbarSlotPrefab;
// private List<HotbarSlotUI> slots = new List<HotbarSlotUI>();
// private Inventory playerInventory;
// private PlayerController playerController;
// private int hotbarSlotCount = 9;
private void Start()
{
Inventory.OnPlayerInventoryChanged += UpdateSlots;
}
public override void OnOpen()
{
if (slots.Count == 0)
{
playerInventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
playerController = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
hotbarSlotCount = playerController.hotbarSlotCount;
CreateSlots();
}
UpdateSlots();
}
// private void Start()
// {
// Inventory.OnPlayerInventoryChanged += UpdateSlots;
// }
// public override void OnOpen()
// {
// if (slots.Count == 0)
// {
// playerInventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
// playerController = GameObject.FindGameObjectWithTag("Player").GetComponent<PlayerController>();
// hotbarSlotCount = playerController.hotbarSlotCount;
// CreateSlots();
// }
// UpdateSlots();
// }
public override void OnClose()
{
}
// public override void OnClose()
// {
// }
private void CreateSlots()
{
for (int i = 0; i < hotbarSlotCount; i++)
{
HotbarSlotUI newSlot = Instantiate(hotbarSlotPrefab, Vector3.zero, Quaternion.identity, transform).GetComponent<HotbarSlotUI>();
newSlot.slotIndex = i;
slots.Add(newSlot);
}
}
// private void CreateSlots()
// {
// for (int i = 0; i < hotbarSlotCount; i++)
// {
// HotbarSlotUI newSlot = Instantiate(hotbarSlotPrefab, Vector3.zero, Quaternion.identity, transform).GetComponent<HotbarSlotUI>();
// newSlot.slotIndex = i;
// slots.Add(newSlot);
// }
// }
private void UpdateSlots()
{
for (int i = 0; i < slots.Count; i++)
{
slots[i].SetInventoryItem(playerInventory.items[i] ?? null);
}
}
// private void UpdateSlots()
// {
// for (int i = 0; i < slots.Count; i++)
// {
// slots[i].SetInventoryItem(playerInventory.items[i] ?? null);
// }
// }
}
// }

View File

@@ -1,53 +1,53 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
// using System.Collections;
// using System.Collections.Generic;
// using UnityEngine;
public class InventoryUI : GuiPanel
{
[SerializeField] private GameObject slotPrefab;
[SerializeField] private GameObject slotListObj;
[SerializeField] private List<SlotUI> slotUIList;
// public class InventoryUI : GuiPanel
// {
// [SerializeField] private GameObject slotPrefab;
// [SerializeField] private GameObject slotListObj;
// [SerializeField] private List<SlotUI> slotUIList;
private Inventory playerInventory;
// private Inventory playerInventory;
private void Start()
{
Inventory.OnPlayerInventoryChanged += UpdateSlots;
}
public override void OnOpen()
{
if (slotUIList.Count == 0)
{
playerInventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
CreateSlots();
}
UpdateSlots();
GuiManager.Instance.ClosePanel("Hotbar");
}
// private void Start()
// {
// Inventory.OnPlayerInventoryChanged += UpdateSlots;
// }
// public override void OnOpen()
// {
// if (slotUIList.Count == 0)
// {
// playerInventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
// CreateSlots();
// }
// UpdateSlots();
// GuiManager.Instance.ClosePanel("Hotbar");
// }
public override void OnClose()
{
GuiManager.Instance.OpenPanel("Hotbar");
}
private void CreateSlots()
{
playerInventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
// public override void OnClose()
// {
// GuiManager.Instance.OpenPanel("Hotbar");
// }
// private void CreateSlots()
// {
// playerInventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
for (int i = 0; i < playerInventory.maxSlots; i++)
{
SlotUI newSlot = Instantiate(slotPrefab, Vector3.zero, Quaternion.identity, slotListObj.transform).GetComponent<SlotUI>();
newSlot.slotIndex = i;
slotUIList.Add(newSlot);
}
}
private void UpdateSlots()
{
int i = 0;
foreach (SlotUI slotUi in slotUIList)
{
slotUi.SetInventoryItem(playerInventory.items[i]);
i++;
}
}
// for (int i = 0; i < playerInventory.maxSlots; i++)
// {
// SlotUI newSlot = Instantiate(slotPrefab, Vector3.zero, Quaternion.identity, slotListObj.transform).GetComponent<SlotUI>();
// newSlot.slotIndex = i;
// slotUIList.Add(newSlot);
// }
// }
// private void UpdateSlots()
// {
// int i = 0;
// foreach (SlotUI slotUi in slotUIList)
// {
// slotUi.SetInventoryItem(playerInventory.items[i]);
// i++;
// }
// }
}
// }

View File

@@ -1,60 +1,60 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
public class SlotUI : MonoBehaviour, IDropHandler
{
public int slotIndex;
[SerializeField] private GameObject contentObject;
[SerializeField] private InventoryItem inventoryItem;
[SerializeField] private Image itemSpriteImage;
[SerializeField] private TMPro.TextMeshProUGUI quantityText;
// using System.Collections;
// using System.Collections.Generic;
// using UnityEngine;
// using UnityEngine.UI;
// using UnityEngine.EventSystems;
// public class SlotUI : MonoBehaviour, IDropHandler
// {
// public int slotIndex;
// [SerializeField] private GameObject contentObject;
// [SerializeField] private InventoryItem inventoryItem;
// [SerializeField] private Image itemSpriteImage;
// [SerializeField] private TMPro.TextMeshProUGUI quantityText;
private Inventory playerInventory;
private void Start()
{
UpdateSlot();
playerInventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
}
public void SetInventoryItem(InventoryItem newInventoryItem)
{
inventoryItem = newInventoryItem;
UpdateSlot();
}
// private Inventory playerInventory;
// private void Start()
// {
// UpdateSlot();
// playerInventory = GameObject.FindGameObjectWithTag("Player").GetComponent<Inventory>();
// }
// public void SetInventoryItem(InventoryItem newInventoryItem)
// {
// inventoryItem = newInventoryItem;
// UpdateSlot();
// }
private void UpdateSlot()
{
if (inventoryItem != null)
{
itemSpriteImage.sprite = inventoryItem?.item?.sprite ?? null;
if (itemSpriteImage.sprite == null)
{
itemSpriteImage.color = new Color(0, 0, 0, 0);
}
else
{
itemSpriteImage.color = new Color(255, 255, 255, 1);
}
// private void UpdateSlot()
// {
// if (inventoryItem != null)
// {
// itemSpriteImage.sprite = inventoryItem?.item?.sprite ?? null;
// if (itemSpriteImage.sprite == null)
// {
// itemSpriteImage.color = new Color(0, 0, 0, 0);
// }
// else
// {
// itemSpriteImage.color = new Color(255, 255, 255, 1);
// }
quantityText.SetText(inventoryItem.count != 0 ? inventoryItem.count.ToString() : "");
}
else
{
itemSpriteImage.sprite = null;
quantityText.SetText("");
itemSpriteImage.color = new Color(0, 0, 0, 0);
}
// quantityText.SetText(inventoryItem.count != 0 ? inventoryItem.count.ToString() : "");
// }
// else
// {
// itemSpriteImage.sprite = null;
// quantityText.SetText("");
// itemSpriteImage.color = new Color(0, 0, 0, 0);
// }
}
// }
public void OnDrop(PointerEventData eventData)
{
Debug.Log("DROP");
DraggableSlotContentUI dropped = eventData.pointerDrag.GetComponent<DraggableSlotContentUI>();
playerInventory.SwapItems(dropped.slotIndex, slotIndex);
}
// public void OnDrop(PointerEventData eventData)
// {
// Debug.Log("DROP");
// DraggableSlotContentUI dropped = eventData.pointerDrag.GetComponent<DraggableSlotContentUI>();
// playerInventory.SwapItems(dropped.slotIndex, slotIndex);
// }
}
// }