Ejemplo n.º 1
0
        // Reward any items gained from the level
        private static void RewardItems(LevelProgressData levelProgressData, LevelInfo levelInfo)
        {
            if (levelProgressData.Items == null)
            {
                return;
            }

            foreach (var reward in levelProgressData.Items)
            {
                // stars are always added to level progress, even though they may not be awarded to the player
                if (reward.Key == ItemType.Star1 || reward.Key == ItemType.Star2 || reward.Key == ItemType.Star3)
                {
                    int newStarsGained = reward.Value - levelInfo.StarsAwarded;                         // only award the stars if they are more than what was already been awarded
                    if (newStarsGained <= 0)
                    {
                        continue;
                    }

                    levelInfo.AddLevelCompletionStars(newStarsGained);
                    ItemProgress.AddItem(ItemType.Star, newStarsGained);
                }
                else if (reward.Key != ItemType.Star)
                {
                    ItemProgress.AddItem(reward.Key, reward.Value);                         // add any items gained
                }
                else
                {
                    Debug.Log("Warning: ItemType.Star should not be used for level rewards. Use Star1, Star2, Star3 instead");
                }
            }
        }
Ejemplo n.º 2
0
        public ExtractionModule Init(ItemProgress itemProgress, bool premium, MaterialResource extractionProportin)
        {
            if (itemProgress == null)
            {
                itemProgress = new ItemProgress {
                    Level = 1
                };
            }
            var level      = itemProgress.Level ?? 1;
            var property   = PropertyList(level, premium);
            var power      = property[0].CurrentValue;
            var extraction = new ExtractionResource();

            extraction.SetAndCalcEmpFromProportion(extractionProportin, power, BaseProportion.Ir, BaseProportion.Dm);

            ItemProgress        = itemProgress;
            Cost                = CalcPrice(level, premium);
            Images              = _images;
            Text                = _text;
            Properties          = property;
            ExtractionPerHour   = extraction.ExtractionPerHour;
            ExtractionProportin = extraction.ExtractionProportin;
            Power               = power;
            return(this);
        }
Ejemplo n.º 3
0
        /// <summary>Atualiza um item</sumary>
        public ObjResult Update(int item_progress_id, ItemProgress progress)
        {
            connection = db.GetCon();
            connection.Open();

            NpgsqlTransaction transaction = connection.BeginTransaction();
            ItemProgressDao   dao         = new ItemProgressDao(connection, transaction);
            ObjResult         result      = new ObjResult();

            try
            {
                item_progress_id = dao.Update(item_progress_id, progress);
                transaction.Commit();
                result.Success();
                result.SetData(item_progress_id);
            }
            catch (Exception e)
            {
                transaction.Rollback();
                throw new Exception(e.ToString());
            }
            finally
            {
                connection.Close();
                db.Close();
            }

            return(result);
        }
Ejemplo n.º 4
0
        public void Clean()
        {
            if (Project == null)
            {
                return;
            }

            currentBuild = BuildStep.Clean;
            BuildStatusChanged?.BeginInvoke(this, BuildStep.Clean, null, null);
            buildingThread = new System.Threading.Thread(new System.Threading.ThreadStart(delegate()
            {
                string outputDir = getOutputDir();
                IsBuilding       = true;
                foreach (var file in cache.Files.Where(x => x.Value.IsBuilt(outputDir)).Select(x => x.Value.InputFile))
                {
                    ContentFile item;
                    if (builtFiles.TryGetValue(file, out item))
                    {
                        ItemProgress?.BeginInvoke(this, new ItemProgressEventArgs(BuildStep.Clean, item), null, null);
                        if (System.IO.File.Exists(getDestinationFileAbsolute(item)))
                        {
                            System.IO.File.Delete(getDestinationFileAbsolute(item));
                        }
                    }
                }
                IsBuilding = false;
                BuildStatusChanged?.Invoke(this, BuildStep.Clean | BuildStep.Finished);
            }));
            buildingThread.Start();
        }
