示例#1
0
    public void LoadMap(string name = null, bool preset = true)
    {
        name = name ?? m_levelData.Level.SceneName;
        string fullPath = preset ? this.directory + name : Path.Combine(Application.persistentDataPath, name);

        SerializedLevel serializedLevel;

        try
        {
            var jsonTextFile = Resources.Load <TextAsset>(fullPath).ToString();
            serializedLevel = JsonUtility.FromJson <SerializedLevel>(jsonTextFile);
        }
        catch (System.Exception e)
        {
            Debug.LogWarning($"An error occurred when trying to load map '{name}':" +
                             $"\n\t{e}");
            Debug.Log("Creating Empty level");
            serializedLevel = new SerializedLevel();
            serializedLevel.SetPlot(new SerializedPlot(new SerializedMapObjects(),
                                                       JsonUtility.FromJson <SerializedGrid>(File.ReadAllText(this.directory + "_defaultGrid.json"))));
        }
        Debug.Log("Loading " + name);
        m_plotIO.LoadPlot(serializedLevel.serializedPlot);
        //Animals loaded after map to avoid path finding issues
        this.PresetMap = serializedLevel;
        Reload();
    }
示例#2
0
    public IEnumerator DownloadLevel(string url, JSONObject jsonObject)
    {
        var www = new WWW(url);

        yield return(www);

        if (www.isDone && www.text != "")
        {
            jsonObject = new JSONObject(www.text);
            try
            {
                LoadedLevels.Clear();
                var levelArray = jsonObject.GetField("levelArray").list;
                foreach (var level in levelArray)
                {
                    LoadedLevels.Add(SerializedLevel.FromJson(level));
                }
                Debug.Log("Number of loaded levels: " + LoadedLevels.Count);
                PopulateToGrid();
                InvokeLevelsLoaded(true);
            }
            catch
            {
                LoadDefaultLevels();
            }
        }

        //NGUIDebug.Log("Levels Loaded:" + jsonObject);
    }
示例#3
0
    public void InitFromFile(SerializedLevel level)
    {
        Serialized = level;

        Cells.Clear();

        Width  = level.Width;
        Height = level.Height;

        CurrentMinY = 0;
        CurrentMaxY = Height;

        Random.seed = level.Seed;

        Debug.Log("Add cells");
        foreach (var newCell in level.SpecialCells)
        {
            AddCell(newCell.x, newCell.y, newCell.Copy);
        }
        TilesFactory.Instance.NumberOfColors = level.NumberOfColors;

        Gamefield.GetComponent <Gamefield>().GameMode = GameModeFactory.CreateGameMode(level.GameMode);
        Gamefield.GetComponent <Gamefield>().GameMode.Init(Gamefield.GetComponent <Gamefield>());

        InitRandom();
    }
示例#4
0
    public void SaveMap(string name = null, bool preset = true)
    {
        name = name ?? LevelOnPlay;
        name = name + ".json";
        string fullPath = preset ? "Assets/Resources/" + this.directory + name : Path.Combine(Application.persistentDataPath, name);

        Debug.Log("Saving Grid to " + fullPath);
        if (File.Exists(fullPath))
        {
            Debug.Log("Overwriting file at " + fullPath);
        }

        SerializedLevel level;

        try
        {
            level = new SerializedLevel();
            level.SetPopulations(m_populationManager);
            level.SetPlot(m_plotIO.SavePlot());
        }
        catch
        {
            Debug.LogError("Serialization error, NOT saved to protect existing saves");
            return;
        }

        using (StreamWriter streamWriter = new StreamWriter(fullPath))
            streamWriter.Write(JsonUtility.ToJson(level));
        Debug.Log("Grid Saved to: " + fullPath);
    }
示例#5
0
    public override CSSerializedObject Save()
    {
        var res = new SerializedLevel();

        res.water = PlantsManager.Instance.currentResource["water"];
        return(res);
    }
示例#6
0
 private void WriteToFile(string path, SerializedLevel level)
 {
     using (StreamWriter streamWriter = new StreamWriter(path))
     {
         streamWriter.Write(JsonUtility.ToJson(level));
     }
     Debug.Log("Grid Saved to: " + path);
 }
示例#7
0
    public void StartGame(SerializedLevel level = null)
    {
        Level.Reset();

        Player.Instance.LastPlayedLevel = level;
        CombinationDestroyed           -= PointSystem.CountForCombinations;
        CombinationDestroyed           += PointSystem.CountForCombinations;
        SwitchStateTo(InitState);
    }
