Exemple #1
0
    public void Load()
    {
        if (!File.Exists(filePath))
        {
            Debug.Log("Нет сохранения");
            _gameWorld.Restart();
            return;
        }

        Save save;

        try
        {
            string json = File.ReadAllText(filePath);
            save = JsonUtility.FromJson <Save>(json);
        }
        catch (Exception ex)
        {
            Debug.LogWarning(ex);

            Debug.LogWarning("сохранения не подходят");
            _gameWorld.Restart();
            return;
        }

        if (save.allCharacters == null || save.nextCharacters == null)
        {
            Debug.LogWarning("в файле сохраниения нет данных");
            _gameWorld.Restart();
            return;
        }

        _score.Reset();
        _characterProvider.Clear();

        _score.Add(save.score);

        SaveCharacter[] savedCharacters = save.allCharacters;

        foreach (var item in savedCharacters)
        {
            _characterProvider.Create(item.x, item.y, item.prefabIndex);
        }

        _gameWorld.SetNextCharacters(save.nextCharacters);

        if (_characterProvider.GetAllFillPosition().Count == 0)
        {
            _gameWorld.RandomSpawn();
        }
    }
Exemple #2
0
    public void RandomSpawn()
    {
        var combinedCallback = new CombinedEventHandler <Character>(SpawnedCharactersHandler);

        foreach (var prefabindex in nextPrefabIndexs)
        {
            var empty     = characterProvider.GetAllEmptyPosition();
            var index     = UnityEngine.Random.Range(0, empty.Count);
            var pos       = empty[index];
            var character = characterProvider.Create(pos.x, pos.y, prefabindex);

            if (character != null)
            {
                combinedCallback.BindCharacter(character);
                character.OnSpawned += combinedCallback.Callback;
            }
        }
    }