Ejemplo n.º 5
0
        public void ResetPlanetHangarAndResource(IDbConnection connection)
        {
            var progress = ItemProgress.InitBuildingProgress();

            progress.Level = 0;
            var prems   = new List <UserPremiumDataModel>();
            var planets = _gDetailPlanetService.GetAllPlanet(connection);

            foreach (var planet in planets)
            {
                var prem = prems.FirstOrDefault(i => i.Id == planet.UserId);
                if (prem == null)
                {
                    prem = _storeService.GetUserPremium(connection, planet.UserId);
                    if (prem != null)
                    {
                        prems.Add(prem);
                    }
                }

                var finished = true;
                var hasPrem  = prem != null;
                if (hasPrem)
                {
                    finished = prem.Finished;
                }


                _gDetailPlanetService.AddOrUpdate(connection,
                                                  SetInitialHangarAndResource(connection, planet, prem != null && !finished));
            }
        }
Ejemplo n.º 6
0
        public ItemProgress CreateItem()
        {
            ItemProgress item = new ItemProgress();

            itemdic.Add(item);
            return(item);
        }
Ejemplo n.º 7
0
        // Set the Strengthen button's interactability based on whether the player has enough resources
        public void UpdateStrengthenButton()
        {
            _buttonStrengthen.gameObject.SetActive(true);

            // remove the previous cost
            _textResourceCosts.text = "";

            // Populate new cost tiles
            var rankCost = _selectedUpgrade.UpgradeData.GetStrengthenCost();

            foreach (var resource in rankCost)
            {
                if (!string.IsNullOrEmpty(_textResourceCosts.text))
                {
                    _textResourceCosts.text += " ";                             // add space to separate the resources
                }
                _textResourceCosts.text += resource.Value.ToString();

                // add the respective sprite for the resource
                _textResourceCosts.text += SpriteReference.GetResourceSprite(resource.Key);
            }

            // Set interactability & text color based on whether the player has enough resources
            bool hasResources = ItemProgress.HasResources(rankCost);

            _buttonStrengthen.interactable = hasResources;
            _textResourceCosts.color       = hasResources ? _colorTextEnabled : _colorTextDisabled;
            _textStrengthen.color          = hasResources ? _colorTextEnabled : _colorTextDisabled;
        }
        public BuildItemUnitView GetViewModel(ItemProgress buildProgress, bool premiumIsActive,
                                              StorageResources resources = null)
        {
            var text = _text;

            var images = _images;
            var level  = buildProgress?.Level ?? 1;

            var model = new BuildItemUnitView
            {
                TranslateName = text.Name,
                NativeName    = NativeName,
                IconSelf      = images.Icon,
                Progress      = buildProgress,
                Info          = new BuildDropItemInfo
                {
                    Description = text.Name,
                    DropImage   = images.Detail
                },
                Update = new BuildDropItemUpdate
                {
                    Price      = CalcPrice(level, premiumIsActive),
                    Properties = PropertyList(level, premiumIsActive)
                },
                IsBuildItem = true
            };

            model.SetComplexButtonView();
            model.Update.SetButtons();
            //model.Action.SetButtons();
            return(model);
        }
Ejemplo n.º 9
0
        /// <summary>Cria um novo item e atribui à uma requisição</sumary>
        public ObjResult Post(ItemProgress progress, int user_id, int item_id, int item_status_id)
        {
            connection = db.GetCon();
            connection.Open();

            NpgsqlTransaction transaction = connection.BeginTransaction();
            ItemProgressDao   dao         = new ItemProgressDao(connection, transaction);
            ObjResult         result      = new ObjResult();

            try
            {
                progress.SetId(dao.Post(progress, user_id, item_id, item_status_id));
                transaction.Commit();
                result.Success();
                result.SetData(progress.GetId());
            }
            catch (Exception e)
            {
                transaction.Rollback();
                throw new Exception(e.ToString());
            }
            finally
            {
                connection.Close();
                db.Close();
            }

            return(result);
        }
Ejemplo n.º 10
0
 protected UnitProfileTech(TechType techType, ItemProgress progress, Dictionary <TechType, int> conditions, Dictionary <TechType, int> otherTeches)
 {
     TechType   = techType;
     Progress   = progress;
     Conditions = conditions;
     Disabled   = !_conditionsIsCorrect(Conditions, otherTeches);
 }
