HATEBIN
>
using System; using System.Collections; using System.Collections.Generic; using System.Reflection; using UnityEngine; using UnityEngine.SceneManagement; public class OverSeer : MonoBehaviour { [SerializeField] public float CombatSpawnWeight; [SerializeField] public GameObject[] CharactersPrefabList; [SerializeField] public GameObject[] EnemyPrefabList; [SerializeField] public CharacterData[] characterDataList; public static string[] CHARACTER_NAMES = { "MC", "BroBot", "OtherMC", "AnimalCompanion" }; public GameObject[] EnemyList; public bool IsEnabled; public bool IsCombatSpawnEnabled; public bool BoolShouldSpawnCombat; public float RandomNumber; public int test; public bool firstLoad; public int DistanceCounter; public bool firstScene = false; public CharacterData testData; [SerializeField] public Character[] charactersList; public Character[] CharactersList { get { if (charactersList == null) { charactersList = new Character[4]; } return charactersList; } } private static OverSeer instance; public static OverSeer Instance { get { if (instance == null) instance = FindObjectOfType(typeof(OverSeer)) as OverSeer; return instance; } set { instance = value; } } private void Awake() { DontDestroyOnLoad(this); if (instance == null) { instance = this; } else Destroy(this); } private void Start() { Debug.Log("in OS Start"); int index = 0; charactersList = new Character[4]; RandomNumber = UnityEngine.Random.Range(64, 255); if (!firstLoad) { characterDataList = new CharacterData[4]; for (int i = 0; i < charactersList.Length; i++) { characterDataList[i] = new CharacterData(); characterDataList[i].CharacterName = CHARACTER_NAMES[i]; Skill DoubleAttack = new Skill("Double Attack", TypeOfSkill.ATTACK_SINGLE, true, 2, 1.5f); characterDataList[i].ListOfActiveSkills.Add(DoubleAttack); characterDataList[i].MaxHealth = 100; characterDataList[i].CurrentHealth = 100; } foreach (var character in CharactersPrefabList) { GameObject go = Instantiate(character); charactersList[index] = go.GetComponent
(); charactersList[index].gameObject.SetActive(false); charactersList[index].Data = characterDataList[index]; index++; } firstLoad = true; } } private void OnEnable() { SceneManager.sceneLoaded += OnSceneLoaded; } private void OnDisable() { SceneManager.sceneLoaded -= OnSceneLoaded; } private void OnSceneLoaded(Scene scene, LoadSceneMode mode) { if (firstScene) { int index = 0; foreach (var character in CharactersPrefabList) { GameObject go = Instantiate(character); charactersList[index] = go.GetComponent
(); charactersList[index].gameObject.SetActive(false); charactersList[index].Data = characterDataList[index]; index++; } GameObject GO = GameObject.FindGameObjectWithTag("CombatSpawnArea"); if (GO == null) { IsEnabled = false; } else { IsEnabled = true; } } else { firstScene = true; } } private void Update() { if (IsEnabled) { if (IsCombatSpawnEnabled) { if (BoolShouldSpawnCombat = ShouldSpawnCombat()) { SpawnCombat(); } else { // add to counters } } } } private bool ShouldSpawnCombat() { if (DistanceCounter == 0) { return false; } else { RandomNumber = RandomNumber - (DistanceCounter * CombatSpawnWeight); } if (RandomNumber <= 0) { RandomNumber = UnityEngine.Random.Range(64, 255); return true; } else { return false; } } private void SpawnCombat() { ES3AutoSaveMgr.Current.Save(); SceneManagement.Instance.ChangeSceneByInt(2); } public void ToggleCombatSpawn() { this.IsCombatSpawnEnabled = !IsCombatSpawnEnabled; } }