Merge branch 'master' of github.com:Saltosion/Cyber
This commit is contained in:
commit
9503c3f716
@ -38,6 +38,7 @@ GameObject:
|
|||||||
- component: {fileID: 4844777526459442}
|
- component: {fileID: 4844777526459442}
|
||||||
- component: {fileID: 143753897266899886}
|
- component: {fileID: 143753897266899886}
|
||||||
- component: {fileID: 114052379458543858}
|
- component: {fileID: 114052379458543858}
|
||||||
|
- component: {fileID: 114934786006823366}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: NPC
|
m_Name: NPC
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -293,8 +294,21 @@ MonoBehaviour:
|
|||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
ID: 0
|
ID: 0
|
||||||
MovementSpeed: 5
|
MovementSpeed: 5
|
||||||
|
InteractionDistance: 2
|
||||||
CharacterController: {fileID: 143753897266899886}
|
CharacterController: {fileID: 143753897266899886}
|
||||||
Head: {fileID: 4900355877646882}
|
Head: {fileID: 4900355877646882}
|
||||||
|
--- !u!114 &114934786006823366
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 100100000}
|
||||||
|
m_GameObject: {fileID: 1045762529817142}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 28f60457b196bf144a8b332b7327db1f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
ID: 0
|
||||||
--- !u!143 &143753897266899886
|
--- !u!143 &143753897266899886
|
||||||
CharacterController:
|
CharacterController:
|
||||||
m_ObjectHideFlags: 1
|
m_ObjectHideFlags: 1
|
||||||
|
@ -413,6 +413,7 @@ GameObject:
|
|||||||
- component: {fileID: 143869468979164672}
|
- component: {fileID: 143869468979164672}
|
||||||
- component: {fileID: 114575501420754388}
|
- component: {fileID: 114575501420754388}
|
||||||
- component: {fileID: 114385213279389382}
|
- component: {fileID: 114385213279389382}
|
||||||
|
- component: {fileID: 114702404122310282}
|
||||||
m_Layer: 0
|
m_Layer: 0
|
||||||
m_Name: PC
|
m_Name: PC
|
||||||
m_TagString: Untagged
|
m_TagString: Untagged
|
||||||
@ -4864,6 +4865,18 @@ MonoBehaviour:
|
|||||||
Visible: 0
|
Visible: 0
|
||||||
Text: {fileID: 0}
|
Text: {fileID: 0}
|
||||||
HologramScanlineScrollingSpeed: 1
|
HologramScanlineScrollingSpeed: 1
|
||||||
|
--- !u!114 &114702404122310282
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 1
|
||||||
|
m_PrefabParentObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 100100000}
|
||||||
|
m_GameObject: {fileID: 1297568499365208}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 28f60457b196bf144a8b332b7327db1f, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
ID: 0
|
||||||
--- !u!114 &114741357428691828
|
--- !u!114 &114741357428691828
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 1
|
m_ObjectHideFlags: 1
|
||||||
|
69
Assets/Scripts/Entities/SyncBases/Inventory.cs
Normal file
69
Assets/Scripts/Entities/SyncBases/Inventory.cs
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
|
||||||
|
using Cyber.Items;
|
||||||
|
using Cyber.Networking;
|
||||||
|
using UnityEngine.Networking;
|
||||||
|
|
||||||
|
namespace Cyber.Entities.SyncBases {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The Inventory component, used for managing the inventory of a <see cref="Character"/>.
|
||||||
|
/// </summary>
|
||||||
|
public class Inventory : SyncBase {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Refrence of the actual <see cref="Drive"/>.
|
||||||
|
/// </summary>
|
||||||
|
public Drive Drive;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates the Inventory-component for a game object.
|
||||||
|
/// </summary>
|
||||||
|
public Inventory() {
|
||||||
|
Drive = new Drive(10f);
|
||||||
|
Drive.AddItem(ItemDB.Singleton.Get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the sync handletype indicating how the inventory should be synced.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public override SyncHandletype GetSyncHandletype() {
|
||||||
|
return new SyncHandletype(true, 10);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Deserializes the ID's and creates them in the <see cref="Drive"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="reader"></param>
|
||||||
|
public override void Deserialize(NetworkReader reader) {
|
||||||
|
byte[][] ByteArray = new byte[4][];
|
||||||
|
ByteArray[0] = reader.ReadBytesAndSize();
|
||||||
|
ByteArray[1] = reader.ReadBytesAndSize();
|
||||||
|
ByteArray[2] = reader.ReadBytesAndSize();
|
||||||
|
ByteArray[3] = reader.ReadBytesAndSize();
|
||||||
|
int[] IDs = NetworkHelper.DeserializeIntArray(ByteArray);
|
||||||
|
|
||||||
|
Drive.Clear();
|
||||||
|
foreach (int id in IDs) {
|
||||||
|
Drive.AddItem(ItemDB.Singleton.Get(id));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Serializes only the <see cref="Drive"/>'s item IDs.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="writer"></param>
|
||||||
|
public override void Serialize(NetworkWriter writer) {
|
||||||
|
var Items = Drive.GetItems();
|
||||||
|
int[] IDs = new int[Items.Count];
|
||||||
|
for (int i = 0; i < Items.Count; i++) {
|
||||||
|
IDs[i] = Items[i].ID;
|
||||||
|
}
|
||||||
|
byte[][] ByteArray = NetworkHelper.SerializeIntArray(IDs);
|
||||||
|
writer.WriteBytesFull(ByteArray[0]);
|
||||||
|
writer.WriteBytesFull(ByteArray[1]);
|
||||||
|
writer.WriteBytesFull(ByteArray[2]);
|
||||||
|
writer.WriteBytesFull(ByteArray[3]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
12
Assets/Scripts/Entities/SyncBases/Inventory.cs.meta
Normal file
12
Assets/Scripts/Entities/SyncBases/Inventory.cs.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 28f60457b196bf144a8b332b7327db1f
|
||||||
|
timeCreated: 1494693625
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -15,6 +15,7 @@ namespace Cyber.Entities {
|
|||||||
|
|
||||||
private static readonly Type[] SyncableClasses = new Type[] {
|
private static readonly Type[] SyncableClasses = new Type[] {
|
||||||
typeof(Character),
|
typeof(Character),
|
||||||
|
typeof(Inventory),
|
||||||
typeof(Button),
|
typeof(Button),
|
||||||
typeof(Door),
|
typeof(Door),
|
||||||
typeof(Computer)
|
typeof(Computer)
|
||||||
|
9
Assets/Scripts/Items.meta
Normal file
9
Assets/Scripts/Items.meta
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bbdd5f62728d08e43b717724c9412411
|
||||||
|
folderAsset: yes
|
||||||
|
timeCreated: 1494693625
|
||||||
|
licenseType: Free
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
94
Assets/Scripts/Items/Drive.cs
Normal file
94
Assets/Scripts/Items/Drive.cs
Normal file
@ -0,0 +1,94 @@
|
|||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Cyber.Items {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// A drive containing items, and has a limited capacity that cannot be changed.
|
||||||
|
/// </summary>
|
||||||
|
public class Drive {
|
||||||
|
|
||||||
|
private List<Item> Items = new List<Item>();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The capacity of the drive, meaning how much stuff can this drive contain.
|
||||||
|
/// </summary>
|
||||||
|
public readonly float Capacity;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The interface-class of this Drive.
|
||||||
|
/// </summary>
|
||||||
|
public DriveInterface Interface;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a drive with given capacity. Capacity cannot be changed after this.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="capacity">Capacity of the drive</param>
|
||||||
|
public Drive(float capacity) {
|
||||||
|
Capacity = capacity;
|
||||||
|
Interface = new DriveInterface(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Current total weight of all the items combined.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>The totam weight</returns>
|
||||||
|
public float TotalWeight() {
|
||||||
|
float sum = 0;
|
||||||
|
foreach (Item item in Items) {
|
||||||
|
sum += item.Weight;
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Current free space in the drive. Literally is Capacity - TotalWeight()
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Current Free space.</returns>
|
||||||
|
public float FreeSpace() {
|
||||||
|
return Capacity - TotalWeight();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clears the drive, completely wiping it empty. Mainly used for
|
||||||
|
/// <see cref="Inventory.Deserialize(NetworkReader)"/>
|
||||||
|
/// </summary>
|
||||||
|
public void Clear() {
|
||||||
|
Items.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds the item in the drive. If the addition was not successful, returns false, true otherwise.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns>Weather the drive had enough space.</returns>
|
||||||
|
public bool AddItem(Item item) {
|
||||||
|
if (item.Weight > FreeSpace()) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Interface.AddNewItem(Items.Count);
|
||||||
|
Items.Add(item);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the item at the given index, or null if there is nothing.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="idx">The index of the desired item</param>
|
||||||
|
/// <returns>The item or null if nothing was found.</returns>
|
||||||
|
public Item GetItem(int idx) {
|
||||||
|
if (idx < 0 || idx > Items.Count) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return Items[idx];
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the list of all items currently in the drive.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public List<Item> GetItems() {
|
||||||
|
return Items;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
12
Assets/Scripts/Items/Drive.cs.meta
Normal file
12
Assets/Scripts/Items/Drive.cs.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 492df702a2300a447ae72a26f82c7f57
|
||||||
|
timeCreated: 1494693625
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
101
Assets/Scripts/Items/DriveInterface.cs
Normal file
101
Assets/Scripts/Items/DriveInterface.cs
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
|
||||||
|
namespace Cyber.Items {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="Drive"/> interface, which contains a grid of indices of items in the <see cref="Drive"/>. Use <see cref="GetItemAt(int, int)"/> to get items in the interface.
|
||||||
|
/// </summary>
|
||||||
|
public class DriveInterface {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Width of the interface.
|
||||||
|
/// </summary>
|
||||||
|
public const int Width = 8;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Minimun height of the interface.
|
||||||
|
/// </summary>
|
||||||
|
public const int MinHeight = 4;
|
||||||
|
|
||||||
|
private int[,] ItemGrid = new int[4, Width];
|
||||||
|
|
||||||
|
private Drive Drive;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a Drive interface for a <see cref="Drive"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="drive"></param>
|
||||||
|
public DriveInterface(Drive drive) {
|
||||||
|
Drive = drive;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Returns the item at the specified coordinate on the interface. Returns null if invalid or empty coordinate.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="x">The x-coordinate</param>
|
||||||
|
/// <param name="y">The y-coordinate</param>
|
||||||
|
/// <returns>The item or null</returns>
|
||||||
|
public Item GetItemAt(int x, int y) {
|
||||||
|
if (ItemGrid[y, x] == 0) {
|
||||||
|
return null;
|
||||||
|
} else {
|
||||||
|
return Drive.GetItem(ItemGrid[y, x]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the Width of the interface, or simply <see cref="Width"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int GetWidth() {
|
||||||
|
return Width;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Gets the current height of the interface
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public int GetHeight() {
|
||||||
|
return ItemGrid.GetLength(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Updates the height of the interface, adding new rows or deleting old useless ones.
|
||||||
|
/// </summary>
|
||||||
|
public void UpdateHeight() {
|
||||||
|
int RequiredHeight = MinHeight;
|
||||||
|
for (int y = MinHeight; y < GetHeight(); y++) {
|
||||||
|
for (int x = 0; x < Width; x++) {
|
||||||
|
if (GetItemAt(x, y) == null || (x == Width - 1 && y == GetHeight() - 1)) {
|
||||||
|
RequiredHeight = y;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int[,] Temp = new int[RequiredHeight + 1, Width];
|
||||||
|
for (int y = 0; y < RequiredHeight - 1; y++) {
|
||||||
|
for (int x = 0; x < Width; x++) {
|
||||||
|
if (GetItemAt(x, y) != null) {
|
||||||
|
Temp[y, x] = Drive.GetItems().IndexOf(GetItemAt(x, y));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ItemGrid = Temp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Adds a new item to the grid. The idx in the parameter is the idx of the item in the drive.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="idx"></param>
|
||||||
|
public void AddNewItem(int idx) {
|
||||||
|
UpdateHeight();
|
||||||
|
for (int y = 0; y < GetHeight(); y++) {
|
||||||
|
for (int x = 0; x < Width; x++) {
|
||||||
|
if (GetItemAt(x, y) == null) {
|
||||||
|
ItemGrid[y, x] = idx;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
12
Assets/Scripts/Items/DriveInterface.cs.meta
Normal file
12
Assets/Scripts/Items/DriveInterface.cs.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: fc91d98b617f041da8ff205f4252ed06
|
||||||
|
timeCreated: 1494705607
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
59
Assets/Scripts/Items/Item.cs
Normal file
59
Assets/Scripts/Items/Item.cs
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
|
||||||
|
namespace Cyber.Items {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// An item, containing itemmy information.
|
||||||
|
/// </summary>
|
||||||
|
public class Item {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ID of the item, used in <see cref="ItemDB"/>.
|
||||||
|
/// </summary>
|
||||||
|
public readonly int ID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Model ID of this item.
|
||||||
|
/// </summary>
|
||||||
|
public int ModelID;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Name of the item.
|
||||||
|
/// </summary>
|
||||||
|
public string Name;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Description of the item.
|
||||||
|
/// </summary>
|
||||||
|
public string Description;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The weight of the item (in kg).
|
||||||
|
/// </summary>
|
||||||
|
public float Weight;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates an item. This should technically be only called by ItemDB, but it's public because of "reasons".
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="id">ID of the item</param>
|
||||||
|
/// <param name="modelId">ModelID of the item, see ModelDB.</param>
|
||||||
|
/// <param name="name">The name if the item</param>
|
||||||
|
/// <param name="weight">The Weight of the item</param>
|
||||||
|
/// <param name="description">The description of the item.</param>
|
||||||
|
public Item(int id, int modelId, string name, float weight, string description) {
|
||||||
|
ID = id;
|
||||||
|
ModelID = modelId;
|
||||||
|
Name = name;
|
||||||
|
Weight = weight;
|
||||||
|
Description = description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Clones the item, used mostly for <see cref="ItemDB.Get(int)"/>.
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Item Clone() {
|
||||||
|
return new Item(ID, ModelID, Name, Weight, Description);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
12
Assets/Scripts/Items/Item.cs.meta
Normal file
12
Assets/Scripts/Items/Item.cs.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: dc68513dcc5b31840b1a758b687eb2e0
|
||||||
|
timeCreated: 1494693626
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
42
Assets/Scripts/Items/ItemDB.cs
Normal file
42
Assets/Scripts/Items/ItemDB.cs
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace Cyber.Items {
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// ItemDB containing 'templates' for all items.
|
||||||
|
/// </summary>
|
||||||
|
public class ItemDB {
|
||||||
|
|
||||||
|
private Dictionary<int, Item> Items = new Dictionary<int, Item>();
|
||||||
|
private int Counter = 0;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public static ItemDB Singleton = new ItemDB();
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Creates the ItemDB. Should not be externally called. See <see cref="Singleton"/>.
|
||||||
|
/// </summary>
|
||||||
|
public ItemDB() {
|
||||||
|
AddItem(new Item(Counter++, 0, "Very Long Item Name", 1.5f, "This item is a rare piece of the \"way too long of a name\" technology, invented by space goblins in ancient times."));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// If there is an item at the given ID, return a clone of it. Otherwise return null.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="itemId">The id of the desired item.</param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Item Get(int itemId) {
|
||||||
|
if (Items.ContainsKey(itemId)) {
|
||||||
|
return Items[itemId].Clone();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void AddItem(Item item) {
|
||||||
|
Items.Add(item.ID, item);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
12
Assets/Scripts/Items/ItemDB.cs.meta
Normal file
12
Assets/Scripts/Items/ItemDB.cs.meta
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bd2b5984cb9102345bf98feeac875057
|
||||||
|
timeCreated: 1494693625
|
||||||
|
licenseType: Free
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -1,4 +1,5 @@
|
|||||||
|
|
||||||
|
using Cyber.Console;
|
||||||
using Cyber.Entities;
|
using Cyber.Entities;
|
||||||
using UnityEngine.Networking;
|
using UnityEngine.Networking;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user