-
MaZiFAU authored
BugFixes: + repaired Play/Create button in InGameEditor + null exception when deleting assigned fact / parsing null-hint + <no label> for defined and filtered facts from application + collission Player <> snapzone RenderedScrollFact.cs: + changed primary key from ID to ScrollFactURI ScrollDetails.cs: + fully enabled ScrollOverwrites + filtering null-"df" assignments from Scrolls + reduced number of dynamic scroll applications
MaZiFAU authoredBugFixes: + repaired Play/Create button in InGameEditor + null exception when deleting assigned fact / parsing null-hint + <no label> for defined and filtered facts from application + collission Player <> snapzone RenderedScrollFact.cs: + changed primary key from ID to ScrollFactURI ScrollDetails.cs: + fully enabled ScrollOverwrites + filtering null-"df" assignments from Scrolls + reduced number of dynamic scroll applications
RenderedScrollFact.cs 3.16 KiB
using MoreLinq;
using REST_JSON_API;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
using static CommunicationEvents;
public class RenderedScrollFact : FactObjectUI, IDropHandler
{
#region Serializable
public TextMeshProUGUI LabelMesh;
public GameObject HintButton;
#endregion Serializable
#region Properties
public int ID
=> Scroll.requiredFacts.FindIndex(f => f.@ref.uri == ScrollFactURI);
public Scroll Scroll
{
get => _Scroll;
set
{
_Scroll = value;
SetLabel(null);
}
}
private Scroll _Scroll;
public bool IsSet
=> ScrollFactURI != URI;
public string ScrollFactURI
{
get => _ScrollFactURI;
set
{
_ScrollFactURI = value;
SetLabel(null);
}
}
private string _ScrollFactURI;
public string ScrollFactLabel
=> LabelMesh.text;
#endregion Properties
protected override void FactUpdated()
{
_URI ??= ScrollFactURI;
Destroy(_Payload);
NewAssignmentEvent.Invoke();
if (VerboseURI)
Debug.Log(nameof(RenderedScrollFact) + " recieved Fact: " + URI);
base.FactUpdated();
}
protected override void _DeleteFactEvent(Fact fact)
=> Fact = null; // calls NewAssignmentEvent.Invoke();
protected override void _OnEnable()
{
HintAvailableEvent.AddListener(OnHintAvailable);
}
protected override void _OnDisable()
{
HintAvailableEvent.RemoveListener(OnHintAvailable);
}
public void Populate(Scroll scroll, string scroll_fact_uri)
{
_Scroll = scroll;
_ScrollFactURI = scroll_fact_uri;
_URI = ScrollFactURI;
}
private void SetLabel(string label)
{
LabelMesh.text = label ?? Scroll?.requiredFacts[ID].label ?? "Err";
}
public void OnClickHintButton()
{
ScrollFactHintEvent.Invoke(URI);
}
public void OnHintAvailable(List<string> uris)
{
HintButton.SetActive(uris.Contains(ScrollFactURI));
}
#region DropHandling
public FactObjectUI Payload
=> _Payload == null ? null : _Payload.GetComponent<FactObjectUI>();
private GameObject _Payload;
public void OnDrop(PointerEventData eventData)
{
if (eventData.pointerDrag.TryGetComponent(out FactObjectUI factObject))
SetByFactObject(factObject);
}
public void SetByFactObject(FactObjectUI fOUI)
{
Fact = fOUI.Fact;
if (VerboseURI)
Debug.Log(Fact.GetLabel(StageStatic.stage.factState) + " was dropped on "
+ gameObject.name + " " + (ID + 1) + "/" +
ScrollDetails.ParameterDisplays.Count + " label: " + ScrollFactLabel);
_Payload = // has to be: ..., Vector3.zero, Quaternion.identity => SetParent
Instantiate(fOUI.gameObject, Vector3.zero, Quaternion.identity);
_Payload.transform.SetParent(gameObject.transform, worldPositionStays: false);
_Payload.GetComponent<CanvasGroup>().blocksRaycasts = true; // Reverse drag effect
}
#endregion DropHandling
}