Exemple #1
0
    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);
    }
Exemple #3
0
    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); });
            }
        }
    }