示例#1
0
 public void OnPurchaseCompleted(IBuyable buyable)
 {
     _scorreCounter.ReductionScorre(GetPrice(buyable.Price, buyable.ObjectType));
     ObjectOnScene.AddCount(buyable.ObjectType);
     GameDataStorage.SaveObjectsOnScene(ObjectOnScene);
     PurchaseCompleted?.Invoke();
 }
示例#2
0
        private GameObject CreateEntity(Type type, JObject obj, GameDataStorage storage)
        {
            ConstructorInfo cInfo = type.GetConstructor(new Type[] { typeof(string), typeof(string) });

            if (cInfo == null)
            {
                throw new InvalidOperationException(type.Name + CodeErrors.TypeNoConstructor);
            }

            object entity = cInfo.Invoke(new object[] { obj.Value <string>(GameStrings.Id), obj.Value <string>(GameStrings.Name) });

            foreach (PropertyInfo pInfo in type.GetProperties())
            {
                AddProperty(entity, pInfo, obj, storage);
            }

            if (entity is GameObject)
            {
                return((GameObject)entity);
            }
            else
            {
                throw new InvalidOperationException(CodeErrors.TypeIsntGameObject);
            }
        }
示例#3
0
        public GameDataStorage GetStorage(string filePath)
        {
            GameDataStorage result = new GameDataStorage();

            if (!File.Exists(filePath))
            {
                throw new ArgumentException(CodeErrors.FileDoesntExists);
            }

            dynamic buffer;

            using (StreamReader stream = new StreamReader(filePath))
            {
                buffer = JObject.Parse(stream.ReadToEnd());
            }

            JArray array = buffer[GameStrings.EntitiesPairs];

            foreach (JObject obj in array)
            {
                AddStorage(obj.Value <string>(GameStrings.Type), obj.Value <string>(GameStrings.Path), result);
            }

            return(result);
        }
示例#4
0
        private void AddStorage(string typeName, string path, GameDataStorage storage)
        {
            if (!File.Exists(path))
            {
                throw new ArgumentException(CodeErrors.FileDoesntExists);
            }

            dynamic buffer;

            using (StreamReader stream = new StreamReader(path))
            {
                buffer = JObject.Parse(stream.ReadToEnd());
            }

            JArray array = buffer[typeName];

            Type t = GetTypeByName(typeName);

            GameEntityStorage smallStorage = storage.AddStorage(t);

            foreach (JObject obj in array)
            {
                storage.AddEntity(CreateEntity(t, obj, storage), smallStorage);
            }
        }
示例#5
0
 private void Show()
 {
     AddScore(Time.deltaTime);
     //_scorePerSecondViewer.text = _scoreFormConverter.GetConvertedScorrePerSecond(_savedScore.ScorePerSecond);
     _scoreViewer.text = _scoreFormConverter.GetConvertedScore(_savedScore.Score);
     GameDataStorage.SaveScore(_levelName, _savedScore);
 }
示例#6
0
        public override void initialize()
        {
            var halfScreen = camera.bounds.size * 0.5f;

            var background = Background.Create("UI/deathscreen_background");

            addEntity(background);

            var restartButton = new Button("UI/restart_button_normal", "UI/restart_button_hover");

            restartButton.position = new Vector2(halfScreen.X, 580);
            restartButton.Click   += RestartButtonOnClick;
            addEntity(restartButton);

            var scoreText = new GameText($"{Player.score}");

            scoreText.position = new Vector2(halfScreen.X, 335);
            addEntity(scoreText);

            var storage = GameDataStorage.getInstance();

            storage.Load();
            var bestScoreText = new GameText($"{storage.BestScore}");

            bestScoreText.position = new Vector2(halfScreen.X, 435);
            addEntity(bestScoreText);

            var mainMenuButton = new Button("UI/menu_button_normal", "UI/menu_button_hover");

            mainMenuButton.position = new Vector2(32, 32);
            mainMenuButton.Click   += MainMenuButtonOnClick;
            addEntity(mainMenuButton);
        }
示例#7
0
    private void FillingScoreDatas(float sleepTime)
    {
        _savedScore = GameDataStorage.GetSavedScore(_levelName);
        if (_savedScore == null)
        {
            _savedScore = new SavedScore(0, 0, 2);
        }

        AddScore(sleepTime);
        Show();
    }
 public override void Save(string level)
 {
     for (int i = 0; i < _anchors.Length; i++)
     {
         var spawn = _anchors[i].InstalledFacility as Spawn;
         if (!_anchors[i].IsFree)
         {
             GameDataStorage.SaveSpawnObjects(i, _anchors[i].GetPosition(), spawn, spawn.SpawnTime);
         }
     }
 }
示例#9
0
 public override void Save(string level)
 {
     for (int i = 0; i < _anchors.Length; i++)
     {
         if (!_anchors[i].IsFree)
         {
             GameDataStorage.SaveActionObjects(i, _anchors[i].GetPosition(), _anchors[i].InstalledFacility as ActionObject);
         }
         else
         {
             GameDataStorage.RemoveActionObject(i);
         }
     }
 }
