// Gather together all details needed to save the game and initiate the save.
    public void GatherSaveDetails()
    {
        if (SavingGameAllowed == false)
        {
            Debug.Log("Saving the game is disabled.");
            return;
        }

        Collectables.Clear();
        Interactables.Clear();

        // FindObjectsOfType<Collectable>().Where(a => a.CollectableCollected == true).ToList<Collectable>().ForEach(x => Collectables.Add(new CollectableSave(x.CollectableID, x.CollectableType, x.CollectableCollected)));

        FindObjectsOfType <Interactable>().ToList <Interactable>().ForEach(x => Interactables.Add(new InteractableSave(x.InteractableID, x.IsDisabled, x.IsLocked, x.IsActivated)));

        // Hardcoding for the time being...
        SaveDetails gatheredSaveDetails = new SaveDetails(
            LoadSaveController.SaveGameLocation,
            MainGameController.current.player.transform.position,
            TotalTimePlayed,
            DateTime.Now,
            LoadSaveController.LoadedCollectables,
            //Collectables,
            Interactables);

        LoadSaveController.SaveMainGame(gatheredSaveDetails);
    }
Beispiel #2
0
    public static void SaveMainGame(SaveDetails saveDetails)
    {
        Debug.LogFormat("Saving to...'{0}'", saveDetails.SaveGameLocation);

        XmlWriter xmlWriter;

        xmlWriter = XmlWriter.Create("saveGameTest.xml");

        xmlWriter.WriteStartDocument();
        xmlWriter.WriteWhitespace("\n");

        xmlWriter.WriteStartElement("game");

        xmlWriter.WriteWhitespace("\n\n");

        xmlWriter.WriteComment("Player data.");
        xmlWriter.WriteWhitespace("\n\t");

        xmlWriter.WriteStartElement("player");
        xmlWriter.WriteAttributeString("saveName", "saveDataName");
        xmlWriter.WriteAttributeString("saveTotalTime", saveDetails.TotalTime.ToString());
        xmlWriter.WriteAttributeString("saveCurrentTimestamp", saveDetails.CurrentTimestamp.ToString());

        xmlWriter.WriteAttributeString("playerPositionX", saveDetails.PlayerLocation.x.ToString());
        xmlWriter.WriteAttributeString("playerPositionY", saveDetails.PlayerLocation.y.ToString());
        xmlWriter.WriteAttributeString("playerPositionZ", saveDetails.PlayerLocation.z.ToString());

        xmlWriter.WriteWhitespace("\n\t");
        xmlWriter.WriteEndElement();

        xmlWriter.WriteWhitespace("\n\n");

        xmlWriter.WriteComment("This is the list of Collectables.");
        xmlWriter.WriteWhitespace("\n\t");

        xmlWriter.WriteStartElement("collectables");

        foreach (CollectableSave Collectable in saveDetails.Collectables)
        {
            xmlWriter.WriteWhitespace("\n\t\t");

            xmlWriter.WriteStartElement("collectable");
            xmlWriter.WriteAttributeString("CollectableID", Collectable.CollectableID);
            xmlWriter.WriteAttributeString("CollectableType", Collectable.CollectableType.ToString());
            xmlWriter.WriteAttributeString("CollectableCollected", Collectable.CollectableCollected.ToString());

            xmlWriter.WriteEndElement();
        }

        xmlWriter.WriteWhitespace("\n\t");
        xmlWriter.WriteEndElement();

        xmlWriter.WriteWhitespace("\n\n");

        xmlWriter.WriteComment("Interactables.");
        xmlWriter.WriteWhitespace("\n\t");

        xmlWriter.WriteStartElement("interactables");

        // foreach (Interactable interactable in Extend_List.NewFindObjectsOfTypeAll<Interactable>()) {
        foreach (InteractableSave Interactable in saveDetails.Interactables)
        {
            xmlWriter.WriteWhitespace("\n\t\t");

            xmlWriter.WriteStartElement("interactable");
            xmlWriter.WriteAttributeString("InteractableID", Interactable.InteractableID);
            xmlWriter.WriteAttributeString("IsActivated", Interactable.IsActivated.ToString());
            xmlWriter.WriteAttributeString("IsDisabled", Interactable.IsDisabled.ToString());
            xmlWriter.WriteAttributeString("IsLocked", Interactable.IsLocked.ToString());

            xmlWriter.WriteEndElement();
        }

        xmlWriter.WriteWhitespace("\n\t");
        xmlWriter.WriteEndElement();
        xmlWriter.WriteWhitespace("\n");

        xmlWriter.WriteWhitespace("\n");
        xmlWriter.WriteEndElement();

        xmlWriter.WriteEndDocument();
        xmlWriter.Close();
    }