Tanoda
OptimizerInitializer.cs
Go to the documentation of this file.
1using System.Collections;
2using System.Collections.Generic;
3using System.Linq;
4using UnityEngine;
5
6public class OptimizerInitializer : MonoBehaviour
7{
8 public static OptimizerInitializer Instance { get; private set; }
9 // Start is called before the first frame update
10 void Start()
11 {
12 Instance = this;
13 }
14
15 // Update is called once per frame
16 void Update()
17 {
18
19 }
20
21 public static void ShowOptimizer(UserManager.Training lastTraining)
22 {
23 var optimizationHelper = FindObjectOfType<OptimizationHelper>(true);
24 optimizationHelper.OptimizeWindow.SetActive(true);
25 var actions = lastTraining.Actions.OrderByDescending(x => x.timeSpent).ToList();
26 foreach (var action in actions)
27 {
28 if (!Blacklisted(action.actionType))
29 {
30 var actionObject = Controller.Instance.GetActionById(action.actionName);
31
32 GameObject cachedGO = null;
33 if (actionObject is ToolAction ta) cachedGO = ta.GetToolObject();
34 if (actionObject is PositionAction pa) cachedGO = pa.cachedGO;
35 //if (actionObject is HoldToolAction hta) cachedGO = hta.GetToolObject();
36
37 var newRow = Instantiate(optimizationHelper, optimizationHelper.transform.parent);
38 newRow.gameObject.SetActive(true);
39 if (cachedGO) newRow.actionName.text = action.actionType + "\n" + cachedGO.name;
40 else newRow.actionName.text = action.actionType;
41
42 newRow.time.text = Mathf.FloorToInt(action.timeSpent / 60).ToString("D2") + ":" + (action.timeSpent % 60).ToString("00.00").Replace(',', '.');
43 newRow.GetComponentInChildren<ShowSelection>(true).actionName = action.actionName;
44 }
45
46 }
47 if (optimizationHelper.transform.parent.childCount < 4)
48 {
49 var children = optimizationHelper.transform.parent.GetComponentsInChildren<OptimizationHelper>(true);
50 foreach (var child in children)
51 {
52 child.actionName.color = Color.red;
53 child.time.color = Color.red;
54 }
55 }
56 else
57 {
58 var children = optimizationHelper.transform.parent.GetComponentsInChildren<OptimizationHelper>(true);
59 children[1].actionName.color = Color.red;
60 children[1].time.color = Color.red;
61 children[2].actionName.color = Color.red;
62 children[2].time.color = Color.red;
63 children[3].actionName.color = Color.red;
64 children[3].time.color = Color.red;
65 }
66 }
67 private static bool Blacklisted(string action)
68 {
69 return action.Contains("Waiter") || action.Contains("GameObject") || action.Contains("Weld") ||
70 action.Contains("Led") || action.Contains("Start") || action.Contains("Sound") ||
71 action.Contains("Move") || action.Contains("Belt") || action.Contains("ShowHide") || action.Contains("Deactivate") || action.Contains("Script") || action.Contains("Voice") || action.Contains("Collector") || action.Contains("Finish");
72 }
73
74}
UnityEngine.Color Color
Definition: TestScript.cs:32
ActionObject GetActionById(string id)
Definition: Controller.cs:950
static Controller Instance
Definition: Controller.cs:16
static OptimizerInitializer Instance
static void ShowOptimizer(UserManager.Training lastTraining)