示例#8
0
    private SerializedLevel SaveLevel()
    {
        SerializedLevel level = new SerializedLevel();

        // Serialize plot
        level.SetPopulations(this.populationManager);
        // Serialize Animals
        level.SetPlot(this.plotIO.SavePlot());
        return(level);
    }
示例#9
0
    public void LoadDefaultLevels()
    {
        var jsonObject = new JSONObject(LevelFile.text);
        var levelArray = jsonObject.GetField("levelArray").list;

        foreach (var level in levelArray)
        {
            LoadedLevels.Add(SerializedLevel.FromJson(level));
        }

        FireLevelsAreReady();
    }
示例#10
0
    public void Init(int levelIndex)
    {
        Index = levelIndex;
        info  = Player.Instance.Info(Index);
        level = MainMenu.Instance.LoadedLevels.First(x => x.Name == (Index + 1).ToString(CultureInfo.InvariantCulture));

        LevelNumberTitle.text = LocalizationStrings.GetString(LevelNumberString, info.Number);
        BestScoreLabel.text   = LocalizationStrings.GetString(BestScoreString, info.BestScore);


        TaskLabel.text = LocalizationStrings.GetString(TaskString, GameModeToString.GetString(GameModeFactory.CreateGameMode(level.GameMode)));
    }
示例#11
0
    public void LoadDefaultLevels()
    {
        var jsonObject = new JSONObject(Levels.text);
        var levelArray = jsonObject.GetField("levelArray").list;

        foreach (var level in levelArray)
        {
            LoadedLevels.Add(SerializedLevel.FromJson(level));
        }
        PopulateToGrid();
        InvokeLevelsLoaded(true);
    }
示例#12
0
    public static SerializedLevel FromJson(JSONObject jsonObject)
    {
        Debug.Log("Print: \n" + jsonObject);
        var serializedLevel = new SerializedLevel();
        serializedLevel.Name = jsonObject.GetField("name").str;

        serializedLevel.Width = (int) jsonObject.GetField("width").n;
        serializedLevel.Height = (int) jsonObject.GetField("height").n;
        serializedLevel.NumberOfColors = jsonObject.HasField("numberOfColors")
            ? (int) jsonObject.GetField("numberOfColors").n
            : 6;
        serializedLevel.Seed = jsonObject.HasField("seed") ? (int) jsonObject.GetField("seed").n : 1;

        serializedLevel.GameMode = GameModeDescription.CreateFromJson(jsonObject.GetField("gameMode"));

        var array = jsonObject.GetField("map").list;
        foreach (var tile in array)
        {
            var x = array.IndexOf(tile)%serializedLevel.Width;
            var y = serializedLevel.Height - (array.IndexOf(tile)/serializedLevel.Width) - 1;

            var tileType = (int) tile.n;
            switch (tileType)
            {
                case (0): //empty
                    break;
                case (2): // place
                    serializedLevel.SpecialCells.Add(new Cell(x, y) {HasPlace = true});
                    break;
                case (3): //counter
                    serializedLevel.SpecialCells.Add(new Cell(x, y) {HasCounter = true});
                    break;
                default: // block
                    serializedLevel.SpecialCells.Add(new Cell(x, y, CellTypes.Block));
                    break;
            }
        }

        serializedLevel.Stages = CreateStagesFromJsonObject(jsonObject.GetField("stages"));

        serializedLevel.Star1Score = jsonObject.HasField("Star1Score")
            ? (int) jsonObject.GetField("Star1Score").n
            : 1000;
        serializedLevel.Star2Score = jsonObject.HasField("Star2Score")
            ? (int) jsonObject.GetField("Star2Score").n
            : 2000;
        serializedLevel.Star3Score = jsonObject.HasField("Star3Score")
            ? (int) jsonObject.GetField("Star3Score").n
            : 3000;

        return serializedLevel;
    }
示例#13
0
    /// <summary>
    /// Clear all placed animals. Reinitializing population manager isn't necessary at the moment
    /// </summary>
    public void ClearAnimals()
    {
        SerializedLevel level = this.SaveLevel();

        level.serializedPopulations = new SerializedPopulation[0];
        this.presetMap = level;

        foreach (Population population in this.populationManager.Populations)
        {
            population.RemoveAll();
        }
        this.populationManager.Initialize();
    }