Ejemplo n.º 11
0
 public BuildUpgrade SetData(StorageResources storageResourses, ItemProgress progress, string nativeName)
 {
     StorageResources = storageResourses;
     Progress         = progress;
     NativeName       = nativeName;
     return(this);
 }
Ejemplo n.º 12
0
 public DrednoutProfileTech(ItemProgress progress, Dictionary <TechType, int> otherTeches) : base(TechType.TechDrednout, progress, new Dictionary <TechType, int>
 {
     { TechType.TechWeaponUpgrade, 35 }, { TechType.TechDamageControl, 35 }
 }, otherTeches)
 {
     AtackPersentPerLevel = 2;
     HpPersentPerLevel    = 3;
 }
Ejemplo n.º 13
0
 public BattlecruiserProfileTech(ItemProgress progress, Dictionary <TechType, int> otherTeches) : base(TechType.TechBattlecruiser, progress, new Dictionary <TechType, int>
 {
     { TechType.TechWeaponUpgrade, 15 }, { TechType.TechDamageControl, 15 }
 }, otherTeches)
 {
     AtackPersentPerLevel = 2;
     HpPersentPerLevel    = 2;
 }
Ejemplo n.º 14
0
        public bool IsUpgradeComplite(ItemProgress progress)
        {
            if (progress.IsNullOrFalse())
            {
                return(false);
            }

            return(progress.StartTime + progress.Duration - UnixTime.UtcNow() <= 0);
        }
Ejemplo n.º 15
0
 public FrigateProfileTech(ItemProgress progress, Dictionary <TechType, int> otherTeches) : base(TechType.TechFrigate, progress, new Dictionary <TechType, int>
 {
     { TechType.TechWeaponUpgrade, 8 },
     { TechType.TechDamageControl, 8 }
 }, otherTeches)
 {
     AtackPersentPerLevel = 2;
     HpPersentPerLevel    = 2;
 }
Ejemplo n.º 16
0
        public void ResetStorageBuild(IDbConnection connection)
        {
            var progress = ItemProgress.InitBuildingProgress();

            _updatePlanetList(connection, _gDetailPlanetService.GetAllPlanet(connection), i =>
            {
                i.BuildStorage = progress;
                return(i);
            });
        }
Ejemplo n.º 17
0
        //    protected int UpgradeForCc(IGDetailPlanetService planetService,IBalanceCcService balanceService,
        //int userId, bool premiumIsActive, BuildUpgrade preResult, int planetId, int calculatedCcPrice)
        protected int UpgradeForCc(IDbConnection connection, GDetailPlanetDataModel planet, int userId, bool premiumIsActive, BuildUpgrade preResult, int calculatedCcPrice, IServiceProvider resolver)
        {
            var storeService = resolver.GetService <IStoreService>();
            var preResultCc  = storeService.BalanceCalcResultCc(connection, userId, calculatedCcPrice);

            preResult.Cc       = preResultCc.Quantity;
            preResult.Progress = ItemProgress.ProgressUpdateComplite(preResult.Progress);
            BuildUpgrade.TransactionBuildUpdate(connection, planet, preResult, resolver, preResultCc);
            return(preResult.Cc);
        }
Ejemplo n.º 18
0
 protected ItemProgress Upgraded(IDbConnection connection, GDetailPlanetDataModel planet, BuildUpgrade bu, IServiceProvider resolver)
 {
     if (!bu.IsUpgradeComplite(bu.Progress))
     {
         return(bu.Progress);
     }
     bu.Progress = ItemProgress.ProgressUpdateComplite(bu.Progress);
     BuildUpgrade.TransactionBuildUpdate(connection, planet, bu, resolver);
     return(bu.Progress);
 }
Ejemplo n.º 19
0
        // UI - Strengthen the selected modifier, increasing its effect
        public void ButtonStrengthenModifier()
        {
            ItemProgress.SpendResources(_selectedUpgrade.UpgradeData.GetStrengthenCost());
            _selectedUpgrade.UpgradeData.IncreaseRank();
            _upgradeInfoDescription.text = _selectedUpgrade.UpgradeData.GetDescription(true);
            //Debug.Log("Panel Upgrades: Strengthening Modifier: " + _selectedModifier.Modifier.ModifierNameInternal + " " + _selectedModifier.Rank);

            UpdateStrengthenButton();
            _upgradeTileDict[_selectedUpgrade].StrengthenEssence();
            SoundManager.PlaySound(_soundUpgradeStrengthen);
        }
