Exemplo n.º 1
0
    void Start()
    {
        //setup variables
        agent = GetComponent <NavMeshAgent> ();
        agent.stoppingDistance = minDist;
        time = GameObject.FindObjectOfType <CurrentTime> ();
        calorieBurnLookup = GameObject.FindObjectOfType <CalorieBurnTable> ();
        stats.ageDays     = stats.age * 365;

        //randomise the base stats of the actor
        if (randomiseStats)
        {
            stats.dexterity    = Random.Range(0, 10);
            stats.intelligence = Random.Range(0, 10);
            stats.strength     = Random.Range(0, 10);
        }
    }
Exemplo n.º 2
0
    public override void OnInspectorGUI()
    {
        serializedObject.Update();

        //grab current calorie table and store it in a local variable
        CalorieBurnTable   _target  = (CalorieBurnTable)target;
        List <CalorieDict> tempDict = _target.calorieBurn;

        if (tempDict == null)
        {
            tempDict = new List <CalorieDict> ();
        }

        //save and load data
        EditorGUILayout.BeginHorizontal();

        //setup directory
        string dir = Application.dataPath + Path.DirectorySeparatorChar
                     + "CalorieBurnData" + Path.DirectorySeparatorChar;

        //save calorie dict to file
        if (GUILayout.Button("Save"))
        {
            //check if directory exists
            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }

            //check if calorie data exists
            if (File.Exists(dir + "CalorieBurn.txt"))
            {
                File.Delete(dir + "CalorieBurn.txt");
            }

            StreamWriter writer = new StreamWriter(dir + "CalorieBurn.txt");
            string       lineData;

            writer.WriteLine(tempDict.Count.ToString());

            //save all calorie data to file
            for (int a = 0; a < tempDict.Count; a++)
            {
                lineData  = "";
                lineData += tempDict [a].task;
                lineData += ":";
                lineData += tempDict [a].cost.ToString();
                writer.WriteLine(lineData);
            }

            writer.Close();
        }

        //load calorie dict to file
        if (GUILayout.Button("Load"))
        {
            //check if directory exists
            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }

            //check if calorie data exists
            if (File.Exists(dir + "CalorieBurn.txt"))
            {
                StreamReader reader = new StreamReader(dir + "CalorieBurn.txt");

                tempDict.Clear();
                string   lineData      = "";
                string[] lineDataSplit = new string[0];
                int      count         = int.Parse(reader.ReadLine());

                //save all calorie data to table contents
                for (int a = 0; a < count; a++)
                {
                    lineData      = "";
                    lineData      = reader.ReadLine();
                    lineDataSplit = lineData.Split(':');
                    tempDict.Add(new CalorieDict(lineDataSplit[0], float.Parse(lineDataSplit[1])));
                }

                reader.Close();
            }
        }

        EditorGUILayout.EndHorizontal();
        EditorGUILayout.BeginHorizontal();

        //add new calorie burn index
        if (GUILayout.Button("Add"))
        {
            int index = -1;
            //check if it already exists
            if (!CalorieDict.Contains(tempDict, new CalorieDict(calorieBurnTask, calorieBurnValue), out index))
            {
                tempDict.Add(new CalorieDict(calorieBurnTask, calorieBurnValue));
            }
            else
            {
                //edit it if it does
                tempDict [index] = new CalorieDict(calorieBurnTask, calorieBurnValue);
            }
        }

        //display add data section
        calorieBurnTask  = EditorGUILayout.TextField(calorieBurnTask);
        calorieBurnValue = EditorGUILayout.FloatField(calorieBurnValue);

        //setup new calorie dictionary
        CalorieDict tempDictChange = new CalorieDict();

        EditorGUILayout.EndHorizontal();

        //loop through displaying all calorie indexs
        for (int a = 0; a < tempDict.Count; a++)
        {
            EditorGUILayout.BeginHorizontal();

            //store any changes make to current calorie value
            tempDictChange.task = EditorGUILayout.TextField(tempDict[a].task);
            tempDictChange.cost = EditorGUILayout.FloatField(tempDict[a].cost);


            if (tempDictChange.task != tempDict [a].task || tempDictChange.cost != tempDict [a].cost)
            {
                tempDict [a] = tempDictChange;
                break;
            }

            //display remove button to delete index
            if (GUILayout.Button("Remove"))
            {
                tempDict.RemoveAt(a);
                break;
            }

            EditorGUILayout.EndHorizontal();
        }

        //apply changes to calorieDict
        _target.calorieBurn = tempDict;
        serializedObject.ApplyModifiedProperties();
    }