示例#10
0
    private void Start()
    {
        _levelName = GetComponent <LevelData>().LevelName;
        var savedScorre = GameDataStorage.GetSavedScore();

        Score          = savedScorre.Score;
        ScorePerSecond = savedScorre.ScorePerSecond;
        if (savedScorre.ScoreFactor >= _increaseTime)
        {
            _increaseTime = savedScorre.ScoreFactor;
        }

        _scorePerTime = new ScorrePerTime(10, Time.timeSinceLevelLoad, ScorePerSecond);
        ChangeScorre(0);
    }
示例#11
0
 public override void Load(string level)
 {
     _levelName = level;
     for (int i = 0; i < _anchors.Length; i++)
     {
         if (PlayerPrefs.HasKey(level + "_actionAnchorIndex_" + i + "_positionX"))
         {
             SavedObject savedObject  = GameDataStorage.GetSavedObject("action", i);
             var         actionObject = Instantiate(Resources.Load <ActionObject>("Prefabs/ActionObject/" + savedObject.Name));
             var         anchor       = _anchors.Where(a => a.GetPosition() == savedObject.Position).First();
             actionObject.SetPosition(anchor.GetPosition());
             anchor.SetChangeableObject(actionObject);
         }
     }
 }
示例#12
0
        private void AddProperty(object entity, PropertyInfo pInfo, JObject obj, GameDataStorage storage)
        {
            Type[] genericsArgs = pInfo.PropertyType.GetGenericArguments();

            Type entityType;

            if (genericsArgs.Length == 1)
            {
                entityType = genericsArgs.Single();
                if (typeof(IEnumerable).IsAssignableFrom(pInfo.PropertyType))
                {
                    JArray array = obj.Value <JArray>(pInfo.Name);

                    foreach (JValue jName in array)
                    {
                        ((IList)pInfo.GetValue(entity)).Add(storage.GetEntity(entityType, jName.Value <string>()));
                    }
                }

                return;
            }

            entityType = pInfo.PropertyType;

            if (typeof(GameObject).IsAssignableFrom(entityType))
            {
                pInfo.SetValue(entity, storage.GetEntity(entityType, obj.Value <string>(pInfo.Name)));
                return;
            }

            if (entityType == typeof(string))
            {
                pInfo.SetValue(entity, obj.Value <string>(pInfo.Name));
                return;
            }

            if (entityType == typeof(int))
            {
                pInfo.SetValue(entity, obj.Value <int>(pInfo.Name));
                return;
            }

            if (entityType == typeof(float))
            {
                pInfo.SetValue(entity, obj.Value <float>(pInfo.Name));
                return;
            }
        }
示例#13
0
    public void LevelPlay(int levelIndex)
    {
        _currentLevelIndex = levelIndex;
        _canLoadLevel      = true;
        int count = GameDataStorage.NumberOfLaunches(levelIndex);


        if (_isDebug || count <= _adDisplayDelay)
        {
            LevelLoad();
        }
        else
        {
            _videoAds.UnityAdsDidFinish += LevelLoad;
            _videoAds.ShowRewardedVideo(true);
        }
    }
示例#14
0
    public override void Load(string level)
    {
        _levelName = level;

        for (int i = 0; i < _anchors.Length; i++)
        {
            if (PlayerPrefs.HasKey(level + "_spawnAnchorIndex_" + i + "_positionX"))
            {
                SavedObject savedObject = GameDataStorage.GetSavedObject("spawn", i);
                var         spawn       = _spawnPool.GetObject() as Spawn;
                var         anchor      = _anchors.Where(a => a.GetPosition() == savedObject.Position).First();
                if (anchor.IsFree)
                {
                    spawn.Upgrade(spawn.SpawnTime - PlayerPrefs.GetFloat(level + "_spawnIndex_" + i + "_spawnTime"));
                    spawn.LeaveThePoolAndRun(anchor.GetPosition());
                    anchor.SetChangeableObject(spawn as IUpgradeable);
                }
            }
        }
    }
示例#15
0
        public override void initialize()
        {
            var halfScreen = camera.bounds.size * 0.5f;

            var background = Background.Create("UI/menu_background");

            addEntity(background);

            var playButton = new Button("UI/play_button_normal", "UI/play_button_hover");

            playButton.position = new Vector2(halfScreen.X, 380);
            playButton.Click   += PlayButtonOnClick;
            addEntity(playButton);

            var storage = GameDataStorage.getInstance();

            storage.Load();
            var bestScoreText = new GameText($"{storage.BestScore.ToString()}");

            bestScoreText.position = new Vector2(halfScreen.X, 600);
            addEntity(bestScoreText);
        }
示例#16
0
 public void AddingScorre(float scorre)
 {
     ScorePerSecond = _scorePerTime.GetValue(scorre, Time.timeSinceLevelLoad);
     ChangeScorre(scorre);
     GameDataStorage.SaveScore(Score, ScorePerSecond, _increaseTime);
 }