From e9ea621b93fbb58d9edfca8375918791637bbd52 Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 30 Dec 2020 20:59:04 +0800 Subject: +init --- Client/Assembly-CSharp/TaskAdderGame.cs | 168 ++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 Client/Assembly-CSharp/TaskAdderGame.cs (limited to 'Client/Assembly-CSharp/TaskAdderGame.cs') diff --git a/Client/Assembly-CSharp/TaskAdderGame.cs b/Client/Assembly-CSharp/TaskAdderGame.cs new file mode 100644 index 0000000..b40a715 --- /dev/null +++ b/Client/Assembly-CSharp/TaskAdderGame.cs @@ -0,0 +1,168 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using UnityEngine; + +public class TaskAdderGame : Minigame +{ + public TextRenderer PathText; + + public TaskFolder RootFolderPrefab; + + public TaskAddButton TaskPrefab; + + public Transform TaskParent; + + public List Heirarchy = new List(); + + public List ActiveItems = new List(); + + public TaskAddButton InfectedButton; + + public float folderWidth; + + public float fileWidth; + + public float lineWidth; + + public float lineHeight; + + private TaskFolder Root; + + public override void Begin(PlayerTask t) + { + base.Begin(t); + this.Root = UnityEngine.Object.Instantiate(this.RootFolderPrefab, base.transform); + this.Root.gameObject.SetActive(false); + Dictionary folders = new Dictionary(); + this.PopulateRoot(this.Root, folders, ShipStatus.Instance.CommonTasks); + this.PopulateRoot(this.Root, folders, ShipStatus.Instance.LongTasks); + this.PopulateRoot(this.Root, folders, ShipStatus.Instance.NormalTasks); + this.Root.SubFolders = (from f in this.Root.SubFolders + orderby f.FolderName + select f).ToList(); + this.ShowFolder(this.Root); + } + + private void PopulateRoot(TaskFolder rootFolder, Dictionary folders, NormalPlayerTask[] taskList) + { + foreach (NormalPlayerTask normalPlayerTask in taskList) + { + SystemTypes systemTypes = normalPlayerTask.StartAt; + if (normalPlayerTask is DivertPowerTask) + { + systemTypes = ((DivertPowerTask)normalPlayerTask).TargetSystem; + } + if (systemTypes == SystemTypes.LowerEngine) + { + systemTypes = SystemTypes.UpperEngine; + } + TaskFolder taskFolder; + if (!folders.TryGetValue(systemTypes, out taskFolder)) + { + taskFolder = (folders[systemTypes] = UnityEngine.Object.Instantiate(this.RootFolderPrefab, base.transform)); + taskFolder.gameObject.SetActive(false); + if (systemTypes == SystemTypes.UpperEngine) + { + taskFolder.FolderName = "Engines"; + } + else + { + taskFolder.FolderName = DestroyableSingleton.Instance.GetString(systemTypes); + } + rootFolder.SubFolders.Add(taskFolder); + } + taskFolder.Children.Add(normalPlayerTask); + } + } + + public void GoToRoot() + { + this.Heirarchy.Clear(); + this.ShowFolder(this.Root); + } + + public void GoUpOne() + { + if (this.Heirarchy.Count > 1) + { + TaskFolder taskFolder = this.Heirarchy[this.Heirarchy.Count - 2]; + this.Heirarchy.RemoveAt(this.Heirarchy.Count - 1); + this.Heirarchy.RemoveAt(this.Heirarchy.Count - 1); + this.ShowFolder(taskFolder); + } + } + + public void ShowFolder(TaskFolder taskFolder) + { + StringBuilder stringBuilder = new StringBuilder(64); + this.Heirarchy.Add(taskFolder); + for (int i = 0; i < this.Heirarchy.Count; i++) + { + stringBuilder.Append(this.Heirarchy[i].FolderName); + stringBuilder.Append("\\"); + } + this.PathText.Text = stringBuilder.ToString(); + for (int j = 0; j < this.ActiveItems.Count; j++) + { + UnityEngine.Object.Destroy(this.ActiveItems[j].gameObject); + } + this.ActiveItems.Clear(); + float num = 0f; + float num2 = 0f; + for (int k = 0; k < taskFolder.SubFolders.Count; k++) + { + TaskFolder taskFolder2 = UnityEngine.Object.Instantiate(taskFolder.SubFolders[k], this.TaskParent); + taskFolder2.gameObject.SetActive(true); + taskFolder2.Parent = this; + taskFolder2.transform.localPosition = new Vector3(num, num2, 0f); + taskFolder2.transform.localScale = Vector3.one; + num += this.folderWidth; + if (num > this.lineWidth) + { + num = 0f; + num2 += this.lineHeight; + } + this.ActiveItems.Add(taskFolder2.transform); + } + List list = (from t in taskFolder.Children + orderby t.TaskType.ToString() + select t).ToList(); + for (int l = 0; l < list.Count; l++) + { + TaskAddButton taskAddButton = UnityEngine.Object.Instantiate(this.TaskPrefab); + taskAddButton.MyTask = list[l]; + if (taskAddButton.MyTask.TaskType == TaskTypes.DivertPower) + { + SystemTypes targetSystem = ((DivertPowerTask)taskAddButton.MyTask).TargetSystem; + taskAddButton.Text.Text = DestroyableSingleton.Instance.GetString(StringNames.DivertPowerTo, Array.Empty()) + " " + DestroyableSingleton.Instance.GetString(targetSystem); + } + else + { + taskAddButton.Text.Text = DestroyableSingleton.Instance.GetString(taskAddButton.MyTask.TaskType); + } + this.AddFileAsChild(taskAddButton, ref num, ref num2); + } + if (this.Heirarchy.Count == 1) + { + TaskAddButton taskAddButton2 = UnityEngine.Object.Instantiate(this.InfectedButton); + taskAddButton2.Text.Text = "Be_Impostor.exe"; + this.AddFileAsChild(taskAddButton2, ref num, ref num2); + } + } + + private void AddFileAsChild(TaskAddButton item, ref float xCursor, ref float yCursor) + { + item.transform.SetParent(this.TaskParent); + item.transform.localPosition = new Vector3(xCursor, yCursor, 0f); + item.transform.localScale = Vector3.one; + xCursor += this.fileWidth; + if (xCursor > this.lineWidth) + { + xCursor = 0f; + yCursor -= this.lineHeight; + } + this.ActiveItems.Add(item.transform); + } +} -- cgit v1.1-26-g67d0