private void UpdateObjects() { //update sushi positions foreach (GameObject sushi in sushis) { int instanceID = sushi.GetInstanceID(); Sushi temp = (Sushi)saveObject.sushiObjects[instanceID]; temp.position = sushi.transform.position; temp.rotation = sushi.transform.rotation; temp.sauceType = sushi.GetComponent <Saucable>().sauce_type; saveObject.sushiObjects[instanceID] = temp; } //update sauce positions foreach (GameObject saucebottle in saucebottles) { int instanceID = saucebottle.GetInstanceID(); Saucebottle temp = (Saucebottle)saveObject.sauceObjects[instanceID]; temp.position = saucebottle.transform.position; temp.rotation = saucebottle.transform.rotation; temp.sauceType = saucebottle.GetComponent <SauceType>().sauce_type; saveObject.sauceObjects[instanceID] = temp; } //update sauce dish GameObject dishTemp = GameObject.Find("SauceDish"); saveObject.dish.position = dishTemp.transform.position; saveObject.dish.rotation = dishTemp.transform.rotation; saveObject.dish.sauceType = dishTemp.GetComponentInChildren <Saucable>().sauce_type; }
private void RehydrateHashTable() { saveObject.sushiObjects.Clear(); foreach (GameObject go in sushis) { Sushi sushi = new Sushi(); sushi.position = new SerializeVector3(go.transform.position.x, go.transform.position.y, go.transform.position.z); sushi.rotation = new SerializeQuaternion(go.transform.rotation.x, go.transform.rotation.y, go.transform.rotation.z, go.transform.rotation.w); sushi.sushiType = go.name; sushi.sauceType = go.GetComponent <Saucable>().sauce_type; saveObject.sushiObjects.Add(go.GetInstanceID(), sushi); } saveObject.sauceObjects.Clear(); foreach (GameObject go in saucebottles) { Saucebottle saucebottle = new Saucebottle(); saucebottle.position = go.transform.position; saucebottle.rotation = go.transform.rotation; saucebottle.sauceType = go.GetComponent <SauceType>().sauce_type; saveObject.sauceObjects.Add(go.GetInstanceID(), saucebottle); } }
public void AddSauce(GameObject go, string sauce) { int instanceID = go.GetInstanceID(); if (!saveObject.sauceObjects.ContainsKey(instanceID)) { Saucebottle saucebottle = new Saucebottle(); saucebottle.position = new SerializeVector3(go.transform.position.x, go.transform.position.y, go.transform.position.z); saucebottle.rotation = new SerializeQuaternion(go.transform.rotation.x, go.transform.rotation.y, go.transform.rotation.z, go.transform.rotation.w); saucebottle.sauceType = sauce; saveObject.sauceObjects.Add(instanceID, saucebottle); saucebottles.Add(go); Debug.Log("Sauce Added to SaveObject"); } }
public void LoadObjects() { if (File.Exists(Application.dataPath + "/Savegame.save")) { BinaryFormatter bf = new BinaryFormatter(); FileStream file = File.Open(Application.dataPath + "/Savegame.save", FileMode.Open); saveObject = (SaveObject)bf.Deserialize(file); file.Close(); sushis.Clear(); saucebottles.Clear(); foreach (int index in saveObject.sushiObjects.Keys) { Sushi sushi = (Sushi)saveObject.sushiObjects[index]; Debug.Log(sushi); Vector3 newP = new Vector3(sushi.position.x, sushi.position.y, sushi.position.z); Quaternion newQ = new Quaternion(sushi.rotation.x, sushi.rotation.y, sushi.rotation.z, sushi.rotation.w); GameObject go = CreateSushi(newP, newQ, sushi.sushiType); SauceObject(go, sushi.sauceType); sushis.Add(go); } foreach (int index in saveObject.sauceObjects.Keys) { Saucebottle saucebottle = (Saucebottle)saveObject.sauceObjects[index]; Vector3 newP = saucebottle.position; Quaternion newQ = saucebottle.rotation; GameObject go = CreateSauce(newP, newQ, saucebottle.sauceType); saucebottles.Add(go); } GameObject dishTemp = GameObject.Find("SauceDish"); dishTemp.transform.position = saveObject.dish.position; dishTemp.transform.rotation = saveObject.dish.rotation; SauceObject(dishTemp, saveObject.dish.sauceType); //clear hash list and rebuild because new game objects have new Instance IDs RehydrateHashTable(); //enable all unlocked sauces UnlockSauces(); } }