示例#14
0
    // no idea what these two do
    public void ClearAnimals()
    {
        SerializedLevel level = new SerializedLevel();

        level.SetPopulations(m_populationManager);
        level.SetPlot(m_plotIO.SavePlot());
        level.serializedPopulations = new SerializedPopulation[0];
        this.PresetMap = level;

        foreach (Population population in m_populationManager.Populations)
        {
            population.RemoveAll();
        }

        m_populationManager.Initialize();
    }
示例#15
0
    public void Show(SerializedLevel level)
    {
        CurrentLevel = level;
        CurrentLevelInfo = Player.Instance.GetLevelInfo(level.Name);

        if (CurrentLevelInfo.IsCompleted)
        {
            var numberOfStars = CurrentLevel.NumberOfStarForScore(CurrentLevelInfo.BestScore);

            if (numberOfStars >= 1)
            {
                FirstStar.Show(true);
                if (numberOfStars == 1)
                {
                    StarTarget.text = LocalizationStrings.GetString(Star2TargetString, CurrentLevel.Star2Score);
                }
            }

            if (numberOfStars >= 2)
            {
                SecondStar.Show(true);
                if (numberOfStars == 2)
                {
                    StarTarget.text = LocalizationStrings.GetString(Star3TargetString, CurrentLevel.Star3Score);
                }
            }

            if (numberOfStars >= 3)
            {
                ThirdStar.Show(true);
                if (numberOfStars == 3)
                {
                    StarTarget.text = string.Empty;
                }
            }
        }
        else
        {
            FirstStar.Show(false);
            SecondStar.Show(false);
            ThirdStar.Show(false);

            StarTarget.text = LocalizationStrings.GetString(Star1TargetString, CurrentLevel.Star1Score);
        }

        Show();
    }
示例#16
0
    public void Show(int numberOfTurnsLeft, int score, int bestScore, LevelInfo levelInfo, SerializedLevel level)
    {
        TempScore = 0;
        TargetScore = score;

        LevelInfo = levelInfo;
        Level = level;

        TurnsLeft.text = LocalizationStrings.GetString(TurnsLeftString, numberOfTurnsLeft);
        Score.text = LocalizationStrings.GetString(ScoreString, 0);
        BestScore.text = LocalizationStrings.GetString(BestScoreString, bestScore);

        FirstStar.Show(false);
        SecondStar.Show(false);
        ThirdStar.Show(false);

        Show();
    }
示例#17
0
    private void LoadFromFile(string fullPath)
    {
        SerializedLevel serializedLevel;

        try
        {
            var jsonTextFile = Resources.Load <TextAsset>(fullPath).ToString();
            serializedLevel = JsonUtility.FromJson <SerializedLevel>(jsonTextFile);
        }
        catch
        {
            Debug.LogWarning("No map save found for this scene, create a map using map designer or check your spelling");
            Debug.Log("Creating Empty level");
            serializedLevel = new SerializedLevel();
            serializedLevel.SetPlot(new SerializedPlot(new SerializedMapObjects(), this.CreateDefaultGrid()));
        }
        this.plotIO.LoadPlot(serializedLevel.serializedPlot);
        //Animals loaded after map to avoid path finding issues
        this.presetMap = serializedLevel;
        Reload();
    }
示例#18
0
    public void RefreshNumberOfStars()
    {
        //if (Index >= UI.Instance.GuiLevelList.LoadedLevels.Count)
        //   return;

        var level = new SerializedLevel();

        //    UI.Instance.GuiLevelList.LoadedLevels[Index];
        //Debug.Log("PL: "+Player.Instance);
        //Debug.Log("Level name: "+level.Name);
        var levelInfo = Player.Instance.GetLevelInfo(level.Name);

        if (levelInfo != null && levelInfo.IsCompleted)
        {
            var numberOfStars = level.NumberOfStarForScore(levelInfo.BestScore);
            SetStars(numberOfStars);
        }
        else
        {
            FirstStar.SetActive(false);
            SecondStar.SetActive(false);
            ThirdStar.SetActive(false);
        }
    }
示例#19
0
文件: UI.cs 项目: GreatVV/loadzzer
    public void TryStartLevel(SerializedLevel level=null)
    {
        //  DisableAllPanels();

        bool canStartLevel = Player.Instance.Lifes.HasLife;
        if (canStartLevel)
        {
            DisableAllPanels();
            GuiGameplay.Show();
            Gamefield.gameObject.SetActive(true);
            Gamefield.StartGame(level);
        }
        else
        {
            //TODO show buy life popup;
            BuyLivesPopup.Show();
        }
    }
