예제 #1
0
 public void LoadData(SaveManager.SaveData saveData)
 {
     GoldManager.OnLoad(saveData.goldData);
     MinionsManager.OnLoad(saveData.minionListSaveData);
     Ctx.EnemyCastle.Health  = saveData.EnemyCastleHealth;
     Ctx.PlayerCastle.Health = saveData.PlayerCastleHealth;
 }
예제 #2
0
 public void Save(System.Action callback = null)
 {
     SaveManager.SaveData sd = new SaveManager.SaveData(
         new SaveManager.GameData(
             gridManagement.grid,
             gridManagement.bridgesList,
             player.name,
             cityManager.cityName,
             cityManager.isTutorialRun,
             temporality.cycleNumber,
             temporality.GetCurrentCycleProgression(),
             populationManager.populations,
             cityManager.GetLockedBuildings(),
             populationManager.populationTypeList.ToList(),
             bulletinsManager.GetBulletins(),
             bulletinsManager.GetBulletin(),
             eventManager.eventsPool
             )
         );
     StartCoroutine(saveManager.WriteSaveData(
                        sd,
                        delegate {
         if (callback != null)
         {
             callback.Invoke();
         }
     }
                        ));
 }
        public void ClearSaves()
        {
            ClearSaveObjects();

            GameHandler.instance.SetupSaves();

            for (int i = 0; i < GameHandler.instance.savesData.Length; i++)
            {
                SaveManager.SaveData save = GameHandler.instance.savesData[i];
                SpawnDeleteSaveButton(save, i);
            }

            if (savedGameObjects.Count == 0)
            {
                NotificationManager.instance.ShowNotification("No saves available to delete!");
                return;
            }

            // Swap to load game tabs

            InputField.gameObject.SetActive(false);
            InputField.onValueChanged.RemoveAllListeners();

            inputRegion.SetActive(false);
        }
예제 #4
0
    void InitializeUpgrades(SaveManager.SaveData saveData)
    {
        bool onFileCreation;

        if (saveData.upgradePurchasedAmount.Count == 0)
        {
            onFileCreation = true;
        }
        else
        {
            onFileCreation = false;
        }

        upgrades = new List <UpgradeModel>();
        for (int i = 0; i < upgradeScriptableObjects.Count; i++)
        {
            upgrades.Add(Instantiate(upgradeButtonPrefab, upgradeButtonContainer).GetComponent <UpgradeModel>());

            upgrades[i].Name           = upgradeScriptableObjects[i]._name;
            upgrades[i].Cost           = upgradeScriptableObjects[i].cost;
            upgrades[i].MoneyPerSecond = upgradeScriptableObjects[i].moneyPerSecond;

            if (!onFileCreation)
            {
                upgrades[i].Amount = saveData.upgradePurchasedAmount[i];
            }
        }

        if (onUpgradeInitialization != null)
        {
            onUpgradeInitialization(upgradeScriptableObjects.Count);
        }
    }
        private void SpawnOverriteSaveButton(SaveManager.SaveData data, int index)
        {
            Button button = Instantiate(CreateButton(data), savesViewContentHold);

            savedGameObjects.Add(button.gameObject);

            button.onClick.AddListener(() =>
            {
                SaveManager.SaveData OldData = GameHandler.instance.GetGameData(index);

                if (OldData == null)
                {
                    NotificationManager.instance.ShowNotification("Unable to override data!");
                    return;
                }

                input = OldData.userName;

                GameHandler.instance.ClearSavedData(index);

                GameHandler.instance.saveName = input;

                GameHandler.instance.SaveGame();
                onSavedEvent?.Invoke();
            });
        }
예제 #6
0
    void InitializeTexts(SaveManager.SaveData saveData)
    {
        money          = saveData.money;
        moneyPerSecond = saveData.moneyPerSecond;

        moneyText.text = "$" + money;
        mPSText.text   = "$" + moneyPerSecond.ToString("F1") + " p/second";
    }
        private void SpawnLoadButton(SaveManager.SaveData data, int index)
        {
            Button button = Instantiate(CreateButton(data), savesViewContentHold);

            savedGameObjects.Add(button.gameObject);

            button.onClick.AddListener(() =>
            {
                GameHandler.instance.StartCoroutine(GameHandler.instance.LoadGame(index));
            });
        }
        private void SpawnDeleteSaveButton(SaveManager.SaveData data, int index)
        {
            Button button = Instantiate(CreateButton(data), savesViewContentHold);

            savedGameObjects.Add(button.gameObject);

            button.onClick.AddListener(() =>
            {
                GameHandler.instance.ClearSavedData(index);
                // Swap tab back to main
            });
        }
