DRHPS/code-csharp/en_US/P_InteractCollision.cs
2025-04-08 11:31:35 +08:00

100 lines
4.0 KiB
C#

using System.Collections.Generic;
using UnityEngine;
public class P_InteractCollision : MonoBehaviour
{
private bool SuccessfulInteraction;
private List<Component> ListOfInteractables = new List<Component>();
private void OnTriggerEnter2D(Collider2D other)
{
if ((bool)other.GetComponent<INT_Chat>())
{
ListOfInteractables.Add(other.GetComponent<INT_Chat>());
}
if ((bool)other.GetComponent<INT_Generic>())
{
ListOfInteractables.Add(other.GetComponent<INT_Generic>());
}
if ((bool)other.GetComponent<INT_ChangeBool>())
{
ListOfInteractables.Add(other.GetComponent<INT_ChangeBool>());
}
if ((bool)other.GetComponent<INT_ChangePlayerVariable>())
{
ListOfInteractables.Add(other.GetComponent<INT_ChangePlayerVariable>());
}
if ((bool)other.GetComponent<INT_DestroyComponent>())
{
ListOfInteractables.Add(other.GetComponent<INT_DestroyComponent>());
}
if ((bool)other.GetComponent<INT_PlaySound>())
{
ListOfInteractables.Add(other.GetComponent<INT_PlaySound>());
}
if ((bool)other.GetComponent<INT_EnableGameObject>())
{
ListOfInteractables.Add(other.GetComponent<INT_EnableGameObject>());
}
if ((bool)other.GetComponent<INT_SaveInt>())
{
ListOfInteractables.Add(other.GetComponent<INT_SaveInt>());
}
Component component = null;
float num = float.PositiveInfinity;
foreach (Component listOfInteractable in ListOfInteractables)
{
if (Vector2.Distance(PlayerManager.Instance.transform.position, listOfInteractable.transform.position) < num)
{
component = listOfInteractable;
}
}
if (component != null)
{
if (component.GetType() == typeof(INT_Chat) && !SuccessfulInteraction)
{
component.GetType().GetMethod("RUN").Invoke(component, null);
SuccessfulInteraction = true;
}
if (component.GetType() == typeof(INT_Generic) && !SuccessfulInteraction)
{
component.GetType().GetMethod("Interact").Invoke(component, null);
SuccessfulInteraction = true;
}
if (component.GetType() == typeof(INT_ChangeBool) && !SuccessfulInteraction)
{
component.GetType().GetMethod("RUN").Invoke(component, null);
SuccessfulInteraction = true;
}
if (component.GetType() == typeof(INT_ChangePlayerVariable) && !SuccessfulInteraction)
{
component.GetType().GetMethod("RUN").Invoke(component, null);
SuccessfulInteraction = true;
}
if (component.GetType() == typeof(INT_DestroyComponent) && !SuccessfulInteraction)
{
component.GetType().GetMethod("RUN").Invoke(component, null);
SuccessfulInteraction = true;
}
if (component.GetType() == typeof(INT_PlaySound) && !SuccessfulInteraction)
{
component.GetType().GetMethod("RUN").Invoke(component, null);
SuccessfulInteraction = true;
}
if (component.GetType() == typeof(INT_EnableGameObject) && !SuccessfulInteraction)
{
component.GetType().GetMethod("RUN").Invoke(component, null);
SuccessfulInteraction = true;
}
if (component.GetType() == typeof(INT_SaveInt) && !SuccessfulInteraction)
{
component.GetType().GetMethod("RUN").Invoke(component, null);
SuccessfulInteraction = true;
}
}
ListOfInteractables.Clear();
SuccessfulInteraction = false;
}
}