示例#1
0
    public void Save()
    {
        SaveState            levelState       = new SaveState();
        LevelStatusSaveState levelStatusState = new LevelStatusSaveState();
        SaveManager          sm = new SaveManager();

        levelStatusState.LevelName = LevelName.text;
        levelState          = sm.Load(LevelName.text);
        levelState.MaxTime  = int.Parse(MaxTime.text);
        levelState.MaxTries = int.Parse(MaxTries.text);

        levelState.Coins    = int.Parse(Coins.text);
        levelState.Diamonds = int.Parse(Diamonds.text);

        levelStatusState.Stars     = int.Parse(Stars.text);
        levelStatusState.BestTime  = int.Parse(BestTime.text);
        levelStatusState.BestTries = int.Parse(BestTries.text);

        if (Locked.text == "T" || Locked.text == "t")
        {
            levelStatusState.IsLocked = true;
        }
        else
        {
            levelStatusState.IsLocked = false;
        }
        levelStatusState.Save();
        sm.Save(levelState, LevelName.text);

        Load();
    }
示例#2
0
    public static void GameWon()
    {
        Debug.Log("won the game");
        SaveManager          sm    = new SaveManager();
        LevelStatusSaveState state = new LevelStatusSaveState();

        state.LevelName = string.Format("level_{0}_{1}_" + "s", CurrentLevel.Split('_')[1], (int.Parse(CurrentLevel.Split('_')[2])).ToString());
        state.Load();
        Player.NoOfMoves               = IndexOfCoinsCollected.Count;
        state.IndexOfCoinsCollected    = state.IndexOfCoinsCollected.Union(IndexOfCoinsCollected).ToList();
        state.IndexOfDiamondsCollected = state.IndexOfDiamondsCollected.Union(IndexOfDiamondsCollected).ToList();
        state.Save();

        if (LevelManager.NextLevelPresent)
        {
            state.LevelName = string.Format("level_{0}_{1}_" + "s", CurrentLevel.Split('_')[1], (int.Parse(CurrentLevel.Split('_')[2]) + 1).ToString());
            state.Load();
            state.IsLocked = false;
            state.Save();
        }
        IsGameWon = true;
        IsPlaying = false;
    }
示例#3
0
    public void Save()  //saving each node to the file
    {
        nodes = new List <Node>();
        int numberOfCoins    = 0;
        int numberOfDiamonds = 0;

        for (int i = 0; i < noOfParts; i++)
        {
            Node tempNode = new Node();
            switch (PartsTypes[i])
            {
            case (PrefabType.Part01):
                tempNode.Type      = PrefabType.Part01;
                tempNode.transform = Parts[i].transform;
                break;

            case (PrefabType.Part02):
                tempNode.Type      = PrefabType.Part02;
                tempNode.transform = Parts[i].transform;
                break;

            case (PrefabType.Part03):
                tempNode.Type      = PrefabType.Part03;
                tempNode.transform = Parts[i].transform;
                break;

            case (PrefabType.Part04):
                tempNode.Type      = PrefabType.Part04;
                tempNode.transform = Parts[i].transform;
                break;

            case (PrefabType.Part05):
                tempNode.Type      = PrefabType.Part05;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.Start:
                tempNode.Type      = PrefabType.Start;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.End:
                tempNode.Type      = PrefabType.End;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.KeyWall:
                tempNode.Type      = PrefabType.KeyWall;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.Coins:
                numberOfCoins++;
                tempNode.Type      = PrefabType.Coins;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.Spike:
                tempNode.Type      = PrefabType.Spike;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.KeyPortal:
                break;

            case PrefabType.CheckPoint:
                tempNode.Type      = PrefabType.CheckPoint;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.Guardian:
                tempNode.Type      = PrefabType.Guardian;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.Hammer:
                tempNode.Type      = PrefabType.Hammer;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.Goliath:
                tempNode.Type      = PrefabType.Goliath;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.GoliathWalk:
                tempNode.Type      = PrefabType.GoliathWalk;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.GoliathAttackSwitch:
                tempNode.Type      = PrefabType.GoliathAttackSwitch;
                tempNode.transform = Parts[i].transform;
                break;

            case PrefabType.Chest:
                tempNode.Type      = PrefabType.Chest;
                tempNode.transform = Parts[i].transform;

                var flag = false;
                TreasureManager.Load();
                if (TreasureManager.TreasureListAll.Treasures.Count > 0)
                {
                    foreach (var chest in TreasureManager.TreasureListAll.Treasures)
                    {
                        if (chest.LevelName == SaveManager.levelName)
                        {
                            flag = true;
                            break;
                        }
                    }
                }
                if (!flag)
                {
                    TreasureManager.Chest chest = new TreasureManager.Chest();
                    chest.LevelName = SaveManager.levelName;

                    //TODO get the chest index from somewhere
                    chest.ChestIndex = PlayerPrefs.GetInt("NumberOfChests") + 1;
                    PlayerPrefs.SetInt("NumberOfChests", PlayerPrefs.GetInt("NumberOfChests") + 1);

                    TreasureManager.AddChestToAllTreasures(chest);
                }
                break;

            case PrefabType.Diamonds:
                numberOfDiamonds++;
                tempNode.Type      = PrefabType.Diamonds;
                tempNode.transform = Parts[i].transform;
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
            nodes.Add(tempNode);
        }
        for (int i = 0; i < noOfParts; i++)
        {
            Destroy(Parts[i]);
        }
        state.Node = new List <SaveavleNode>();
        for (int i = 0; i < noOfParts; i++)
        {
            state.Node.Add(new SaveavleNode());
            state.Node[i].ConvertToSaveable(nodes[i].Type, nodes[i].transform);
        }
        state.LevelSize = SaveManager.levelSize;
        state.MaxTime   = 0;
        state.MaxTries  = 0;
        state.Coins     = numberOfCoins;
        state.Diamonds  = numberOfDiamonds;
        sm.Save(state);
        Load();

        var ls = new LevelStatusSaveState
        {
            LevelName                = string.Format("level_{0}_{1}_s", SaveManager.levelName.Split('_')[1], SaveManager.levelName.Split('_')[2]),
            BestTime                 = 0,
            BestTries                = 0,
            IndexOfCoinsCollected    = new List <int>(),
            IndexOfDiamondsCollected = new List <int>(),
            IsLocked                 = false,
            Stars = 0
        };

        ls.Save();
        isSaving = false;
    }