Vendor system started

This commit is contained in:
Pedro Gomes 2024-06-23 22:28:17 +01:00
parent c76b364ab7
commit 0fda02ac33
9 changed files with 198 additions and 1 deletions

View File

@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 384dd01a37ee6714eb5781af9707b3fa
guid: c073c0a5e5875cc418aaa82ab5c4bd57
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@ -0,0 +1,84 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class VendorController : Interactable
{
[SerializeField] private VendorData vendorData;
public VendorData VendorData => vendorData;
[Header("Events:")]
[SerializeField] private GameEvent_VendorData onVendorInteracted;
[SerializeField] private GameEvent onVendorReleased;
[Header("Listeners:")]
[SerializeField] private GameEventListener onVendorUIClosed;
bool isUIOpen = false;
Transform storedTransform;
protected override void Awake()
{
base.Awake();
onVendorUIClosed.Response.AddListener(CloseInteraction);
}
public override void Interact(bool melee)
{
base.Interact(melee);
if (!melee) return;
isUIOpen = true;
onVendorInteracted.Raise(vendorData);
}
public override void OnFocused(Transform playerTransform, PlayerController playerController)
{
base.OnFocused(playerTransform, playerController);
storedTransform = playerTransform;
}
protected override void Update()
{
if (isFocus && !hasInteracted)
{
distance = Vector3.Distance(player.position, interactionTransform.position);
if (distance <= radius)
{
Interact(true);
hasInteracted = true;
Debug.Log($"vendor {this.transform.name} Interacted-Closeup");
}
else if (interactableWithRange)
{
if (distance <= rangedRadius)
{
Interact(false);
hasInteracted = true;
}
}
}
else if (isUIOpen)
{
distance = Vector3.Distance(storedTransform.position, interactionTransform.position);
if (distance >= radius)
{
OnDeFocus();
onVendorReleased.Raise();
Debug.Log($"vendor {this.transform.name} released");
}
}
}
private void CloseInteraction()
{
isUIOpen = false;
OnDeFocus();
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: fe66b44b623dbb54d83226ff2584a34c
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

10
Assets/Scripts/Vendor/VendorData.cs vendored Normal file
View File

@ -0,0 +1,10 @@
using Kryz.CharacterStats.Examples;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[System.Serializable]
public class VendorData
{
public List<Item> items = new List<Item>();
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: e4e9d0e8da5998b4191abb1b5eeb3f89
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,31 @@
using Photon.Pun;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class GameEventListener_VendorData : MonoBehaviour
{
public GameEvent_VendorData Event;
public UnityEvent_VendorData Response;
private void OnEnable()
{
Event.RegisterListener(this);
}
private void OnDisable()
{
Event.UnRegisterListener(this);
}
public void OnEventRaised(VendorData vendorData)
{
Response.Invoke(vendorData);
}
}
[System.Serializable]
public class UnityEvent_VendorData : UnityEvent<VendorData>
{
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: f5cf5303a18e6ad4798d73c6a3e0ee52
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -0,0 +1,28 @@
using Photon.Pun;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
[CreateAssetMenu(fileName = "GameEvent_VendorData", menuName = "Wavefunction/Event/New GameEvent VendorData", order = 1)]
public class GameEvent_VendorData : ScriptableObject
{
private List<GameEventListener_VendorData> listeners = new List<GameEventListener_VendorData>();
public void Raise(VendorData vendorData)
{
for (int i = listeners.Count - 1; i >= 0; i--)
{
listeners[i].OnEventRaised(vendorData);
}
}
public void RegisterListener(GameEventListener_VendorData listener)
{
listeners.Add(listener);
}
public void UnRegisterListener(GameEventListener_VendorData listener)
{
listeners.Remove(listener);
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 50e076c3fdcf6c14c91afef991a3d815
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: