///<summary> ///Load the characteristics of the monsters from a file ///</summary> void LoadFile() { string path = Application.dataPath + "/StreamingAssets/denis.json"; string[] fileContent = File.ReadAllLines(path); var enemies = EnemyLibrary.instance.GetAllPossibleEnemiesPrefabs(); foreach (var item in enemies) { monstersInfo.Add(item.name, new Dictionary <string, MonstersInfo>()); } foreach (var item in monstersInfo) { foreach (var str in fileContent) { MonstersInfo obj = JsonUtility.FromJson <MonstersInfo>(str); if (obj.monsterName == item.Key) { item.Value.Add(obj.tier, obj); } } } // foreach (var item in monstersInfo) // { // Debug.Log(item.Key); // foreach (var str in item.Value) // { // Debug.Log(str.Key); // } // } }
void LoadFile() { string path = Application.dataPath + "/StreamingAssets/denis.json"; string[] fileContent = File.ReadAllLines(path); foreach (var item in monstersInfo) { foreach (var str in fileContent) { MonstersInfo obj = JsonUtility.FromJson <MonstersInfo>(str); if (obj.monsterName == item.Key) { item.Value.Add(obj.tier, obj); } } } // foreach (var item in monstersInfo) // { // Debug.Log(item.Key); // foreach (var str in item.Value) // { // Debug.Log(str.Key); // } // } }
private MonstersInfo AddEnemyToDic(GameObject enemy, string mName) { MonstersInfo monsterInfo = new MonstersInfo(); if (enemy.name == "iceZombieTest") { monsterInfo = new MonstersInfo(enemy.name, mName, enemy.GetComponent <Thesis.Enemy.EnemyMovementTest>().stoppingDistanceToPlayer, enemy.GetComponent <Thesis.Enemy.EnemyMovementTest>().movementSpeed, enemy.GetComponent <IceZombieControllerTest>().timeBetweenAttacksInSecs, enemy.GetComponent <IceZombiePhysicalAttack>().DurationOfAttackInSecs, enemy.GetComponent <IceZombiePhysicalAttack>().attackFlightSpeed); } else { var enemyCharac = enemy.GetComponentInChildren <BulletSpawner>(); monsterInfo = new MonstersInfo(enemy.name, mName, enemyCharac.numberOfBullets, enemyCharac.bulletSpeed, enemyCharac.numberOfWaves, enemyCharac.secondsBetweenWaves, enemyCharac.secondsBetweenShots, enemyCharac.angleToShootInDegrees, enemy.GetComponent <Thesis.Enemy.EnemyControllerTest>().attackDistance, enemy.GetComponent <Thesis.Enemy.EnemyMovementTest>().stoppingDistanceToPlayer, enemy.GetComponent <Thesis.Enemy.EnemyMovementTest>().movementSpeed, enemy.GetComponentInChildren <Thesis.Enemy.EnemyShootTest>().timeToWaitBeforeShootingAgain); } if (!monstersInfo[enemy.name].ContainsKey(mName)) { monstersInfo[enemy.name].Add(mName, monsterInfo); } else { //update monster info monstersInfo[enemy.name].Remove(mName); monstersInfo[enemy.name].Add(mName, monsterInfo); } return(monsterInfo); }
public void LoadData() { var dic = canvas.GetComponent <PopulateWithMonsters>().monstersInfo; string path = Application.dataPath + "/Resources/" + dropdown.options[selectedFile].text; Debug.Log(path); string[] fileContent = File.ReadAllLines(path); foreach (var item in dic) { item.Value.Clear(); } foreach (var item in dic) { foreach (var str in fileContent) { MonstersInfo obj = JsonUtility.FromJson <MonstersInfo>(str); if (obj.monsterName == item.Key) { item.Value.Add(obj.tier, obj); } } } canvas.GetComponent <PopulateWithMonsters>().monstersInfo = dic; canvas.GetComponent <PopulateWithMonsters>().DestroyMonster(); canvas.GetComponent <PopulateWithMonsters>().UnselectBtn(); canvas.GetComponent <PopulateWithMonsters>().Populate(); popUp.gameObject.SetActive(true); StartCoroutine(DisablePopUp()); }
public void GetMonsterCharac(GameObject enemy, string mName) { var placeHolders = monsterCharac.GetComponentsInChildren <RectTransform>(); if (monstersInfo[enemy.name].ContainsKey(mName)) { mInfo = monstersInfo[enemy.name][mName]; enemy.GetComponent <Thesis.Enemy.EnemyMovementTest>().stoppingDistanceToPlayer = mInfo.stoppingDistance; enemy.GetComponent <Thesis.Enemy.EnemyMovementTest>().movementSpeed = mInfo.movementSpeed; if (enemy.name == "iceZombieTest") { enemy.GetComponent <IceZombieControllerTest>().timeBetweenAttacksInSecs = mInfo.timeBetweenAttacks; enemy.GetComponent <IceZombiePhysicalAttack>().DurationOfAttackInSecs = mInfo.durationOfAttacks; enemy.GetComponent <IceZombiePhysicalAttack>().attackFlightSpeed = mInfo.attackSpeed; } else { var enemyCharac = enemy.GetComponentInChildren <BulletSpawner>(); enemyCharac.numberOfBullets = (int)mInfo.numberBullets; enemyCharac.bulletSpeed = (int)mInfo.bulletSpeed; enemyCharac.numberOfWaves = (int)mInfo.numberOfWaves; enemyCharac.secondsBetweenWaves = (int)mInfo.secBtwWaves; enemyCharac.secondsBetweenShots = mInfo.secBtwShots; enemyCharac.angleToShootInDegrees = mInfo.angleToShoot; enemy.GetComponent <Thesis.Enemy.EnemyControllerTest>().attackDistance = mInfo.attackDistance; enemy.GetComponentInChildren <Thesis.Enemy.EnemyShootTest>().timeToWaitBeforeShootingAgain = mInfo.attackSpeed; } } else { mInfo = AddEnemyToDic(enemy, mName); } tierName.text = ": " + mInfo.monsterName + " " + mInfo.tier; foreach (var item in placeHolders) { if (item.name == "NBullets") { PopulatePlaceholder(item, 0, 30, mInfo.numberBullets, true); } if (item.name == "BulletSpeed") { PopulatePlaceholder(item, 0, 20, mInfo.bulletSpeed, false); } if (item.name == "NumberOfWaves") { PopulatePlaceholder(item, 0, 15, mInfo.numberOfWaves, true); } if (item.name == "SecBtwWaves") { PopulatePlaceholder(item, 0, 20, mInfo.secBtwWaves, true); } if (item.name == "SecBtwShoots") { PopulatePlaceholder(item, 0, 1, mInfo.secBtwShots, false); } if (item.name == "AngleToShoot") { PopulatePlaceholder(item, 0, 360, mInfo.angleToShoot, true); } if (item.name == "AttackDistance") { PopulatePlaceholder(item, 0, 20, mInfo.attackDistance, false); enemy.GetComponentInChildren <DrawAttackLine>().radius = enemy.GetComponent <Thesis.Enemy.EnemyControllerTest>().attackDistance; } if (item.name == "AttackSpeed") { PopulatePlaceholder(item, 0, 15, mInfo.attackSpeed, false); } if (item.name == "StoppingDistance") { PopulatePlaceholder(item, 0, 15, mInfo.stoppingDistance, false); enemy.GetComponentInChildren <DrawStopLine>().radius = enemy.GetComponent <Thesis.Enemy.EnemyMovementTest>().stoppingDistanceToPlayer; } if (item.name == "MovSpeed") { PopulatePlaceholder(item, 0, 15, mInfo.movementSpeed, false); } if (item.name == "TBetweenAttacks") { PopulatePlaceholder(item, 0, 15, mInfo.timeBetweenAttacks, false); } if (item.name == "DurationAttack") { PopulatePlaceholder(item, 0, 15, mInfo.durationOfAttacks, false); } } canChangeValue = true; }