示例#20
0
文件: UI.cs 项目: GreatVV/loadzzer
 public void ShowStartLevelPopup(SerializedLevel levelToLoad)
 {
     StartLevelPopup.Show(levelToLoad);
 }
示例#21
0
文件: Level.cs 项目: GreatVV/loadzzer
    public void InitFromFile(SerializedLevel level)
    {
        Serialized = level;

        Cells.Clear();

        Width = level.Width;
        Height = level.Height;

        CurrentMinY = 0;
        CurrentMaxY = Height;

        Random.seed = level.Seed;

        //BUG change 480 for other resolutiion
        ChuzzleSize = new Vector3(480, 480, 0)/Width;
        if (ChuzzleSize.x > 80)
        {
            ChuzzleSize = new Vector3(80,80,0);
        }
        Debug.Log("Add cells");
        foreach (var newCell in level.SpecialCells)
        {
            AddCell(newCell.x, newCell.y, newCell.Copy);
        }
        NumberOfColors = level.NumberOfColors;

        Gamefield.GetComponent<Gamefield>().GameMode = GameModeFactory.CreateGameMode(level.GameMode);
        Gamefield.GetComponent<Gamefield>().GameMode.Init(Gamefield.GetComponent<Gamefield>());

        InitRandom();
    }
示例#22
0
 public void StartGame(SerializedLevel level = null)
 {
     LastLoadedLevel = level;
     _currentState = new InitState(this);
     _currentState.OnEnter();
 }
示例#23
0
 public static Window GamefieldScreen(SerializedLevel level)
 {
     instance.Gamefield.gameObject.SetActive(true);
     instance.Gamefield.StartGame(level);
     return(instance.GuiGameplay);
 }
示例#24
0
    public static SerializedLevel FromJson(JSONObject jsonObject)
    {
        Debug.Log("Print: \n" + jsonObject);
        var serializedLevel = new SerializedLevel();

        serializedLevel.Name = jsonObject.GetField("name").str;

        serializedLevel.Width          = (int)jsonObject.GetField("width").n;
        serializedLevel.Height         = (int)jsonObject.GetField("height").n;
        serializedLevel.NumberOfColors = jsonObject.HasField("numberOfColors")
            ? (int)jsonObject.GetField("numberOfColors").n
            : 6;
        serializedLevel.Seed = jsonObject.HasField("seed") ? (int)jsonObject.GetField("seed").n : -1;
        if (serializedLevel.Seed == -1)
        {
            serializedLevel.Seed = Environment.TickCount;
        }

        serializedLevel.GameMode = GameModeDescription.CreateFromJson(jsonObject.GetField("gameMode"));

        var array = jsonObject.GetField("map").list;

        foreach (var tile in array)
        {
            var x = array.IndexOf(tile) % serializedLevel.Width;
            var y = serializedLevel.Height - (array.IndexOf(tile) / serializedLevel.Width) - 1;

            var tileType = (int)tile.n;
            switch (tileType)
            {
            case (0):     //empty
                break;

            case (2):     // place
                serializedLevel.SpecialCells.Add(new Cell(x, y)
                {
                    CreationType = CreationType.Place
                });
                break;

            case (3):     //counter
                serializedLevel.SpecialCells.Add(new Cell(x, y)
                {
                    CreationType = CreationType.Counter
                });
                break;

            case (4):     //lock
                serializedLevel.SpecialCells.Add(new Cell(x, y)
                {
                    CreationType = CreationType.Lock
                });
                break;

            case (5):     //two time
                serializedLevel.SpecialCells.Add(new Cell(x, y)
                {
                    CreationType = CreationType.TwoTimes
                });
                break;

            case (6):     //invader
                serializedLevel.SpecialCells.Add(new Cell(x, y)
                {
                    CreationType = CreationType.Invader
                });
                break;

            default:     // block
                serializedLevel.SpecialCells.Add(new Cell(x, y, CellTypes.Block));
                break;
            }
        }

        serializedLevel.Stages = CreateStagesFromJsonObject(jsonObject.GetField("stages"));

        serializedLevel.Star1Score = jsonObject.HasField("Star1Score")
            ? (int)jsonObject.GetField("Star1Score").n
            : 1000;
        serializedLevel.Star2Score = jsonObject.HasField("Star2Score")
            ? (int)jsonObject.GetField("Star2Score").n
            : 2000;
        serializedLevel.Star3Score = jsonObject.HasField("Star3Score")
            ? (int)jsonObject.GetField("Star3Score").n
            : 3000;

        return(serializedLevel);
    }