From 692589a1e3793ed676df2b8f395ec548b2c980bc Mon Sep 17 00:00:00 2001 From: Switerkly Date: Thu, 30 May 2024 23:37:08 +0300 Subject: [PATCH] Interactions --- Assets/GameAssets/Models/Locations/Cafe.meta | 8 ++++ Assets/GameAssets/Scripts/CameraController.cs | 17 +++++--- Assets/GameAssets/Scripts/Characters.meta | 8 ++++ Assets/GameAssets/Scripts/EmojiPopup.meta | 8 ++++ .../Scripts/Interactions/Interactable.cs | 5 ++- .../Scripts/Interactions/Interaction.cs | 3 +- .../Interactions/InteractionManager.cs | 15 +++++-- .../Scripts/Location/SceneLoader.cs | 2 + .../Scripts/SerializableDictionary.cs | 42 +++++++++++++++++++ .../Scripts/SerializableDictionary.cs.meta | 11 +++++ Assets/GameAssets/Textures.meta | 2 +- 11 files changed, 107 insertions(+), 14 deletions(-) create mode 100644 Assets/GameAssets/Models/Locations/Cafe.meta create mode 100644 Assets/GameAssets/Scripts/Characters.meta create mode 100644 Assets/GameAssets/Scripts/EmojiPopup.meta create mode 100644 Assets/GameAssets/Scripts/SerializableDictionary.cs create mode 100644 Assets/GameAssets/Scripts/SerializableDictionary.cs.meta diff --git a/Assets/GameAssets/Models/Locations/Cafe.meta b/Assets/GameAssets/Models/Locations/Cafe.meta new file mode 100644 index 0000000..349db97 --- /dev/null +++ b/Assets/GameAssets/Models/Locations/Cafe.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c29c7105d7dfad3419d3b8846bfd07d1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameAssets/Scripts/CameraController.cs b/Assets/GameAssets/Scripts/CameraController.cs index 408d40c..f59ab70 100644 --- a/Assets/GameAssets/Scripts/CameraController.cs +++ b/Assets/GameAssets/Scripts/CameraController.cs @@ -5,14 +5,14 @@ using UnityEngine.EventSystems; public class CameraController : MonoBehaviour { - public Transform target; + [SerializeField] private Transform target; - public float smoothSpeed = 8f; - public Vector3 offset; + [SerializeField] private float smoothSpeed = 8f; + [SerializeField] private Vector3 offset; - public float scrollSensitivity = 2f; - public float minDistance = 2f; - public float maxDistance = 10f; + [SerializeField] private float scrollSensitivity = 2f; + [SerializeField] private float minDistance = 2f; + [SerializeField] private float maxDistance = 10f; [SerializeField] private float distance; @@ -36,4 +36,9 @@ public class CameraController : MonoBehaviour Vector3 smoothedPosition = Vector3.Lerp(transform.position, desiredPosition, smoothSpeed * Time.deltaTime); transform.position = smoothedPosition; } + + public void SetTarget(Transform target) + { + this.target = target; + } } diff --git a/Assets/GameAssets/Scripts/Characters.meta b/Assets/GameAssets/Scripts/Characters.meta new file mode 100644 index 0000000..5b6aebf --- /dev/null +++ b/Assets/GameAssets/Scripts/Characters.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c002839c7f1a8f4495d3dce578bbfe4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameAssets/Scripts/EmojiPopup.meta b/Assets/GameAssets/Scripts/EmojiPopup.meta new file mode 100644 index 0000000..60040b1 --- /dev/null +++ b/Assets/GameAssets/Scripts/EmojiPopup.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 534b8ba6a555eec44a82b79d6fac0af8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameAssets/Scripts/Interactions/Interactable.cs b/Assets/GameAssets/Scripts/Interactions/Interactable.cs index dbfb18a..a5d6f69 100644 --- a/Assets/GameAssets/Scripts/Interactions/Interactable.cs +++ b/Assets/GameAssets/Scripts/Interactions/Interactable.cs @@ -5,7 +5,8 @@ using UnityEngine; public class Interactable : MonoBehaviour { - [SerializeField] protected new Collider collider; + [SerializeField] protected Collider _collider; + [SerializeField] protected Player user; [SerializeField] protected List interactions; public List Interactions => interactions; @@ -27,7 +28,7 @@ public class Interactable : MonoBehaviour public void CreateInteractions() { int count = ActiveInteractionsCount; - Bounds obj = collider.bounds; + Bounds obj = _collider.bounds; float sizeobj = 1f; float sizebtw = 0.2f; diff --git a/Assets/GameAssets/Scripts/Interactions/Interaction.cs b/Assets/GameAssets/Scripts/Interactions/Interaction.cs index f9ec0b7..1d0816a 100644 --- a/Assets/GameAssets/Scripts/Interactions/Interaction.cs +++ b/Assets/GameAssets/Scripts/Interactions/Interaction.cs @@ -15,9 +15,10 @@ public class Interaction public void Action() { + InteractionManager.Instance.Deactivate(); if (point) { - InteractionManager.LocalPlayer.Movement?.MoveTo(point.transform.position, PostAction); + InteractionManager.LocalPlayer.Movement?.MoveToBlock(point.transform.position, PostAction); } else { diff --git a/Assets/GameAssets/Scripts/Interactions/InteractionManager.cs b/Assets/GameAssets/Scripts/Interactions/InteractionManager.cs index 74bf4f7..9fcef40 100644 --- a/Assets/GameAssets/Scripts/Interactions/InteractionManager.cs +++ b/Assets/GameAssets/Scripts/Interactions/InteractionManager.cs @@ -5,7 +5,6 @@ using UnityEditor; using UnityEngine; using UnityEngine.EventSystems; using UnityEngine.UI; -using static UnityEditor.Progress; public class InteractionManager : MonoBehaviour { @@ -20,6 +19,7 @@ public class InteractionManager : MonoBehaviour } [SerializeField] private Player localPlayer; + [SerializeField] private CameraController cameraController; [Header("Layers")] [SerializeField] private LayerMask clickableLayers; @@ -29,7 +29,6 @@ public class InteractionManager : MonoBehaviour [Header("Interaction")] [SerializeField] private List blockReasons; [SerializeField, ReadOnly] private bool active; - [SerializeField, ReadOnly] private Item item; [SerializeField, ReadOnly] private Interactable interactable; public static Interactable Interactable => Instance.interactable; @@ -131,7 +130,6 @@ public class InteractionManager : MonoBehaviour { this.interactable = interactable; SetActive(true); - //Player.Instance.LookAt(interactive.transform.position); localPlayer.Movement.StopMovement(); interactable.CreateInteractions(); } @@ -146,12 +144,21 @@ public class InteractionManager : MonoBehaviour public void SetLocalPlayer(Player player) { - if (!player.IsMine) + if (!player.IsOwner) { Debug.LogError("Trying to assign not owned player"); return; } localPlayer = player; + cameraController.SetTarget(player.transform); + } + + public void InteractTest() + { + if (interactable) + { + interactable.Interactions[0].Action(); + } } } diff --git a/Assets/GameAssets/Scripts/Location/SceneLoader.cs b/Assets/GameAssets/Scripts/Location/SceneLoader.cs index 6078f14..512ccad 100644 --- a/Assets/GameAssets/Scripts/Location/SceneLoader.cs +++ b/Assets/GameAssets/Scripts/Location/SceneLoader.cs @@ -14,6 +14,7 @@ public class SceneLoader : MonoBehaviour [Header("Scenes")] [SerializeField] private string debugScene; + [SerializeField] private GameObject disableTest; [SerializeField] private List loadedScenes; [Header("ReadOnly")] @@ -28,6 +29,7 @@ public class SceneLoader : MonoBehaviour } public void LoadScene(string sceneName, Action onLoad) { + disableTest.SetActive(false); if (loading) { Debug.LogWarning("Scene can't start loading if the other scene not loaded yet."); diff --git a/Assets/GameAssets/Scripts/SerializableDictionary.cs b/Assets/GameAssets/Scripts/SerializableDictionary.cs new file mode 100644 index 0000000..10319d2 --- /dev/null +++ b/Assets/GameAssets/Scripts/SerializableDictionary.cs @@ -0,0 +1,42 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +[Serializable] +public class SerializableDictionary +{ + [Serializable] + public class Node + { + public TKey key; + public TValue value; + } + + [SerializeField] private List nodes; + + private Dictionary dictionary; + + public Dictionary Dictionary + { + get + { + if (dictionary == null) + { + dictionary = ToDictionary(); + } + + return dictionary; + } + + } + + private Dictionary ToDictionary() + { + Dictionary dictionary = new Dictionary(); + foreach(Node node in nodes) + { + dictionary.Add(node.key, node.value); + } + return dictionary; + } +} \ No newline at end of file diff --git a/Assets/GameAssets/Scripts/SerializableDictionary.cs.meta b/Assets/GameAssets/Scripts/SerializableDictionary.cs.meta new file mode 100644 index 0000000..6d40512 --- /dev/null +++ b/Assets/GameAssets/Scripts/SerializableDictionary.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f0c498d09fc5d894091171a91d517fbb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/GameAssets/Textures.meta b/Assets/GameAssets/Textures.meta index 9a07407..01c8553 100644 --- a/Assets/GameAssets/Textures.meta +++ b/Assets/GameAssets/Textures.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: db7b31f478c64da47bf1ccc0c3c300d4 +guid: 3ada3be75e235e34c8c5b5460a841bd9 folderAsset: yes DefaultImporter: externalObjects: {}