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.
157 lines
5.0 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|