Ejemplo n.º 20
0
 public EnergyConverter Init(bool premium, ItemProgress progress)
 {
     return(new EnergyConverter
     {
         Cost = CalcPrice((int)progress.Level, premium),
         Images = _images,
         Text = _text,
         ItemProgress = progress,
         Properties = EnergyConverterProperty((int)progress.Level)
     });
 }
Ejemplo n.º 21
0
        public void ResetAllEnergyConverters(IDbConnection connection)
        {
            var progress = ItemProgress.InitBuildingProgress();

            progress.Level = 0;
            _updatePlanetList(connection, _gDetailPlanetService.GetAllPlanet(connection), i =>
            {
                i.BuildEnergyConverter = progress;
                return(i);
            });
        }
Ejemplo n.º 22
0
        // Update the player's progress based on the level they just played
        private void UpdateGameProgress()
        {
            Debug.Log("--- Overworld : Update Game Progress ---");

            // Fade in the camera
            _screenFader.FadeIn();

            // Center the camera on the player's base (is overriden later if levelInfo is loaded)
            _cameraController.SetCameraPosition(_playerBase.position);

            // No level progress data was found
            var levelProgressData = LevelProgress.Data;

            if (levelProgressData == null)
            {
                return;
            }

            // No level info data was found
            var levelInfo = GetLevelInfoBySceneName(levelProgressData.SceneName);

            if (levelInfo == null)
            {
                return;
            }

            // Set the level as 'Complete' if it was passed and was not previously finished
            if (levelProgressData.LevelPassed && levelInfo.LevelState == LevelState.Unlocked)
            {
                levelInfo.CompleteLevel();
            }

            // Add any item rewards
            RewardItems(levelProgressData, levelInfo);

            // Add resource rewards
            ItemProgress.AddResources(levelProgressData.Resources);

            // Update tower lifetime stats
            TowerProgress.UpdateTowerLifetimeStats(levelProgressData.TowerStats);

            // Update highest level defeated
            levelInfo.UpdateHighestWaveDefeated(levelProgressData.WavesDefeated);

            // Open the level finished window
            _windowLevelFinished.WindowOpen(levelProgressData);

            // Set the camera to the location of the level on the map
            _cameraController.SetCameraPosition(levelInfo.transform.position);

            // Reset the progress data after it has been used
            LevelProgress.ResetLevelProgress();
        }
Ejemplo n.º 23
0
        /// <summary>: atualiza o progresso pelo id informado!
        /// <response>: retorna o id do progresso que sofreu a alteração.
        public int Update(int item_progress_id, ItemProgress progress)
        {
            cmd = new NpgsqlCommand(update, conn, tran);

            // Informa o id da requisição que será atualizada
            cmd.Parameters.AddWithValue("@itp_id", item_progress_id);

            // Registros que serão atualizados
            cmd.Parameters.AddWithValue("@itp_description", progress.itp_description);
            cmd.ExecuteNonQuery();

            return(item_progress_id);
        }
Ejemplo n.º 24
0
        public bool CalculateTechProgreses(Dictionary <TechType, Tech> teches, UserPremiumWorkModel premium)
        {
            var hasChange = false;
            var col       = teches.Select(techItem => techItem.Value)
                            .Where(tech =>
                                   tech.Progress != null && tech.Progress.IsProgress == true && tech.Progress.CheckProgressIsDone());

            foreach (var tech in col)
            {
                ItemProgress.ProgressUpdateComplite(tech.Progress);
                hasChange = true;
            }
            return(hasChange);
        }
Ejemplo n.º 25
0
        //BuildItemUnitView
        public ItemProgress Upgraded(IDbConnection connection, GDetailPlanetDataModel planet, int userId, bool premiumIsActive, IServiceProvider resolver)
        {
            var bu = new BuildUpgrade();

            bu.SetData(planet.Turels, NativeName);
            if (!bu.IsUpgradeComplite(bu.Progress))
            {
                return(bu.Progress);
            }
            //planetService.SavePlanet();
            bu.Progress = ItemProgress.ProgressUpdateComplite(bu.Progress);
            BuildUpgrade.TransactionBuildUpdate(connection, planet, bu, resolver);
            return(bu.Progress);
        }
