UIManager.cs 5.44 KB
Newer Older
BlackAngle233's avatar
BlackAngle233 committed
1
2
3
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
BlackAngle233's avatar
BlackAngle233 committed
4
using UnityEngine.UI;
BlackAngle233's avatar
BlackAngle233 committed
5
6
7

public class UIManager : MonoBehaviour
{
BlackAngle233's avatar
BlackAngle233 committed
8
9
    List<GameObject> points;
    List<GameObject> lines;
BlackAngle233's avatar
212    
BlackAngle233 committed
10
11
12
13
    List<GameObject> constraints;

    public GameObject constraintDropdown;
    public GameObject constraintInput;
BlackAngle233's avatar
BlackAngle233 committed
14
15
16

    public Transform pointsParent;
    public Transform linesParent;
BlackAngle233's avatar
212    
BlackAngle233 committed
17
18
    public Transform constraintParent;

BlackAngle233's avatar
BlackAngle233 committed
19
20
    public GameObject button;
    public GameObject line;
BlackAngle233's avatar
212    
BlackAngle233 committed
21
    public GameObject constraint;
BlackAngle233's avatar
BlackAngle233 committed
22
23
24
25
26
27
28
29
30

    string chosen1 = "";
    string chosen2 = "";

    public CanvasManager3D CM;

    enum UIState
    {
        none,
BlackAngle233's avatar
212    
BlackAngle233 committed
31
32
        createLine,
        linelength,
BlackAngle233's avatar
BlackAngle233 committed
33
34
        lineEqual,
        lineNormal
BlackAngle233's avatar
BlackAngle233 committed
35
36
37
38
    }

    UIState state = UIState.none;
    
BlackAngle233's avatar
BlackAngle233 committed
39
40
41
    // Start is called before the first frame update
    void Start()
    {
BlackAngle233's avatar
BlackAngle233 committed
42
43
        points = new List<GameObject>();
        lines = new List<GameObject>();
BlackAngle233's avatar
212    
BlackAngle233 committed
44
        constraints = new List<GameObject>();
BlackAngle233's avatar
BlackAngle233 committed
45
46
47
48
49
    }

    // Update is called once per frame
    void Update()
    {
BlackAngle233's avatar
BlackAngle233 committed
50
51
52
53
54
55
56
57
58
59
        switch (state)
        {
            case UIState.none:
                break;
            case UIState.createLine:
                if(!chosen1.Equals("") && !chosen2.Equals(""))
                {
                    createLine();
                }
                break;
BlackAngle233's avatar
212    
BlackAngle233 committed
60
61
62
63
64
65
66
67
68
69
70
71
            case UIState.linelength:
                if (!chosen1.Equals("") && !constraintInput.GetComponent<InputField>().text.Equals(""))
                {
                    createConstraint();
                }
                break;
            case UIState.lineEqual:
                if (!chosen1.Equals("") && !chosen2.Equals(""))
                {
                    createConstraint();
                }
                break;
BlackAngle233's avatar
BlackAngle233 committed
72
73
74
75
76
77
            case UIState.lineNormal:
            if (!chosen1.Equals("") && !chosen2.Equals(""))
                {
                    createConstraint();
                }
                break;
BlackAngle233's avatar
BlackAngle233 committed
78
79
80
81
82
83
84
85
86
        }
    }

    public void createPoint()
    {
        string n = CM.createPoint();
        GameObject tmp = Instantiate(button);
        tmp.transform.SetParent(pointsParent);
        points.Add(tmp);
BlackAngle233's avatar
212    
BlackAngle233 committed
87
        tmp.transform.localPosition = new Vector3(100 + 70 * (points.Count - 1), 0, 0);
BlackAngle233's avatar
BlackAngle233 committed
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
        tmp.GetComponentInChildren<Text>().text = n;
        tmp.GetComponent<Button>().onClick.AddListener(delegate(){ chooseObject(n); });
    }

    public void createLineButton()
    {
        state = UIState.createLine;
    }

