From 9acd9f638fb490781aabe104b5af1f3d8ccd2b22 Mon Sep 17 00:00:00 2001 From: excitedneon Date: Sat, 13 May 2017 23:40:08 +0300 Subject: [PATCH] Integrate inventory interface with inventory backend --- Assets/Prefabs/PC.prefab | 15 ++-- Assets/Scenes/TestMap.unity | 64 --------------- Assets/Scripts/Controls/InventoryInterface.cs | 78 ++++++++++++------- Assets/Scripts/Items/Drive.cs | 2 +- 4 files changed, 58 insertions(+), 101 deletions(-) diff --git a/Assets/Prefabs/PC.prefab b/Assets/Prefabs/PC.prefab index e7dac90..f43867a 100644 --- a/Assets/Prefabs/PC.prefab +++ b/Assets/Prefabs/PC.prefab @@ -1671,14 +1671,14 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1101618282831644} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -0.02, y: 0.6244, z: 0.5199004} + m_LocalRotation: {x: 0, y: 0.7071068, z: 0, w: 0.7071068} + m_LocalPosition: {x: -0.02, y: 0.6244, z: 0} m_LocalScale: {x: 0.14000012, y: 0.14, z: 0.14000012} m_Children: - {fileID: 4871279644634608} m_Father: {fileID: 4236387573765288} m_RootOrder: 10 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_LocalEulerAnglesHint: {x: 0, y: 90, z: 0} --- !u!4 &4345907313541278 Transform: m_ObjectHideFlags: 1 @@ -2262,13 +2262,13 @@ Transform: m_PrefabParentObject: {fileID: 0} m_PrefabInternal: {fileID: 100100000} m_GameObject: {fileID: 1733941371029502} - m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} - m_LocalPosition: {x: -0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_LocalRotation: {x: -0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0.02, y: 0, z: 0} + m_LocalScale: {x: 0.8, y: 0.8, z: 0.8} m_Children: [] m_Father: {fileID: 4334285771407092} m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: -90.00001, y: 90, z: 0} + m_LocalEulerAnglesHint: {x: -90.00001, y: 0, z: 0} --- !u!4 &4883048021777868 Transform: m_ObjectHideFlags: 1 @@ -4646,6 +4646,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bb0d2e67bf4cd4c6b97d2572ce00fc41, type: 3} m_Name: m_EditorClassIdentifier: + Inventory: {fileID: 114702404122310282} Camera: {fileID: 20678872378488080} Hologram: {fileID: 114633016952828368} ItemPreviewMesh: {fileID: 33585471952367662} diff --git a/Assets/Scenes/TestMap.unity b/Assets/Scenes/TestMap.unity index 77c96f6..d313687 100644 --- a/Assets/Scenes/TestMap.unity +++ b/Assets/Scenes/TestMap.unity @@ -2259,70 +2259,6 @@ Prefab: propertyPath: m_RootOrder value: 0 objectReference: {fileID: 0} - - target: {fileID: 4334285771407092, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalPosition.x - value: -0.02 - objectReference: {fileID: 0} - - target: {fileID: 4871279644634608, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalPosition.x - value: 0.02 - objectReference: {fileID: 0} - - target: {fileID: 4871279644634608, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalRotation.x - value: -0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4871279644634608, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalRotation.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4871279644634608, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4871279644634608, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4871279644634608, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalEulerAnglesHint.y - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4871279644634608, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalScale.x - value: 0.8 - objectReference: {fileID: 0} - - target: {fileID: 4871279644634608, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalScale.y - value: 0.8 - objectReference: {fileID: 0} - - target: {fileID: 4871279644634608, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalScale.z - value: 0.8 - objectReference: {fileID: 0} - - target: {fileID: 4334285771407092, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalRotation.x - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4334285771407092, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalRotation.y - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4334285771407092, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalRotation.z - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 4334285771407092, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalRotation.w - value: 0.7071068 - objectReference: {fileID: 0} - - target: {fileID: 4334285771407092, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalEulerAnglesHint.y - value: 90 - objectReference: {fileID: 0} - - target: {fileID: 4334285771407092, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} - propertyPath: m_LocalPosition.z - value: 0 - objectReference: {fileID: 0} m_RemovedComponents: [] m_ParentPrefab: {fileID: 100100000, guid: e8761b9491a974d1780e60dafbd372a2, type: 2} m_IsPrefabParent: 0 diff --git a/Assets/Scripts/Controls/InventoryInterface.cs b/Assets/Scripts/Controls/InventoryInterface.cs index 79969c8..98e7dbf 100644 --- a/Assets/Scripts/Controls/InventoryInterface.cs +++ b/Assets/Scripts/Controls/InventoryInterface.cs @@ -3,6 +3,8 @@ using System.Collections.Generic; using UnityEngine; using Cyber.Util; using Cyber.Console; +using Cyber.Entities.SyncBases; +using Cyber.Items; namespace Cyber.Controls { @@ -11,6 +13,11 @@ namespace Cyber.Controls { /// public class InventoryInterface : MonoBehaviour { + /// + /// The inventory of the player, will be displayed here. + /// + public Inventory Inventory; + /// /// The camera that is displaying this inventory interface. /// @@ -173,36 +180,45 @@ namespace Cyber.Controls { if (ItemGridSelectedIndex < 0) { SetPreviewMesh(null); } - for (int i = 0; i < ItemGridDimensions.x * ItemGridDimensions.y; i++) { - ItemGridCellMeshes[i].mesh = MeshDB.Meshes[i % MeshDB.Meshes.Length]; - float Scale = 0.08f; - bool Spinning = false; - if (focused == i || ItemGridSelectedIndex == i) { - Scale = 0.1f; - Spinning = true; - } - if (ItemGridSelectedIndex == i) { - SetPreviewMesh(ItemGridCellMeshes[i].mesh); - if ((ItemGridSelector.position - ItemGridCells[i].position).magnitude < 0.01f) { - ItemGridSelector.position = ItemGridCells[i].position; - } else { - ItemGridSelector.position = - Vector3.Lerp(ItemGridSelector.position, - ItemGridCells[i].position, 20f * Time.deltaTime); + for (int y = 0; y < ItemGridDimensions.y; y++) { + for (int x = 0; x < ItemGridDimensions.x; x++) { + int i = x + y * (int) ItemGridDimensions.x; + Item Item = Inventory.Drive.Interface.GetItemAt(x, y); + Mesh Mesh = null; + if (Item != null) { + Mesh = MeshDB.Meshes[Item.ModelID]; } - ItemGridSelector.LookAt(Camera.transform); - Vector3 NewRot = ItemGridSelector.localEulerAngles; - NewRot.z = 0; - ItemGridSelector.localEulerAngles = NewRot; + ItemGridCellMeshes[i].mesh = Mesh; + + float Scale = 0.08f; + bool Spinning = false; + if (focused == i || ItemGridSelectedIndex == i) { + Scale = 0.1f; + Spinning = true; + } + if (ItemGridSelectedIndex == i) { + SetPreviewMesh(ItemGridCellMeshes[i].mesh); + if ((ItemGridSelector.position - ItemGridCells[i].position).magnitude < 0.01f) { + ItemGridSelector.position = ItemGridCells[i].position; + } else { + ItemGridSelector.position = + Vector3.Lerp(ItemGridSelector.position, + ItemGridCells[i].position, 20f * Time.deltaTime); + } + ItemGridSelector.LookAt(Camera.transform); + Vector3 NewRot = ItemGridSelector.localEulerAngles; + NewRot.z = 0; + ItemGridSelector.localEulerAngles = NewRot; + } + if (!Spinning) { + ItemGridCellMeshes[i].transform.LookAt(Camera.transform); + Vector3 NewRot = ItemGridCellMeshes[i].transform.localEulerAngles; + NewRot.z = 0; + ItemGridCellMeshes[i].transform.localEulerAngles = NewRot; + } + ItemGridCells[i].GetComponent().Spinning = Spinning; + FixMeshScaling(ItemGridCellMeshes[i], Scale); } - if (!Spinning) { - ItemGridCellMeshes[i].transform.LookAt(Camera.transform); - Vector3 NewRot = ItemGridCellMeshes[i].transform.localEulerAngles; - NewRot.z = 0; - ItemGridCellMeshes[i].transform.localEulerAngles = NewRot; - } - ItemGridCells[i].GetComponent().Spinning = Spinning; - FixMeshScaling(ItemGridCellMeshes[i], Scale); } } @@ -216,7 +232,11 @@ namespace Cyber.Controls { } private void FixMeshScaling(MeshFilter toFix, float scale) { - float HighestExtent = 0f; + if (toFix.mesh == null) { + return; + } + + float HighestExtent = 0.1f; float Height = toFix.mesh.bounds.extents.y * 2f; float Width = Mathf.Sqrt(Mathf.Pow(toFix.mesh.bounds.extents.x * 2f, 2) + Mathf.Pow(toFix.mesh.bounds.extents.y * 2f, 2)); diff --git a/Assets/Scripts/Items/Drive.cs b/Assets/Scripts/Items/Drive.cs index 0ede809..3d5fdf1 100644 --- a/Assets/Scripts/Items/Drive.cs +++ b/Assets/Scripts/Items/Drive.cs @@ -76,7 +76,7 @@ namespace Cyber.Items { /// The index of the desired item /// The item or null if nothing was found. public Item GetItem(int idx) { - if (idx < 0 || idx > Items.Count) { + if (idx < 0 || idx >= Items.Count) { return null; } return Items[idx];