115 lines
No EOL
3.1 KiB
C#
115 lines
No EOL
3.1 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
public class InteractionPanelController : MonoBehaviour {
|
|
|
|
// One choice vars
|
|
[SerializeField]
|
|
GameObject oneChoicePanel;
|
|
[SerializeField]
|
|
InteractionButtonProperties interactionButton;
|
|
|
|
// two choices vars
|
|
[SerializeField]
|
|
GameObject choicePanel;
|
|
[SerializeField]
|
|
InteractionButtonProperties spyButton;
|
|
[SerializeField]
|
|
InteractionButtonProperties npcButton;
|
|
|
|
private static InteractionPanelController activePanel;
|
|
private StateController _controller;
|
|
|
|
void Start()
|
|
{
|
|
ActivePanel = this;
|
|
Hide();
|
|
}
|
|
|
|
public void SelectInteractionReveal(StateController controller)
|
|
{
|
|
_controller = controller;
|
|
if (oneChoicePanel.activeInHierarchy || choicePanel.activeInHierarchy)
|
|
return;
|
|
|
|
int randomInt = (int)(Random.value * controller.SelectedObject.interactions.Length);
|
|
Interaction randomNpcInteraction = controller.SelectedObject.interactions[randomInt];
|
|
|
|
if (controller.SelectedObject.spyInteractions.Length == 0)
|
|
{
|
|
oneChoicePanel.SetActive(true);
|
|
interactionButton.SetInteraction(randomNpcInteraction);
|
|
}
|
|
else
|
|
{
|
|
choicePanel.SetActive(true);
|
|
Interaction spyInteraction = controller.SelectedObject.spyInteractions[0];
|
|
spyButton.SetInteraction(spyInteraction);
|
|
npcButton.SetInteraction(randomNpcInteraction);
|
|
}
|
|
}
|
|
|
|
public void AcceptInteractionReveal(StateController controller)
|
|
{
|
|
_controller = controller;
|
|
oneChoicePanel.SetActive(true);
|
|
choicePanel.SetActive(false);
|
|
string description = controller.Interactor.SelectedInteraction.receiverDescription;
|
|
interactionButton.text.text = description;
|
|
interactionButton.SetInteraction(controller.Interactor.SelectedInteraction);
|
|
}
|
|
|
|
public void Hide()
|
|
{
|
|
choicePanel.SetActive(false);
|
|
oneChoicePanel.SetActive(false);
|
|
}
|
|
|
|
public static InteractionPanelController ActivePanel
|
|
{
|
|
get
|
|
{
|
|
if (activePanel)
|
|
return activePanel;
|
|
Debug.LogError("No interaction panels in scene");
|
|
return null;
|
|
}
|
|
set
|
|
{
|
|
if (!activePanel)
|
|
activePanel = value;
|
|
else
|
|
{
|
|
Debug.LogError("More than one interaction panel currently exists in the scene");
|
|
}
|
|
}
|
|
}
|
|
|
|
public static bool InteractionPrompted()
|
|
{
|
|
return ActivePanel.choicePanel.activeInHierarchy || ActivePanel.oneChoicePanel.activeInHierarchy;
|
|
}
|
|
|
|
public void SetInteraction(Interaction interaction)
|
|
{
|
|
_controller.SelectedInteraction = interaction;
|
|
}
|
|
|
|
/*
|
|
public bool WasInteractionInitiated()
|
|
{
|
|
if (_initiatedInteraction)
|
|
{
|
|
_initiatedInteraction = false;
|
|
return _initiatedInteraction;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
public void InitiatedInteraction()
|
|
{
|
|
_initiatedInteraction = true;
|
|
}*/
|
|
} |