using System; using System.Linq; using System.Text; using UnityEngine; public class ReactorTask : SabotageTask { public override int TaskStep { get { return this.reactor.UserCount; } } public override bool IsComplete { get { return this.isComplete; } } private bool isComplete; private ReactorSystemType reactor; private bool even; public override void Initialize() { ShipStatus instance = ShipStatus.Instance; this.reactor = (ReactorSystemType)instance.Systems[SystemTypes.Reactor]; ((ReactorShipRoom)instance.AllRooms.First((ShipRoom r) => r.RoomId == SystemTypes.Reactor)).StartMeltdown(); base.SetupArrows(); } private void FixedUpdate() { if (this.isComplete) { return; } if (!this.reactor.IsActive) { this.Complete(); } } public override bool ValidConsole(global::Console console) { return console.TaskTypes.Contains(TaskTypes.ResetReactor); } public override void OnRemove() { } public override void Complete() { this.isComplete = true; PlayerControl.LocalPlayer.RemoveTask(this); if (this.didContribute) { StatsManager instance = StatsManager.Instance; uint sabsFixed = instance.SabsFixed; instance.SabsFixed = sabsFixed + 1U; } } public override void AppendTaskText(StringBuilder sb) { this.even = !this.even; Color color = this.even ? Color.yellow : Color.red; sb.Append(color.ToTextColor()); sb.Append(DestroyableSingleton.Instance.GetString(TaskTypes.ResetReactor)); sb.Append(" "); sb.Append((int)this.reactor.Countdown); sb.AppendLine(string.Format(" ({0}/{1})[]", this.reactor.UserCount, 2)); for (int i = 0; i < this.Arrows.Length; i++) { this.Arrows[i].image.color = color; } } }