Added item registry
This commit is contained in:
@@ -50,11 +50,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
||||||
RectTransform: {fileID: 1401800242719993207}
|
OverridenItemType: 2
|
||||||
Body2D: {fileID: 8517387188847136902}
|
|
||||||
AttachedCanvas: {fileID: 0}
|
|
||||||
Spawner: {fileID: 0}
|
|
||||||
EnteredCanvas: 0
|
|
||||||
--- !u!50 &8517387188847136902
|
--- !u!50 &8517387188847136902
|
||||||
Rigidbody2D:
|
Rigidbody2D:
|
||||||
serializedVersion: 5
|
serializedVersion: 5
|
||||||
@@ -50,11 +50,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
||||||
RectTransform: {fileID: 1401800242719993207}
|
OverridenItemType: 7
|
||||||
Body2D: {fileID: 8517387188847136902}
|
|
||||||
AttachedCanvas: {fileID: 0}
|
|
||||||
Spawner: {fileID: 0}
|
|
||||||
EnteredCanvas: 0
|
|
||||||
--- !u!50 &8517387188847136902
|
--- !u!50 &8517387188847136902
|
||||||
Rigidbody2D:
|
Rigidbody2D:
|
||||||
serializedVersion: 5
|
serializedVersion: 5
|
||||||
@@ -50,11 +50,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
||||||
RectTransform: {fileID: 1401800242719993207}
|
OverridenItemType: 6
|
||||||
Body2D: {fileID: 8517387188847136902}
|
|
||||||
AttachedCanvas: {fileID: 0}
|
|
||||||
Spawner: {fileID: 0}
|
|
||||||
EnteredCanvas: 0
|
|
||||||
--- !u!50 &8517387188847136902
|
--- !u!50 &8517387188847136902
|
||||||
Rigidbody2D:
|
Rigidbody2D:
|
||||||
serializedVersion: 5
|
serializedVersion: 5
|
||||||
@@ -162,11 +162,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
||||||
RectTransform: {fileID: 632342871567537671}
|
OverridenItemType: 1
|
||||||
Body2D: {fileID: -7341975215906076796}
|
|
||||||
AttachedCanvas: {fileID: 0}
|
|
||||||
Spawner: {fileID: 0}
|
|
||||||
EnteredCanvas: 0
|
|
||||||
--- !u!50 &-7341975215906076796
|
--- !u!50 &-7341975215906076796
|
||||||
Rigidbody2D:
|
Rigidbody2D:
|
||||||
serializedVersion: 5
|
serializedVersion: 5
|
||||||
15
Assets/Prefabs/Items/Items.asset
Normal file
15
Assets/Prefabs/Items/Items.asset
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
%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: 92f10d0327354ede9d9b3cf77e1c2d30, type: 3}
|
||||||
|
m_Name: Items
|
||||||
|
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.Items.SerializedItemInfoRegistry
|
||||||
|
Registry: []
|
||||||
8
Assets/Prefabs/Items/Items.asset.meta
Normal file
8
Assets/Prefabs/Items/Items.asset.meta
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b518751a8b5ee0942af68ec87eeba0c5
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 11400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
||||||
@@ -50,11 +50,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
||||||
RectTransform: {fileID: 1401800242719993207}
|
OverridenItemType: 3
|
||||||
Body2D: {fileID: 8517387188847136902}
|
|
||||||
AttachedCanvas: {fileID: 0}
|
|
||||||
Spawner: {fileID: 0}
|
|
||||||
EnteredCanvas: 0
|
|
||||||
--- !u!50 &8517387188847136902
|
--- !u!50 &8517387188847136902
|
||||||
Rigidbody2D:
|
Rigidbody2D:
|
||||||
serializedVersion: 5
|
serializedVersion: 5
|
||||||
@@ -50,11 +50,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
||||||
RectTransform: {fileID: 1401800242719993207}
|
OverridenItemType: 4
|
||||||
Body2D: {fileID: 8517387188847136902}
|
|
||||||
AttachedCanvas: {fileID: 0}
|
|
||||||
Spawner: {fileID: 0}
|
|
||||||
EnteredCanvas: 0
|
|
||||||
--- !u!50 &8517387188847136902
|
--- !u!50 &8517387188847136902
|
||||||
Rigidbody2D:
|
Rigidbody2D:
|
||||||
serializedVersion: 5
|
serializedVersion: 5
|
||||||
@@ -50,11 +50,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
m_Script: {fileID: 11500000, guid: ed414fdac7005b54db4dc1ec26e16bd6, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.FruitBehaviour
|
||||||
RectTransform: {fileID: 1401800242719993207}
|
OverridenItemType: 5
|
||||||
Body2D: {fileID: 8517387188847136902}
|
|
||||||
AttachedCanvas: {fileID: 0}
|
|
||||||
Spawner: {fileID: 0}
|
|
||||||
EnteredCanvas: 0
|
|
||||||
--- !u!50 &8517387188847136902
|
--- !u!50 &8517387188847136902
|
||||||
Rigidbody2D:
|
Rigidbody2D:
|
||||||
serializedVersion: 5
|
serializedVersion: 5
|
||||||
@@ -2148,6 +2148,51 @@ CanvasRenderer:
|
|||||||
m_PrefabAsset: {fileID: 0}
|
m_PrefabAsset: {fileID: 0}
|
||||||
m_GameObject: {fileID: 1511006084}
|
m_GameObject: {fileID: 1511006084}
|
||||||
m_CullTransparentMesh: 1
|
m_CullTransparentMesh: 1
|
||||||
|
--- !u!1 &1618062727
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1618062728}
|
||||||
|
- component: {fileID: 1618062729}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: ItemRegistry
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1618062728
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1618062727}
|
||||||
|
serializedVersion: 2
|
||||||
|
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: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &1618062729
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 1618062727}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: dcb8b502e5b94a72b37a6e77e4770d05, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier: Fruitomation::Fruitomation.Game.Items.ItemInfoRegistry
|
||||||
|
SerializedRegistry: {fileID: 11400000, guid: b518751a8b5ee0942af68ec87eeba0c5, type: 2}
|
||||||
--- !u!1 &1935863237
|
--- !u!1 &1935863237
|
||||||
GameObject:
|
GameObject:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@@ -2836,3 +2881,4 @@ SceneRoots:
|
|||||||
- {fileID: 1165634414}
|
- {fileID: 1165634414}
|
||||||
- {fileID: 525386540}
|
- {fileID: 525386540}
|
||||||
- {fileID: 1935863238}
|
- {fileID: 1935863238}
|
||||||
|
- {fileID: 1618062728}
|
||||||
|
|||||||
@@ -4,9 +4,12 @@ namespace Fruitomation.Game.Items
|
|||||||
{
|
{
|
||||||
public class FruitBehaviour : ItemBehaviour
|
public class FruitBehaviour : ItemBehaviour
|
||||||
{
|
{
|
||||||
|
[SerializeField] private ItemType OverridenItemType;
|
||||||
|
|
||||||
protected override void OnInitialized()
|
protected override void OnInitialized()
|
||||||
{
|
{
|
||||||
Body2D.linearVelocity = Random.insideUnitCircle * 2.5f;
|
Body2D.linearVelocity = Random.insideUnitCircle * 2.5f;
|
||||||
|
CurrentType = OverridenItemType;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,21 +1,8 @@
|
|||||||
using System;
|
|
||||||
using Fruitomation.Global;
|
using Fruitomation.Global;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
namespace Fruitomation.Game.Items
|
namespace Fruitomation.Game.Items
|
||||||
{
|
{
|
||||||
public enum ItemType
|
|
||||||
{
|
|
||||||
Apple,
|
|
||||||
Grape,
|
|
||||||
Banana,
|
|
||||||
Kiwi,
|
|
||||||
Mango,
|
|
||||||
Pitaya,
|
|
||||||
Durian,
|
|
||||||
BuddhasHand
|
|
||||||
}
|
|
||||||
|
|
||||||
public class ItemBehaviour : MonoBehaviour
|
public class ItemBehaviour : MonoBehaviour
|
||||||
{
|
{
|
||||||
protected RectTransform RectTransform { get; private set; }
|
protected RectTransform RectTransform { get; private set; }
|
||||||
@@ -99,6 +86,13 @@ namespace Fruitomation.Game.Items
|
|||||||
|
|
||||||
public void TriggerDestruction(bool harvest = true)
|
public void TriggerDestruction(bool harvest = true)
|
||||||
{
|
{
|
||||||
|
if (harvest)
|
||||||
|
{
|
||||||
|
ItemInfo info = ItemInfoRegistry.Get(CurrentType);
|
||||||
|
float money = Random.Range(info.MinMoney, info.MaxMoney);
|
||||||
|
MoneyController.Add(money);
|
||||||
|
}
|
||||||
|
|
||||||
Destroy(gameObject);
|
Destroy(gameObject);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
62
Assets/Scripts/Game/Items/ItemInfoRegistry.cs
Normal file
62
Assets/Scripts/Game/Items/ItemInfoRegistry.cs
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
using PashaBibko.Pacore.Attributes;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Fruitomation.Game.Items
|
||||||
|
{
|
||||||
|
public class ItemInfoRegistry : MonoBehaviour
|
||||||
|
{
|
||||||
|
[Header("References")]
|
||||||
|
[SerializeField] private SerializedItemInfoRegistry SerializedRegistry;
|
||||||
|
|
||||||
|
private Dictionary<ItemType, ItemInfo> Dictionary;
|
||||||
|
private static ItemInfoRegistry Instance;
|
||||||
|
|
||||||
|
private void Awake()
|
||||||
|
{
|
||||||
|
/* Sets as the global instance */
|
||||||
|
if (Instance is not null)
|
||||||
|
{
|
||||||
|
Debug.LogError("Multiple instances of ItemInfoRegistry found");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
LoadFromRegistry();
|
||||||
|
Instance = this;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void OnDestroy()
|
||||||
|
{
|
||||||
|
if (Instance == this)
|
||||||
|
{
|
||||||
|
Instance = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[InspectorCallable("Load Registry")] private void LoadFromRegistry()
|
||||||
|
{
|
||||||
|
Dictionary = new Dictionary<ItemType, ItemInfo>();
|
||||||
|
foreach (ItemInfo info in SerializedRegistry.Registry)
|
||||||
|
{
|
||||||
|
Dictionary.Add(info.Type, info);
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
ItemType[] types = Enum.GetValues(typeof(ItemType)) as ItemType[];
|
||||||
|
Debug.Assert(types != null, nameof(types) + " != null");
|
||||||
|
|
||||||
|
foreach (ItemType type in types)
|
||||||
|
{
|
||||||
|
bool contained = Dictionary.ContainsKey(type);
|
||||||
|
if (!contained)
|
||||||
|
{
|
||||||
|
Debug.LogWarning($"Type [{type}] is not contained in the registry");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif // UNITY_EDITOR
|
||||||
|
}
|
||||||
|
|
||||||
|
public static ItemInfo Get(ItemType type) => Instance.Dictionary[type];
|
||||||
|
}
|
||||||
|
}
|
||||||
3
Assets/Scripts/Game/Items/ItemInfoRegistry.cs.meta
Normal file
3
Assets/Scripts/Game/Items/ItemInfoRegistry.cs.meta
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dcb8b502e5b94a72b37a6e77e4770d05
|
||||||
|
timeCreated: 1776511113
|
||||||
29
Assets/Scripts/Game/Items/SerializedItemInfoRegistry.cs
Normal file
29
Assets/Scripts/Game/Items/SerializedItemInfoRegistry.cs
Normal file
@@ -0,0 +1,29 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace Fruitomation.Game.Items
|
||||||
|
{
|
||||||
|
[Serializable] public enum ItemType
|
||||||
|
{
|
||||||
|
Apple,
|
||||||
|
Grape,
|
||||||
|
Banana,
|
||||||
|
Kiwi,
|
||||||
|
Mango,
|
||||||
|
Pitaya,
|
||||||
|
Durian,
|
||||||
|
BuddhasHand
|
||||||
|
}
|
||||||
|
|
||||||
|
[Serializable] public class ItemInfo
|
||||||
|
{
|
||||||
|
public ItemType Type;
|
||||||
|
public float MinMoney;
|
||||||
|
public float MaxMoney;
|
||||||
|
}
|
||||||
|
|
||||||
|
[CreateAssetMenu] public class SerializedItemInfoRegistry : ScriptableObject
|
||||||
|
{
|
||||||
|
[SerializeField] public ItemInfo[] Registry;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 92f10d0327354ede9d9b3cf77e1c2d30
|
||||||
|
timeCreated: 1776512220
|
||||||
@@ -70,7 +70,6 @@ namespace Fruitomation.Game
|
|||||||
UnlockedUpgrades upgrades = new();
|
UnlockedUpgrades upgrades = new();
|
||||||
foreach (BasicUpgrade upgrade in BasicUpgrades)
|
foreach (BasicUpgrade upgrade in BasicUpgrades)
|
||||||
{
|
{
|
||||||
Debug.Log($"Restored [{upgrade}] upgrade");
|
|
||||||
upgrades.Unlocks.Add(upgrade);
|
upgrades.Unlocks.Add(upgrade);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -7,15 +7,15 @@ namespace Fruitomation.Global
|
|||||||
{
|
{
|
||||||
private static MoneyController Instance;
|
private static MoneyController Instance;
|
||||||
|
|
||||||
[SerializeField, InspectorReadOnly("Game State")] private ulong InternalCurrentMoney;
|
[SerializeField, InspectorReadOnly("Game State")] private double InternalCurrentMoney;
|
||||||
|
|
||||||
public static ulong Current
|
public static double Current
|
||||||
{
|
{
|
||||||
get => Instance.InternalCurrentMoney;
|
get => Instance.InternalCurrentMoney;
|
||||||
set => Instance.InternalCurrentMoney = value;
|
set => Instance.InternalCurrentMoney = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void Add(ulong amount) => Instance.InternalCurrentMoney += amount;
|
public static void Add(double amount) => Instance.InternalCurrentMoney += amount;
|
||||||
|
|
||||||
private void Awake()
|
private void Awake()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ namespace Fruitomation.UI
|
|||||||
|
|
||||||
private void Update()
|
private void Update()
|
||||||
{
|
{
|
||||||
MoneyText.text = $"Current Money: ${MoneyController.Current}";
|
MoneyText.text = $"Current Money: ${MoneyController.Current:F1}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user