using System; using System.Collections; using InnerNet; using UnityEngine; public class TutorialManager : DestroyableSingleton { public PlayerControl PlayerPrefab; public Transform[] DummyLocations; public override void Awake() { base.Awake(); StatsManager.Instance = new TutorialStatsManager(); base.StartCoroutine(this.RunTutorial()); } public override void OnDestroy() { StatsManager.Instance = new StatsManager(); base.OnDestroy(); } private IEnumerator RunTutorial() { while (!ShipStatus.Instance) { yield return null; } ShipStatus.Instance.enabled = false; ShipStatus.Instance.Timer = 15f; while (!PlayerControl.LocalPlayer) { yield return null; } if (DestroyableSingleton.InstanceExists) { DestroyableSingleton.Instance.SetHowToPlay(); } PlayerControl.GameOptions = new GameOptionsData { NumImpostors = 0, DiscussionTime = 0 }; PlayerControl.LocalPlayer.RpcSetInfected(new GameData.PlayerInfo[0]); for (int i = 0; i < this.DummyLocations.Length; i++) { PlayerControl playerControl = UnityEngine.Object.Instantiate(this.PlayerPrefab); playerControl.PlayerId = (byte)GameData.Instance.GetAvailableId(); GameData.Instance.AddPlayer(playerControl); AmongUsClient.Instance.Spawn(playerControl, -2, SpawnFlags.None); playerControl.transform.position = this.DummyLocations[i].position; playerControl.GetComponent().enabled = true; playerControl.NetTransform.enabled = false; playerControl.SetName("Dummy " + (i + 1)); playerControl.SetColor((byte)((i < (int)SaveManager.BodyColor) ? i : (i + 1))); GameData.Instance.RpcSetTasks(playerControl.PlayerId, new byte[0]); } ShipStatus.Instance.Begin(); yield break; } }