mirror of
https://github.com/DerTyp7/harvestdale-unity.git
synced 2025-10-28 20:32:10 +01:00
a
This commit is contained in:
27
Assets/Items/Crops/Apple.asset
Normal file
27
Assets/Items/Crops/Apple.asset
Normal 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}
|
||||
8
Assets/Items/Crops/Apple.asset.meta
Normal file
8
Assets/Items/Crops/Apple.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4ce577b0996dc314ab1b42f42614e3a2
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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
|
||||
|
||||
@@ -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}");
|
||||
}
|
||||
}
|
||||
10
Assets/Scripts/FarmManager.cs
Normal file
10
Assets/Scripts/FarmManager.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
using UnityEngine;
|
||||
|
||||
public class FarmManager : MonoBehaviour
|
||||
{
|
||||
public Inventory<Crop> cropInventory;
|
||||
private void Start()
|
||||
{
|
||||
cropInventory = new Inventory<Crop>(2, 200);
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ab99e668aa1ba5a469eef680f3bb4b45
|
||||
guid: 7465a8b99db65d04a862b423ae2ccdf3
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 943c595a7de78d44eae1ff08651910a2
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -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.");
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
|
||||
@@ -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();
|
||||
// }
|
||||
// }
|
||||
@@ -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;
|
||||
// }
|
||||
// }
|
||||
// }
|
||||
|
||||
@@ -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);
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
@@ -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++;
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
@@ -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);
|
||||
// }
|
||||
|
||||
}
|
||||
// }
|
||||
|
||||
Reference in New Issue
Block a user