diff options
author | chai <chaifix@163.com> | 2020-12-30 20:59:04 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2020-12-30 20:59:04 +0800 |
commit | e9ea621b93fbb58d9edfca8375918791637bbd52 (patch) | |
tree | 19ce3b1c1f2d51eda6878c9d0f2c9edc27f13650 /Client/Assembly-CSharp/TaskAddButton.cs |
+init
Diffstat (limited to 'Client/Assembly-CSharp/TaskAddButton.cs')
-rw-r--r-- | Client/Assembly-CSharp/TaskAddButton.cs | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/Client/Assembly-CSharp/TaskAddButton.cs b/Client/Assembly-CSharp/TaskAddButton.cs new file mode 100644 index 0000000..60e54fc --- /dev/null +++ b/Client/Assembly-CSharp/TaskAddButton.cs @@ -0,0 +1,109 @@ +using System; +using UnityEngine; + +public class TaskAddButton : MonoBehaviour +{ + public TextRenderer Text; + + public SpriteRenderer Overlay; + + public Sprite CheckImage; + + public Sprite ExImage; + + public PlayerTask MyTask; + + public bool ImpostorTask; + + public void Start() + { + if (this.ImpostorTask) + { + GameData.PlayerInfo data = PlayerControl.LocalPlayer.Data; + this.Overlay.enabled = data.IsImpostor; + this.Overlay.sprite = this.CheckImage; + return; + } + PlayerTask playerTask = this.FindTaskByType(); + if (playerTask) + { + this.Overlay.enabled = true; + this.Overlay.sprite = (playerTask.IsComplete ? this.CheckImage : this.ExImage); + return; + } + this.Overlay.enabled = false; + } + + public void AddTask() + { + if (this.ImpostorTask) + { + GameData.PlayerInfo data = PlayerControl.LocalPlayer.Data; + if (data.IsImpostor) + { + PlayerControl.LocalPlayer.RemoveInfected(); + this.Overlay.enabled = false; + return; + } + PlayerControl.LocalPlayer.RpcSetInfected(new GameData.PlayerInfo[] + { + data + }); + this.Overlay.enabled = true; + return; + } + else + { + PlayerTask playerTask = this.FindTaskByType(); + if (!playerTask) + { + PlayerTask playerTask2 = UnityEngine.Object.Instantiate<PlayerTask>(this.MyTask, PlayerControl.LocalPlayer.transform); + PlayerTask playerTask3 = playerTask2; + PlayerControl localPlayer = PlayerControl.LocalPlayer; + uint taskIdCount = localPlayer.TaskIdCount; + localPlayer.TaskIdCount = taskIdCount + 1U; + playerTask3.Id = taskIdCount; + playerTask2.Owner = PlayerControl.LocalPlayer; + playerTask2.Initialize(); + PlayerControl.LocalPlayer.myTasks.Add(playerTask2); + GameData.Instance.TutOnlyAddTask(PlayerControl.LocalPlayer.PlayerId, playerTask2.Id); + this.Overlay.sprite = this.ExImage; + this.Overlay.enabled = true; + return; + } + PlayerControl.LocalPlayer.RemoveTask(playerTask); + this.Overlay.enabled = false; + return; + } + } + + private PlayerTask FindTaskByType() + { + for (int i = PlayerControl.LocalPlayer.myTasks.Count - 1; i > -1; i--) + { + PlayerTask playerTask = PlayerControl.LocalPlayer.myTasks[i]; + if (playerTask.TaskType == this.MyTask.TaskType) + { + if (playerTask.TaskType == TaskTypes.DivertPower) + { + if (((DivertPowerTask)playerTask).TargetSystem == ((DivertPowerTask)this.MyTask).TargetSystem) + { + return playerTask; + } + } + else + { + if (playerTask.TaskType != TaskTypes.UploadData) + { + return playerTask; + } + if (playerTask.StartAt == this.MyTask.StartAt) + { + return playerTask; + } + } + } + } + return null; + } +} |