This repository has been archived on 2025-04-11. You can view files and clone it, but cannot push or open issues or pull requests.
project-undercover/Project Undercover/Assets/Scripts/UI/InteractionPanelController.cs
2017-11-30 12:07:05 -06:00

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;
}*/
}