using System; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; using UnityEngine.Events; using exprivia.ui; public class VariablesViewDelegate : MonoBehaviour, IDataViewDelegate { public GameObject itemPrefab; public Color selectionColor = Color.cyan; public Text selVarDescText; private Color unselectionColor = Color.black; private Dictionary selection = new Dictionary(); //bool isFirst = true; public IDataView variablesDataView; public int selectedVariableIndex = -1; [Serializable] public class VariableSelectionEvent : UnityEvent { } public VariableSelectionEvent OnVariableSelected = new VariableSelectionEvent(); public void LoadViewItem(IDataSourceType data, IDataViewItem item) { } public void UnloadViewItem(IDataSourceType data, IDataViewItem item) { } public void OnItemAdded(IDataSourceType data, IDataViewItem item) { if ((data as VariablesDataSourceType).initiallySelected) { variablesDataView.SelectItem(item); } } public void OnSelectionChanged(List selection) { } public void OnItemRemoved(IDataSourceType data, IDataViewItem item) { } public void OnItemSelected(IDataSourceType data, IDataViewItem item) { item.GetGameObject().GetComponent().color = selectionColor; string id = data.UniqueId(); if (!selection.ContainsKey(id)) selection.Add(id, item); VariablesViewItem vi = item as VariablesViewItem; selVarDescText.text = vi.variableDescription; selectedVariableIndex = vi.variableIndex; OnVariableSelected.Invoke(selectedVariableIndex); } public void OnItemUnselected(IDataSourceType data, IDataViewItem item) { item.GetGameObject().GetComponent().color = unselectionColor; selection.Remove(data.UniqueId()); } public IDataViewItem CreateViewItem(IDataSourceType data) { GameObject item = Instantiate(itemPrefab); unselectionColor = item.GetComponent().color; VariablesViewItem viewItem = exprivia.Utils.GetOrAddComponent(item); VariablesDataSourceType variableData = (VariablesDataSourceType)data; viewItem.Setup(variableData); return viewItem; } }