    void createLine()
    {
        string n = CM.createLine(chosen1, chosen2);
        chosen1 = "";
        chosen2 = "";
        GameObject tmp = Instantiate(line);
        tmp.transform.SetParent(linesParent);
        lines.Add(tmp);
BlackAngle233's avatar
212    
BlackAngle233 committed
105
        tmp.transform.localPosition = new Vector3(100 + 70 * (lines.Count - 1), 0, 0);
BlackAngle233's avatar
BlackAngle233 committed
106
        tmp.GetComponentInChildren<Text>().text = n;
BlackAngle233's avatar
212    
BlackAngle233 committed
107
        tmp.GetComponent<Button>().onClick.AddListener(delegate () { chooseObject(n); });
BlackAngle233's avatar
BlackAngle233 committed
108
109
110
111
112
        state = UIState.none;
    }

    public void chooseObject(string obj)
    {
BlackAngle233's avatar
BlackAngle233 committed
113
114
        if(state != UIState.none)
        {
BlackAngle233's avatar
212    
BlackAngle233 committed
115
116
117
            if (chosen1.Equals(""))
                chosen1 = obj;
            if (!chosen1.Equals("") && !chosen1.Equals(obj) && chosen2.Equals(""))
BlackAngle233's avatar
BlackAngle233 committed
118
119
                chosen2 = obj;
            Debug.Log(obj);
BlackAngle233's avatar
212    
BlackAngle233 committed
120
121
        }
        
BlackAngle233's avatar
BlackAngle233 committed
122
123
124
125
126
127
128
129
    }

    public void LineButton()
    {
        if(state == UIState.none)
        {

        }
BlackAngle233's avatar
BlackAngle233 committed
130
    }
BlackAngle233's avatar
212    
BlackAngle233 committed
131

BlackAngle233's avatar
BlackAngle233 committed
132
133
134
    public void createConstraintButton()
    {
        constraintDropdown.SetActive(true);
BlackAngle233's avatar
212    
BlackAngle233 committed
135
136
    }

BlackAngle233's avatar
BlackAngle233 committed
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
    public void constraintDropdownChange()
    {
        string text = constraintDropdown.GetComponent<Dropdown>().captionText.text;
        ConstraintType type = (ConstraintType)System.Enum.Parse(typeof(ConstraintType), text);
        switch (type)
        {
            case ConstraintType.LineLength:
                state = UIState.linelength;
                constraintInput.SetActive(true);
                break;
            case ConstraintType.LineEqual:
                state = UIState.lineEqual;
                break;
            case ConstraintType.LineNormal:
                state = UIState.lineNormal;
                break;
        }
BlackAngle233's avatar
212    
BlackAngle233 committed
154
155
    }

BlackAngle233's avatar
BlackAngle233 committed
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
    void createConstraint()
    {
        Line l1 = null;
        Line l2 = null;

        float length;

        string n = "";
        switch (state)
        {
            case UIState.linelength:
                l1 = CM.GetLine(chosen1);
                length = float.Parse(constraintInput.GetComponent<InputField>().text);
                n = CM.createConstraint(l1, length, ConstraintType.LineLength);
                constraintInput.SetActive(false);
                break;
            case UIState.lineEqual:
                l1 = CM.GetLine(chosen1);
                l2 = CM.GetLine(chosen2);
                n = CM.createConstraint(l1, l2, ConstraintType.LineEqual);
                break;
            case UIState.lineNormal:
                l1 = CM.GetLine(chosen1);
                l2 = CM.GetLine(chosen2);
                n = CM.createConstraint(l1, l2, ConstraintType.LineNormal);
                break;

BlackAngle233's avatar
212    
BlackAngle233 committed
183
184
185
186
187
188
189
190
        }
        chosen1 = "";
        chosen2 = "";
        GameObject tmp = Instantiate(line);
        tmp.transform.SetParent(constraintParent);
        constraints.Add(tmp);
        tmp.transform.localPosition = new Vector3(100 + 70 * (constraints.Count - 1), 0, 0);
        tmp.GetComponentInChildren<Text>().text = n;
BlackAngle233's avatar
BlackAngle233 committed
191
192
193
        state = UIState.none;
        constraintDropdown.GetComponent<Dropdown>().captionText.text = "None";
        constraintDropdown.SetActive(false);
BlackAngle233's avatar
212    
BlackAngle233 committed
194
    }
BlackAngle233's avatar
BlackAngle233 committed
195
}