Vendor system started
This commit is contained in:
parent
c76b364ab7
commit
0fda02ac33
@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 384dd01a37ee6714eb5781af9707b3fa
|
guid: c073c0a5e5875cc418aaa82ab5c4bd57
|
||||||
folderAsset: yes
|
folderAsset: yes
|
||||||
DefaultImporter:
|
DefaultImporter:
|
||||||
externalObjects: {}
|
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