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