public static void SaveEnemy(EnemyStatisticsSerializable enemyStatisticsSerializable) { List <EnemyStatisticsSerializable> enemyStatisticsSerializables = new List <EnemyStatisticsSerializable>(); enemyStatisticsSerializables.Add(enemyStatisticsSerializable); EnemyStatisticsSerializable saved; if (GameObject.FindGameObjectWithTag("EnemiesSystem").GetComponent <EnemiesSystem>().playerNightEnemyStatistics.Count != 0) { foreach (EnemyStatistics item in GameObject.FindGameObjectWithTag("EnemiesSystem").GetComponent <EnemiesSystem>().playerNightEnemyStatistics) { saved = item.ToSerializable(); enemyStatisticsSerializables.Add(saved); } } if (GameObject.FindGameObjectWithTag("EnemiesSystem").GetComponent <EnemiesSystem>().playerNormalEnemyStatistics.Count != 0) { foreach (EnemyStatistics item in GameObject.FindGameObjectWithTag("EnemiesSystem").GetComponent <EnemiesSystem>().playerNormalEnemyStatistics) { saved = item.ToSerializable(); enemyStatisticsSerializables.Add(saved); } } BinaryFormatter formatter = new BinaryFormatter(); string path = Application.persistentDataPath + "/Enemies.inf"; FileStream stream = new FileStream(path, FileMode.Create); formatter.Serialize(stream, enemyStatisticsSerializables); stream.Close(); }
/* public EnemyStatistics() * { * this.health = new Stat(); * this.speed = new Stat(); * this.attack = new Stat(); * this.chaseDistance = new Stat(); * this.lootTable = new LootTable(new List<Loot>()); * this.color = new Color(); * }*/ public virtual EnemyStatisticsSerializable ToSerializable() { EnemyStatisticsSerializable enemyStatisticsSerializable = new EnemyStatisticsSerializable(this); return(enemyStatisticsSerializable); }
public void desctiptionSetAndButton(Enemy enemy, bool nightEnemy) { currentEnemy = enemy; CanBeSaved(); //inputNameField.on //enemy = GameObject.Instantiate(enemy); //currentEnemy = enemy.gameObject; // print(enemy.GetType()); // print(enemy.gameObject.name); //print(enemy.enemyStatistics.GetType()); currentEnemyStatisticsSerializable = enemy.enemyStatistics.ToSerializable(); currentEnemyStatisticsSerializable.nightEnemy = nightEnemy; //print(currentEnemyStatisticsSerializable.night); // print(nightEnemy); foreach (Transform child in enemyStats.transform) { Destroy(child.gameObject); } //print(enemy.enemyStatistics.ToSerializable(enemy.gameObject.name).GetType()); //print(enemy.enemyStatistics.GetType()); //print(enemy.enemyStatistics.ToSerializable(enemy.gameObject.name).enemyPrefabName); //var ins = ScriptableObject.CreateInstance<typeof(enemy.GetType())>() foreach (var param in currentEnemyStatisticsSerializable.GetType().GetFields())//.GetConstructors()[0].GetParameters() { if (param.Name != "color" && param.Name != "lootTable" && param.Name != "enemyPrefabName" && param.Name != "name" && param.Name != "night" && param.Name != "nightEnemy" && param.Name != "power" && param.Name != "inGame") { GameObject empty; // print(param.Name); empty = Instantiate(statSlider); empty.transform.SetParent(enemyStats.transform, false); empty.GetComponent <Image>().color = Color.Lerp(Color.blue, Color.white, 0.8f); empty.transform.Find("Text").GetComponent <Text>().text = param.Name; empty.transform.Find("Slider").GetComponent <Slider>().value = (float)currentEnemyStatisticsSerializable.GetType().GetField(param.Name).GetValue(currentEnemyStatisticsSerializable); SetValue(empty.transform.Find("Slider").GetComponent <Slider>().value, empty, param.Name); empty.transform.Find("Slider").GetComponent <Slider>().onValueChanged.AddListener((value) => { SetValue(value, empty, param.Name); }); } else if (param.Name == "color") { GameObject empty; // print(param.Name); empty = Instantiate(colorSlider); empty.transform.SetParent(enemyStats.transform, false); empty.GetComponent <Image>().color = Color.Lerp(Color.blue, Color.white, 0.8f); empty.transform.Find("Text").GetComponent <Text>().text = param.Name; SetColorValue(empty, param.Name); empty.transform.Find("red").GetComponent <Slider>().onValueChanged.AddListener((value) => { SetColorValue(empty, param.Name); }); empty.transform.Find("green").GetComponent <Slider>().onValueChanged.AddListener((value) => { SetColorValue(empty, param.Name); }); empty.transform.Find("blue").GetComponent <Slider>().onValueChanged.AddListener((value) => { SetColorValue(empty, param.Name); }); } else if (param.Name == "lootTable") { GameObject empty; // print(param.Name); empty = Instantiate(lootOption); empty.transform.SetParent(enemyStats.transform, false); empty.GetComponent <Image>().color = Color.Lerp(Color.blue, Color.white, 0.8f); empty.transform.Find("Text").GetComponent <Text>().text = param.Name; lootableName = empty.transform.Find("LootTableName").GetComponent <TextMeshProUGUI>(); //lootableName.text= currentEnemyStatisticsSerializable.lootTable.name; createLoot.currentLootTable = currentEnemyStatisticsSerializable.lootTable.ToNonSerializable(); empty.transform.Find("New").GetComponent <Button>().onClick.AddListener(() => createLoot.OpenWindow()); // empty.transform.Find("red").GetComponent<Slider>().onValueChanged.AddListener((value) => { SetColorValue(empty); }); // empty.transform.Find("green").GetComponent<Slider>().onValueChanged.AddListener((value) => { SetColorValue(empty); }); // empty.transform.Find("blue").GetComponent<Slider>().onValueChanged.AddListener((value) => { SetColorValue(empty); }); } } }