예제 #9
0
        public IEnumerator SaveGameAction()
        {
            // -----------------Save Player data---------------
            ActivePlayerData = new SaveManager.SaveData(saveName, Money, TimeScale.minutes, TimeScale.hours, TimeScale.days);

            SaveManager.DeleteSavedGame(ActivePlayerData);

            SaveManager.SavePlayerData(ActivePlayerData);

            yield return(null);

            Debug.Log("Saving workers...");

            // -----------------Save workers---------------
            var savedWorkers = new SaveManager.SavableObject.Worker[workers.Count];

            for (int i = 0; i < workers.Count; i++)
            {
                savedWorkers[i] = workers[i].workerData;
            }

            SaveManager.SaveWorkers(ActivePlayerData.userName, savedWorkers);

            yield return(null);

            Debug.Log("Saving objects...");

            // -----------------Save Objects---------------
            var objects      = FindObjectsOfType <PlacedObject>();
            var savedObjects = new List <SaveManager.SavableObject.WorldObject>()
            {
            };

            for (int i = 0; i < objects.Length; i++)
            {
                if (objects[i].objectData.type == ObjectType.Abstract)
                {
                    continue;
                }

                savedObjects.Add(objects[i].objectData);
            }

            SaveManager.SaveObjects(ActivePlayerData.userName, savedObjects.ToArray());

            yield return(null);

            Debug.Log("Save complete.");

            NotificationManager.instance.ShowNotification("Game saved!");
        }
예제 #10
0
    public void SaveGame()
    {
        SaveData data = new SaveManager.SaveData
        {
            characterPositionX = Game.player.transform.position.x,
            characterPositionY = Game.player.transform.position.y,
            currentMap         = Game.map.CurrentMap,
            skills             = Game.player.skills
        };

        string json = JsonUtility.ToJson(data);

        File.WriteAllText(SAVE_FILE_PATH, json);
    }
        public void SaveGame()
        {
            ClearSaveObjects();

            GameHandler.instance.SetupSaves();

            for (int i = 0; i < GameHandler.instance.savesData.Length; i++)
            {
                SaveManager.SaveData save = GameHandler.instance.savesData[i];
                SpawnOverriteSaveButton(save, i);
            }

            // Swap to saved game tabs

            InputField.gameObject.SetActive(true);
            InputField.onValueChanged.AddListener(TextChanged);

            inputRegion.SetActive(true);
        }
        private Button CreateButton(SaveManager.SaveData save)
        {
            string name = save != null ? save.userName : "******";

            string Money = save != null ? $"${save.money}" : "";

            Button b = new GameObject($"{name}").AddComponent <Button>();

            Text t = b.gameObject.AddComponent <Text>();

            t.font = savesFont;

            t.supportRichText = true;

            t.text = $"<b>{name}</b>\n{Money}";

            b.targetGraphic = t;

            t.alignment = TextAnchor.UpperLeft;

            return(b);
        }
예제 #13
0
        public IEnumerator LoadGame(int index)
        {
            yield return(null);

            ActivePlayerData = savesData[index];

            Money    = ActivePlayerData.money;
            saveName = ActivePlayerData.userName;

            TimeScale.minutes = ActivePlayerData.minute;
            TimeScale.hours   = ActivePlayerData.hour;
            TimeScale.days    = ActivePlayerData.day;

            yield return(null);

            // Destroy existing workers
            var workersObjects = instance.workers.ToArray();

            for (int i = workersObjects.Length - 1; i >= 0; i--)
            {
                Destroy(workersObjects[i].gameObject);
            }

            yield return(null);

            // -----------------Load workers---------------

            SaveManager.SavableObject.Worker[] loadedWorkers;
            SaveManager.LoadWorkers(ActivePlayerData.userName, out loadedWorkers);

            if (loadedWorkers == null || loadedWorkers.Length == 0)
            {
                Debug.Log("No workers to load!");
            }
            else
            {
                foreach (var data in loadedWorkers)
                {
                    if (data == null)
                    {
                        continue;
                    }

                    Constructor.GetWorker(data);
                }
            }

            yield return(null);

            // -----------------Load objects---------------
            foreach (var item in FindObjectsOfType <PlacedObject>())
            {
                Destroy(item.gameObject);
            }

            SaveManager.SavableObject.WorldObject[] objects;

            SaveManager.LoadAllObjects(ActivePlayerData.userName, out objects);

            if (objects == null || objects.Length == 0)
            {
                Debug.Log("No objects to load!");
            }
            else
            {
                foreach (var data in objects)
                {
                    if (data == null)
                    {
                        continue;
                    }

                    MapLayoutManager.ReplaceTileInDictionary(data.position, Constructor.GetObject(data));
                }
            }

            yield return(null);

            NotificationManager.instance.ShowNotification("Game Loaded!");
        }
예제 #14
0
 void InitializeValues(SaveManager.SaveData saveData)
 {
     money          = saveData.money;
     moneyPerSecond = saveData.moneyPerSecond;
 }