Newer
Older
using System.Collections.Generic;
using TMPro;
using static CommunicationEvents;
public class RenderedScrollFact : FactWrapper, IDropHandler, IPointerClickHandler
public GameObject ScrollParameterObject;
#endregion Serializable
#region Properties
public int ID
{
get => _ID;
private set
{
_ID = value;
SetLabel(null);
}
}
private int _ID;
private Scroll _Scroll;
public string ScrollFactURI
=> Scroll.requiredFacts[ID].@ref.uri;
public string ScrollFactLabel
=> LabelMesh.text;
#endregion Properties
protected override void FactUpdated() { }
public void Populate(Scroll scroll, int Nr)
{
Scroll = scroll;
ID = Nr;
}
private void SetLabel(string label)
{
LabelMesh.text = label ?? Scroll?.requiredFacts[ID].label ?? "Err";
}
{
HintAvailableEvent.AddListener(OnHintAvailable);
}
private void OnDisable()
{
HintAvailableEvent.RemoveListener(OnHintAvailable);
}
public void OnClickHintButton()
{
ScrollFactHintEvent.Invoke(this.ScrollParameterObject, ScrollFactURI);
public void OnHintAvailable(List<string> uris)
{
GameObject hintButton = ScrollParameterObject.transform.GetChild(2).gameObject;
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
#region DropHandling
private FactObject RenderedFactObject;
public void OnDrop(PointerEventData eventData)
{
Fact = eventData.pointerDrag.GetComponent<FactObject>().Fact;
{
Debug.Log(Fact.Label + " was dropped on "
+ gameObject.name + " " + (ID + 1) + "/" +
ScrollDetails.ParameterDisplays.Count + " label: " + ScrollFactLabel);
}
Destroy(RenderedFactObject?.gameObject);
RenderedFactObject = // has to be , Vector3.zero, Quaternion.identity => SetParent
Instantiate(eventData.pointerDrag, Vector3.zero, Quaternion.identity)
.GetComponent<FactObject>();
RenderedFactObject.transform.SetParent(gameObject.transform, worldPositionStays: false);
RenderedFactObject.Fact = Fact;
//Set imageToChangeDefaultColor of current: Fix so that current won't take the color
//the dragged item was having during animation
RenderedFactObject.GetComponent<ImageHintAnimation>().imageToChangeDefaultColor =
eventData.pointerDrag.GetComponent<ImageHintAnimation>().imageToChangeDefaultColor;
RenderedFactObject.GetComponent<ImageHintAnimation>().ResetAnimation();
var rect = RenderedFactObject.GetComponent<RectTransform>();
rect.anchorMin = new Vector2(0.5f, 0.5f);
rect.anchorMax = new Vector2(0.5f, 0.5f);
Debug.Log("recieved Fact: " + Fact.Id);
CommunicationEvents.NewAssignmentEvent.Invoke();
}
public void OnPointerClick(PointerEventData eventData)
{
Destroy(RenderedFactObject);
Fact = null;
CommunicationEvents.NewAssignmentEvent.Invoke();
}
#endregion DropHandling