Ejemplo n.º 26
0
        public void Init(NpcUser npc, StorageResources sr = null, Dictionary <UnitType, int> hangar = null,
                         MaterialResource extraction      = null)
        {
            Id                        = npc.Id;
            Resources                 = sr ?? StorageResources.InitPlanetResources();
            Hangar                    = hangar ?? UnitList.InitUnitsInOwn(true);
            ExtractionProportin       = extraction ?? MaterialResource.InitBaseOwnProportion();
            StartSystemId             = 1;
            LastUpgradeProductionTime = 0;
            LaboratoryProgress        = new ItemProgress();
            var teches = new BattleTeches();

            teches.CreateStartTeches();
            TechProgress = teches.ConvertToDbTeches();
        }
Ejemplo n.º 27
0
        /// <summary>: cria um novo progresso para o item e o associa ao usuário que efetuou a ação, ao item e ao status do item!
        /// <response>: retorna o id do progresso criado.
        public int Post(ItemProgress progress, int user_id, int item_id, int item_status_id)
        {
            // Atribue o id do item
            SchemeChecker checker = new SchemeChecker(conn, tran);

            progress.SetId(checker.LastId("item_progress", "itp_id") + 1);

            // Insere os dados na tabela de itens
            cmd = new NpgsqlCommand(post, conn, tran);
            cmd.Parameters.AddWithValue("@itp_id", progress.itp_id);

            cmd.ExecuteNonQuery();

            return(progress.GetId());
        }
Ejemplo n.º 28
0
        public GDetailPlanetDataModel SetInitialPlanetBuilds(GDetailPlanetDataModel planet, int userId = 1)
        {
            var intiData = ItemProgress.InitBuildingProgress();
            var turel    = ItemProgress.InitBuildingProgress();

            turel.Level = 0;

            planet.BuildEnergyConverter  = intiData;
            planet.BuildExtractionModule = intiData;
            planet.BuildStorage          = intiData;
            planet.BuildSpaceShipyard    = intiData;
            planet.Turels = turel;
            planet.ExtractionProportin = MaterialResource.InitBaseOwnProportion();
            planet.UserId = userId;
            return(planet);
        }
Ejemplo n.º 29
0
        public int UpgradeForCc(IDbConnection connection, GDetailPlanetDataModel planet, int userId, bool premiumIsActive, BuildUpgrade preResult, IServiceProvider resolver)
        {
            var storeService = resolver.GetService <IStoreService>();
            var balanceCc    =
                storeService.BalanceCalcResultCc(connection, userId, CalcCcCurrentPrice(preResult.Progress?.Level ?? 1));

            preResult.Cc       = balanceCc.Quantity;
            preResult.Progress = ItemProgress.ProgressUpdateComplite(preResult.Progress);
            if (preResult.StorageResources == null)
            {
                throw new Exception(Error.UserResourceNotSetInInstance);
            }
            preResult.StorageResources.Max = MaxStorable(preResult.Progress?.Level ?? 1, premiumIsActive);
            BuildUpgrade.TransactionBuildUpdate(connection, planet, preResult, resolver, balanceCc);
            return(preResult.Cc);
        }
Ejemplo n.º 30
0
        public ItemProgress Upgraded(IDbConnection connection, GDetailPlanetDataModel planet, int userId, bool premiumIsActive, IServiceProvider resolver)
        {
            var progress  = planet.BuildStorage;
            var preResult = new BuildUpgrade(planet.Resources, progress, NativeName);


            //todo  не правильно высчитывается время на азуре из за чего вылетает ошибка при ответе от сервера
            if (!preResult.IsUpgradeComplite(preResult.Progress))
            {
                return(preResult.Progress);
            }

            preResult.Progress             = ItemProgress.ProgressUpdateComplite(preResult.Progress);
            preResult.StorageResources.Max = MaxStorable(preResult.Progress.Level ?? 1, premiumIsActive);
            BuildUpgrade.TransactionBuildUpdate(connection, planet, preResult, resolver);
            return(preResult.Progress);
        }