Skip to content
Snippets Groups Projects
DisplayFacts.cs 2.34 KiB
Newer Older
  • Learn to ignore specific revisions
  • using System.Collections.Generic;
    
    BenniHome's avatar
    BenniHome committed
    using UnityEngine;
    
    using TMPro;
    
    using static CommunicationEvents;
    
    BenniHome's avatar
    BenniHome committed
    
    public class DisplayFacts : MonoBehaviour
    {
    
        public Dictionary<string, GameObject> displayedFacts = new Dictionary<string, GameObject>();
    
    BenniHome's avatar
    BenniHome committed
    
    
        public GameObject prefab_Point;
        public GameObject prefab_Distance;
        public GameObject prefab_Angle;
        public GameObject prefab_Default;
    
        public GameObject prefab_OnLine;
        public GameObject prefab_Line;
    
    BenniHome's avatar
    BenniHome committed
    
    
    John Schihada's avatar
    John Schihada committed
        public Dictionary<string, GameObject> prefabDictionary;
    
    
    BenniHome's avatar
    BenniHome committed
        public int x_Start;
        public int y_Start;
        public int X_Pacece_Between_Items;
        public int y_Pacece_Between_Items;
        public int number_of_Column;
    
    
        //Start is called before the first frame update
    
    BenniHome's avatar
    BenniHome committed
        void Start()
        {
    
            var rect = GetComponent<RectTransform>();
            x_Start = (int)(rect.rect.x + X_Pacece_Between_Items * .5f);
            y_Start = (int)(-rect.rect.y - y_Pacece_Between_Items * .5f);//);
            number_of_Column = Mathf.Max(1, (int)(rect.rect.width / prefab_Point.GetComponent<RectTransform>().rect.width) - 1);
    
    
            AddFactEvent.AddListener(AddFact);
            AnimateExistingFactEvent.AddListener(AnimateFact);
    
    John Schihada's avatar
    John Schihada committed
    
             prefabDictionary = new Dictionary<string, GameObject>() {
                {"PointFact", prefab_Point},
                {"LineFact", prefab_Distance},
                {"RayFact", prefab_Line},
                {"AngleFact", prefab_Angle},
                {"OnLineFact", prefab_OnLine}
            };
    
    BenniHome's avatar
    BenniHome committed
        }
    
    
        public void AddFact(Fact fact) {
            int fid = fact.Id;
            var obj = CreateDisplay(transform, fact);
            obj.GetComponent<RectTransform>().localPosition = GetPosition(fid);
            displayedFacts.Add(fact.backendURI, obj);
    
    BenniHome's avatar
    BenniHome committed
        }
    
    
        public void AnimateFact(Fact fact) {
            var factIcon = displayedFacts[fact.backendURI];
    
    John Schihada's avatar
    John Schihada committed
            factIcon.GetComponentInChildren<ImageHintAnimation>().AnimationTrigger();
    
    BenniHome's avatar
    BenniHome committed
        }
    
    Benjamin Bösl's avatar
    Benjamin Bösl committed
        string getLetter(int Id) {
            return ((Char)(64 + Id + 1)).ToString();
        }
    
    BenniHome's avatar
    BenniHome committed
    
    
        private GameObject CreateDisplay(Transform transform, Fact fact)
    
    BenniHome's avatar
    BenniHome committed
        {
    
    John Schihada's avatar
    John Schihada committed
            return fact.instantiateRepresentation(prefabDictionary[fact.GetType().Name], transform);
    
    
        public Vector3 GetPosition(int i)
        {
            return new Vector3(x_Start + (X_Pacece_Between_Items * (i % number_of_Column)), y_Start + (-y_Pacece_Between_Items * (i / number_of_Column)), 0f);
        }
    
    
    BenniHome's avatar
    BenniHome committed
    }