Aimbot-ParallelEnv/Assets/Script/InGame/EnvironmentUIControl.cs
Koha9 9b2ba7fb46 V2.5 Change reward function
Add chart Toggle to turn on reward chart real time in game.
Add enemy num changer, now can change enemy num in game.
Change facing to enemy reward function, while facing center line far from enemy will not get reward any more.
2022-12-10 09:11:42 +09:00

157 lines
5.0 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
using XCharts.Runtime;
public class EnvironmentUIControl : MonoBehaviour
{
public GameObject TargetControllerObj;
public GameObject ParameterContainerObj;
public GameObject GroundCanvasObj;
public GameObject chartObj;
public GameObject HUDObj;
public TextMeshProUGUI remainTimeText;
public TextMeshProUGUI targetTypeText;
public TextMeshProUGUI winLoseText;
public float resultTimeout = 1f;
public GameObject gaugeImgObj;
private LineChart realTimeRewardChart = null;
private TargetController targetController;
private ParameterContainer paramContainer;
private HUDController hudController;
private Image gaugeImg;
private float overTime = 0f;
private int step = 0;
private bool resultActive = false;
// Start is called before the first frame update
void Start()
{
targetController = TargetControllerObj.GetComponent<TargetController>();
paramContainer = ParameterContainerObj.GetComponent<ParameterContainer>();
gaugeImg = gaugeImgObj.GetComponent<Image>();
hudController = HUDObj.GetComponent<HUDController>();
}
// Update is called once per frame
void Update()
{
int remainTime = Convert.ToInt32(targetController.startTime + paramContainer.timeLimit - Time.time);
remainTimeText.text = "RemainTime:" + remainTime.ToString();
if (resultActive && Time.time - overTime >= resultTimeout)
{
// while result is active and show time over timeOut
// clear the result
Debug.Log("clear result");
winLoseText.text = "";
winLoseText.color = Color.white;
resultActive = false;
}
}
public void updateChart(float reward)
{
if (hudController.chartOn && realTimeRewardChart == null)
{
initChart();
}
step += 1;
realTimeRewardChart.AddXAxisData(Convert.ToString(step));
realTimeRewardChart.AddData(0, reward);
}
public void initChart()
{
if (hudController.chartOn && realTimeRewardChart == null)
{
Vector3 chartPos = new Vector3(-210f, 90f, 0f) * GroundCanvasObj.transform.localScale.x;
realTimeRewardChart = chartObj.AddComponent<LineChart>();
realTimeRewardChart.Init();
}
realTimeRewardChart.RemoveData();
realTimeRewardChart.AddSerie<Line>("Rewards");
}
public void removeChart()
{
GameObject.Destroy(realTimeRewardChart);
realTimeRewardChart = null;
}
// show result in UI
public void showResult(int resultState)
{
switch (resultState)
{
case (int)TargetController.EndType.Win:
//Win
Debug.Log("win");
winLoseText.text = "Win";
winLoseText.color = Color.green;
overTime = Time.time;
resultActive = true;
break;
case (int)TargetController.EndType.Lose:
//lose
Debug.Log("lose");
winLoseText.text = "Lose";
winLoseText.color = Color.red;
overTime = Time.time;
resultActive = true;
break;
default:
break;
}
}
// update firebases target state gauge
public void updateTargetGauge(float firebasesBelong, float belongMaxPoint)
{
if (firebasesBelong >= 0)
{
gaugeImgObj.transform.localPosition = new Vector3(25f, 0, 0);
gaugeImg.color = Color.blue;
gaugeImg.fillOrigin = 0;
gaugeImg.fillAmount = firebasesBelong / belongMaxPoint;
}
else
{
gaugeImgObj.transform.localPosition = new Vector3(-25f, 0, 0);
gaugeImg.color = Color.red;
gaugeImg.fillOrigin = 1;
gaugeImg.fillAmount = -firebasesBelong / belongMaxPoint;
}
}
// update targetType text
public void updateTargetType(int targetInt)
{
switch (targetInt)
{
case (int)TargetController.Targets.Go:
targetTypeText.text = "GOTO";
targetTypeText.color = Color.blue;
break;
case (int)TargetController.Targets.Attack:
targetTypeText.text = "Attack!";
targetTypeText.color = Color.red;
break;
case (int)TargetController.Targets.Defence:
targetTypeText.text = "Defence";
targetTypeText.color = Color.green;
break;
case (int)TargetController.Targets.Free:
targetTypeText.text = "Free";
targetTypeText.color = Color.yellow;
break;
default:
targetTypeText.text = "TYPE ERROR";
targetTypeText.color = Color.red;
break;
}
}
}