-
Notifications
You must be signed in to change notification settings - Fork 0
/
TankUiManager.cs
120 lines (101 loc) · 3.24 KB
/
TankUiManager.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
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
using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class TankUiManager : MonoBehaviour
{
private bool switcher = true;
[SerializeField] private Tank tank;
public GameObject mainCanvas;
public GameObject holeCanvas;
public Slider holeHeight;
public Slider tankHeight;
public Slider diameterHole;
public TextMeshProUGUI tankHeightText;
private Hole holeComp;
public float newHeight = 0;
public GameObject backGroundTank;
public TextMeshProUGUI holeDiametertext;
public TextMeshProUGUI timeEmptyText;
public TextMeshProUGUI outputSpeedText;
public void Start()
{
SwitchUI();
UIUpdate();
SwitchUI();
}
public void CreateHole()
{
tank.AddHole(holeComp);
if (holeComp) Destroy(holeComp.gameObject);
holeComp = tank.CreateHole();
holeHeight.value = 0;
}
public void Update()
{
UIUpdate();
}
private void UIUpdate()
{
float minutes = Mathf.Floor(tank.timeEmpty / 60f);
float seconds = (tank.timeEmpty % 60f);
timeEmptyText.text = string.Format("Empty in {0}min {1}s", minutes.ToString("0"), seconds.ToString("0"));
if (tank.holes.Count > 0)
{
float speed = tank.holes[0].GetComponent<Hole>().speed;
outputSpeedText.text = string.Format("Output speed {0}m/s", speed.ToString("0.0"));
}
if (holeComp)
{
Vector3 tankPos = tank.transform.position;
Vector3 tankScale = tank.waterLevel.transform.localScale;
newHeight = Mathf.Lerp(tankPos.y - tankScale.y / 2,
tankPos.y + tankScale.y / 2, holeHeight.value);
holeComp.transform.position = new Vector3(holeComp.transform.position.x,
newHeight + tankScale.y/2, holeComp.transform.position.z);
}
if (!switcher)
{
tank.size.y = Mathf.Round(tankHeight.value * 100f) / 100f;
tank.waterHeight = tank.size.y;
tank.maxWaterHeight = tank.waterHeight;
tankHeightText.text = tank.size.y.ToString();
holeComp.diameter = Mathf.Round(diameterHole.value * 100f) / 100f;
holeDiametertext.text = holeComp.diameter.ToString();
}
}
public void SwitchUI()
{
mainCanvas.SetActive(!switcher);
holeCanvas.SetActive(switcher);
if (switcher)
{
holeComp = tank.CreateHole();
foreach (GameObject holeGO in tank.holes)
{
Hole hole = holeGO.GetComponent<Hole>();
hole.isPlaying = false;
hole.particles.Stop();
}
}
else
{
foreach (GameObject holeGO in tank.holes)
{
Hole hole = holeGO.GetComponent<Hole>();
hole.isPlaying = true;
hole.particles.Play();
}
tank.timerNotFull = 0;
if (holeComp)
Destroy(holeComp.gameObject);
}
switcher = !switcher;
}
public void FillTank()
{
tank.shouldFillTank = true;
}
}