public void SetLevelInfo() { int currentLevel = Master.LevelData.currentLevel; currentLevelData = Master.LevelData.GetLevelDataByIndex(Master.LevelData.currentLevel); totalWaves = currentLevelData.ListWaves.Count; totalSequences = 0; //get total sequence for (int i = 0; i < currentLevelData.ListWaves.Count; i++) { totalSequences += currentLevelData.ListWaves[i].ListSequences.Count; } totalSequenceIndex = 0; Master.Lane.SetLane(currentLevelData.NumberOfLanes, currentLevelData.NumberOfPositionsCanBuildUnitInLane); Master.Gameplay.gold = currentLevelData.InitialGold; }
void OnGUI() { if (!isShowWindow) { isShowWindow = true; LoadLevelData(); } float space = 15; GUILayout.Space(space * 0.5f); EditorGUILayout.LabelField("Level Data Manager!"); GUILayout.Space(space * 0.5f); EditorGUILayout.BeginHorizontal(); if (GUILayout.Button("Add Level")) { LevelDataController.LevelData newLevelData = new LevelDataController.LevelData(); newLevelData.LevelIndex = levelDataController.levelDataCollection.ListLevelData.Count + 1; levelDataController.levelDataCollection.ListLevelData.Add(newLevelData); } if (GUILayout.Button("Save Data")) { SaveLevelData(); } EditorGUILayout.EndHorizontal(); /////////////Total Level///////////////////// GUILayout.Space(10); EditorGUILayout.LabelField("Total Level: " + levelDataController.levelDataCollection.ListLevelData.Count.ToString(), EditorStyles.boldLabel); GUILayout.Space(10); EditorGUILayout.BeginVertical(); GUILayoutOption[] optionsScrollView = new GUILayoutOption[] { GUILayout.Width(450), GUILayout.Height(490) }; scrollPos = EditorGUILayout.BeginScrollView(scrollPos, optionsScrollView); for (int i = 0; i < levelDataController.levelDataCollection.ListLevelData.Count; i++) { LevelDataController.LevelData levelData = levelDataController.levelDataCollection.ListLevelData[i]; /////////////Level///////////////////// listLevelsSelect[i] = EditorGUILayout.Foldout(listLevelsSelect[i], "Level " + levelDataController.levelDataCollection.ListLevelData[i].LevelIndex); GUILayout.Space(space * 0.3f); if (listLevelsSelect[i]) { GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.MaxWidth(500) }; EditorGUILayout.BeginHorizontal(); GUILayout.Space(space); levelDataController.levelDataCollection.ListLevelData[i].InitialGold = int.Parse(EditorGUILayout.TextField("Initial Gold", levelDataController.levelDataCollection.ListLevelData[i].InitialGold.ToString(), options)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space); levelDataController.levelDataCollection.ListLevelData[i].NumberOfLanes = int.Parse(EditorGUILayout.TextField("Number of lane", levelDataController.levelDataCollection.ListLevelData[i].NumberOfLanes.ToString(), options)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space); levelDataController.levelDataCollection.ListLevelData[i].NumberOfPositionsCanBuildUnitInLane = int.Parse(EditorGUILayout.TextField("Number of position can build Unit in lane", levelDataController.levelDataCollection.ListLevelData[i].NumberOfPositionsCanBuildUnitInLane.ToString(), options)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space); levelDataController.levelDataCollection.ListLevelData[i].NumberOfUnitsAllowedDead = int.Parse(EditorGUILayout.TextField("Number of Units Allowed Dead", levelDataController.levelDataCollection.ListLevelData[i].NumberOfUnitsAllowedDead.ToString(), options)); EditorGUILayout.EndHorizontal(); /////////////Waves///////////////////// EditorGUILayout.BeginHorizontal(); GUILayout.Space(space); listWavesSelectOfLevel[i] = EditorGUILayout.Foldout(listWavesSelectOfLevel[i], "Waves"); EditorGUILayout.EndHorizontal(); if (listWavesSelectOfLevel[i]) { for (int y = 0; y < levelDataController.levelDataCollection.ListLevelData[i].ListWaves.Count; y++) { //LevelDataController.Waves wave = levelData.ListWaves[y]; GUILayout.Space(space * 0.3f); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 2); listWavesSelect[y] = EditorGUILayout.Foldout(listWavesSelect[y], "Wave " + y); EditorGUILayout.EndHorizontal(); if (listWavesSelect[y]) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 4); listSequencesSelectOfWave[y] = EditorGUILayout.Foldout(listSequencesSelectOfWave[y], "Sequences"); EditorGUILayout.EndHorizontal(); if (listSequencesSelectOfWave[y]) { /////////////List Sequences///////////////////// for (int z = 0; z < levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences.Count; z++) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 6); listSequencesSelect[z] = EditorGUILayout.Foldout(listSequencesSelect[z], "Sequence " + z); EditorGUILayout.EndHorizontal(); if (listSequencesSelect[z]) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 8); levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].Time = int.Parse(EditorGUILayout.TextField("Time (second)", levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].Time.ToString(), options)); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 8); listEnemiesSelectOfSequence[z] = EditorGUILayout.Foldout(listEnemiesSelectOfSequence[z], "Enemies"); EditorGUILayout.EndHorizontal(); if (listEnemiesSelectOfSequence[z]) { for (int x = 0; x < levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence.Count; x++) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 10); listEnemiesSelect[x] = EditorGUILayout.Foldout(listEnemiesSelect[x], "Enemy " + x); EditorGUILayout.EndHorizontal(); if (listEnemiesSelect[x]) { EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 12); levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x].EnemyID = EditorGUILayout.TextField("Enemy ID", levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x].EnemyID.ToString(), options); EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 12); levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x].Lane = int.Parse(EditorGUILayout.TextField("At Lane", levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x].Lane.ToString(), options)); EditorGUILayout.EndHorizontal(); //button GUILayout.Space(space * 0.3f); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 12); if (GUILayout.Button("Remove Enemy")) { levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence.Remove(levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence[x]); } EditorGUILayout.EndHorizontal(); } } //button GUILayout.Space(space * 0.3f); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 10); if (GUILayout.Button("Add Enemy")) { LevelDataController.EnemyAtSequence enemyAtSequence = new LevelDataController.EnemyAtSequence(); enemyAtSequence.EnemyID = ""; enemyAtSequence.Lane = 0; levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z].ListEnemyAtSequence.Add(enemyAtSequence); } EditorGUILayout.EndHorizontal(); } //button GUILayout.Space(space * 0.3f); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 8); if (GUILayout.Button("Remove Sequence")) { levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences.Remove(levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences[z]); } EditorGUILayout.EndHorizontal(); } } //button GUILayout.Space(space * 0.3f); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 6); if (GUILayout.Button("Add Sequence")) { LevelDataController.Sequences sequence = new LevelDataController.Sequences(); levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y].ListSequences.Add(sequence); } EditorGUILayout.EndHorizontal(); } GUILayout.Space(space * 0.3f); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 4); if (GUILayout.Button("Remove Wave")) { levelDataController.levelDataCollection.ListLevelData[i].ListWaves.Remove(levelDataController.levelDataCollection.ListLevelData[i].ListWaves[y]); // Debug.Log(levelData.InitialGold.ToString()); } EditorGUILayout.EndHorizontal(); } } GUILayout.Space(space * 0.3f); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space * 2); if (GUILayout.Button("Add Wave")) { LevelDataController.Waves wave = new LevelDataController.Waves(); levelDataController.levelDataCollection.ListLevelData[i].ListWaves.Add(wave); // Debug.Log(levelData.InitialGold.ToString()); } EditorGUILayout.EndHorizontal(); } GUILayout.Space(space * 0.5f); EditorGUILayout.BeginHorizontal(); GUILayout.Space(space); if (GUILayout.Button("Remove Level")) { levelDataController.levelDataCollection.ListLevelData.Remove(levelDataController.levelDataCollection.ListLevelData[i]); //SaveLevelData(); } EditorGUILayout.EndHorizontal(); } } EditorGUILayout.EndScrollView(); EditorGUILayout.EndVertical(); }
private void Awake() { GameObject levelsHolder = GameObject.Find("LevelZones"); int currentLevel = PlayerPrefs.GetInt("GameLevel"); LevelDataController.LevelData currentLevelData = LevelDataController.GetLevelData(currentLevel); for (int i = 0; i < levelsHolder.transform.childCount; i++) { levelsHolder.transform.GetChild(i).gameObject.SetActive(false); } levelsHolder.transform.GetChild(currentLevel).gameObject.SetActive(true); GameObject currentLevelHolder = levelsHolder.transform.GetChild(currentLevel).gameObject; PlayableLevel currentPlayableLevel = currentLevelHolder.GetComponent <PlayableLevel>(); currentPlayableLevel.Initialize(); LineRendererPool lineRendererPool = FindObjectOfType <LineRendererPool>(); PlayerController playerController = FindObjectOfType <PlayerController>(); playerController.SetPlayerPath(currentLevelHolder.transform.GetChild(1).GetComponent <BezierSpline>()); playerController.Orient(); Weapon currentWeapon = Instantiate(Resources.Load <GameObject>("Prefabs/Weapons/" + currentLevelData._primaryWeaponCategory.ToString()), playerController.GetWeaponPivot()).GetComponent <Weapon>(); currentWeapon.SetLineRendererPool(lineRendererPool); WeaponProjectilesRetriever weaponProjectilesRetriever = FindObjectOfType <WeaponProjectilesRetriever>(); weaponProjectilesRetriever.SetWeapon(currentWeapon); playerController.SetWeapon(currentWeapon); playerController.gameObject.SetActive(false); InGameController _inGameController = FindObjectOfType <InGameController>(); FindObjectOfType <HPBarBehaviour>().SetPlayerController(playerController); _inGameController._player = playerController.gameObject; FindObjectOfType <ShootButtonBehaviour>().SetPlayer(playerController); currentPlayableLevel.SetPlayerController(playerController); //Añado la recarga al botón de recarga GameObject.Find("ReloadButton").GetComponent <Button>().onClick.AddListener(() => playerController.Reload()); currentWeapon.SetVfxBloodPool(GameObject.Find("VFXBloodPool").GetComponent <VFXPool>()); //Asigno valores a la camara BezierSpline cameraPath = currentLevelHolder.transform.GetChild(2).GetComponent <BezierSpline>(); CinematicCameraController cinematicCameraController = FindObjectOfType <CinematicCameraController>(); cinematicCameraController.SetPath(cameraPath); //Creo los enemigos EnemySpawner[] enemySpawners = currentLevelHolder.GetComponentsInChildren <EnemySpawner>(); foreach (EnemySpawner e in enemySpawners) { EnemyController enemyController = null; GameObject instantiatedEnemy = null; switch (e.GetEnemyType()) { case EnemyType.Zombie: instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Zombie"), e.transform.position, Quaternion.identity); break; case EnemyType.WalkingNightmare: instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_WalkingNightmare"), e.transform.position, Quaternion.identity); break; case EnemyType.CrawlingNightmare: instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_CrawlingNightmare"), e.transform.position, Quaternion.identity); break; case EnemyType.Troll: instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Troll"), e.transform.position, Quaternion.identity); break; case EnemyType.Explosive: instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Explosive"), e.transform.position, Quaternion.identity); break; case EnemyType.Spitter: instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Spitter"), e.transform.position, Quaternion.identity); break; case EnemyType.Bat: instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_Bat"), e.transform.position, Quaternion.identity); break; case EnemyType.SkeletonZombie: instantiatedEnemy = Instantiate(Resources.Load <GameObject>("Prefabs/Enemies/Enemy_SkeletonZombie"), e.transform.position, Quaternion.identity); break; } enemyController = instantiatedEnemy.GetComponent <EnemyController>(); enemyController.SetPath(e.GetComponent <BezierSpline>()); enemyController.SetMaxHp(e._maxHP); enemyController.SetCurrentHP(e._maxHP); enemyController.SetDamage(e._damage); enemyController.SetChaseIndex(e._chaseIndex); enemyController.SetChaseSpeed(e._speed * (1 + e.animationSpeedOffset)); enemyController.SetChaseAnimationSpeedOffset(1 + e.animationSpeedOffset); enemyController.SetSkin(e._skin); enemyController.Orient(); enemyController.SetPlayerController(playerController); if (!e._preInstantiate) { instantiatedEnemy.SetActive(false); } currentPlayableLevel._enemyControllers.Add(enemyController); } }