Vendor system started
This commit is contained in:
parent
c76b364ab7
commit
0fda02ac33
@ -1,5 +1,5 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 384dd01a37ee6714eb5781af9707b3fa
|
||||
guid: c073c0a5e5875cc418aaa82ab5c4bd57
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
84
Assets/Scripts/Vendor/VendorController.cs
vendored
Normal file
84
Assets/Scripts/Vendor/VendorController.cs
vendored
Normal 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();
|
||||
}
|
||||
}
|
11
Assets/Scripts/Vendor/VendorController.cs.meta
vendored
Normal file
11
Assets/Scripts/Vendor/VendorController.cs.meta
vendored
Normal 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
10
Assets/Scripts/Vendor/VendorData.cs
vendored
Normal 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>();
|
||||
}
|
11
Assets/Scripts/Vendor/VendorData.cs.meta
vendored
Normal file
11
Assets/Scripts/Vendor/VendorData.cs.meta
vendored
Normal file
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: e4e9d0e8da5998b4191abb1b5eeb3f89
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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>
|
||||
{
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: f5cf5303a18e6ad4798d73c6a3e0ee52
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
@ -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);
|
||||
}
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 50e076c3fdcf6c14c91afef991a3d815
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Loading…
x
Reference in New Issue
Block a user