//public BuildItemUnitView Upgraded(IGDetailPlanetService planetService, int userId, int planetId,bool premiumIsActive)
        public ItemProgress Upgraded(IDbConnection connection, GDetailPlanetDataModel planet, int userId, bool premiumIsActive, IServiceProvider resolver)
        {
            var bu = new BuildUpgrade();

            bu.SetData(planet.BuildSpaceShipyard, NativeName);
            return(base.Upgraded(connection, planet, bu, resolver));
        }
        private static bool _needUpdate(GDetailPlanetDataModel planet)
        {
            if (!planet.Resources.AllFull())
            {
                return(true);
            }
            if (planet.UnitProgress != null && planet.UnitProgress.Any())
            {
                return(true);
            }
            if (planet.BuildSpaceShipyard.IsProgress != null && planet.BuildSpaceShipyard.IsProgress == true)
            {
                return(true);
            }
            if (planet.BuildExtractionModule.IsProgress != null && planet.BuildExtractionModule.IsProgress == true)
            {
                return(true);
            }
            if (planet.BuildEnergyConverter.IsProgress != null && planet.BuildEnergyConverter.IsProgress == true)
            {
                return(true);
            }

            if (planet.BuildStorage.IsProgress != null && planet.BuildStorage.IsProgress == true)
            {
                return(true);
            }
            if (planet.Turels.IsProgress != null && planet.Turels.IsProgress == true)
            {
                return(true);
            }

            return(false);
        }
Exemple #3
0
        public int UpgradeForCc(IDbConnection connection, GDetailPlanetDataModel planet, int userId, bool premiumIsActive, BuildUpgrade preResult, IServiceProvider resolver)
        {
            var bu = new BuildUpgrade();

            bu.SetData(planet.BuildEnergyConverter, NativeName);
            return(base.UpgradeForCc(connection, planet, userId, premiumIsActive, preResult, CalcCcCurrentPrice(preResult.Progress?.Level ?? 1), resolver));
        }
Exemple #4
0
 public AdminSpaceModel(GDetailPlanetDataModel planet, MapTypes mapType)
 {
     Id         = planet.Id;
     NativeName = planet.Name;
     Translate  = planet.Description;
     MapType    = mapType;
 }
        public GDetailPlanetDataModel AddOrUpdate(IDbConnection connection, GDetailPlanetDataModel dataModel)
        {
            var db     = _planetDetailRepo.AddOrUpdateeModel(connection, dataModel);
            var planet = _planetDetailCache.UpdateLocalItem(connection, db);

            _planetNameSercheCache.AddOrUpdate(connection, planet.Name, planet.Id, _planetDetailCache);
            return(planet);
        }
 public override List <BuildItemUnitView> GetPlanetBuildList(GDetailPlanetDataModel planet,
                                                             UserPremiumWorkModel userPremium)
 {
     return(new List <BuildItemUnitView>
     {
         _turels.GetViewModel(planet.Turels, userPremium.IsActive)
     });
 }
Exemple #7
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);
 }
Exemple #8
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);
        }
 public override List <BuildItemUnitView> GetPlanetBuildList(GDetailPlanetDataModel planet,
                                                             UserPremiumWorkModel userPremium)
 {
     return(new List <BuildItemUnitView>
     {
         _storage.GetViewModel(planet.BuildStorage, userPremium.IsActive, planet.Resources),
         _extractionModule.GetViewModel(planet.BuildExtractionModule, userPremium.IsActive,
                                        StorageResources.StorageProportion(planet.ExtractionProportin)),
         _energyConverter.GetViewModel(planet.BuildEnergyConverter, userPremium.IsActive)
     });
 }
Exemple #10
0
        public GDetailPlanetDataModel SetInitialHangarAndResource(IDbConnection connection,
                                                                  GDetailPlanetDataModel planet, bool premium = false)
        {
            planet.Hangar = UnitList.InitUnitsInOwn(true);

            planet.Resources = new StorageResources
            {
                Current = MaterialResource.InitStartResourses(),
                Max     = Storage.MaxStorable(1, premium)
            };
            return(planet);
        }
        public override List <BuildItemUnitView> GetPlanetBuildList(GDetailPlanetDataModel planet,
                                                                    UserPremiumWorkModel userPremium)
        {
            var shipyardColletion = new List <BuildItemUnitView>
            {
                _spaceShipyard.GetViewModel(planet.BuildSpaceShipyard, userPremium.IsActive)
            };
            var builds = Unit.GetBuildItemUnitViewList(planet.Hangar, planet.UnitProgress, planet.BuildSpaceShipyard, userPremium, OwnType.Planet);

            shipyardColletion.AddRange(builds);
            return(shipyardColletion);
        }
Exemple #12
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);
        }
Exemple #13
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);
        }
        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);
        }
        public static void TransactionBuildUpdate(IDbConnection connection, GDetailPlanetDataModel p, BuildUpgrade buildUpgrade, IServiceProvider resolver, UserBalanceCcDataModel ccDataModel = null)
        {
            var planetService = resolver.GetService <IGDetailPlanetService>();

            if (p == null)
            {
                throw new Exception(Error.NoData);
            }
            if (ccDataModel != null)
            {
                var storeService = resolver.GetService <IStoreService>();
                ccDataModel.Quantity = buildUpgrade.Cc;
                storeService.AddOrUpdateBalance(connection, ccDataModel);
            }

            if (buildUpgrade.StorageResources != null)
            {
                p.Resources = buildUpgrade.StorageResources;
            }

            BuildNativeNames buildType;

            Enum.TryParse(buildUpgrade.NativeName, out buildType);

            if (buildType == BuildNativeNames.Storage)
            {
                p.BuildStorage = buildUpgrade.Progress;
            }
            else if (buildType == BuildNativeNames.Turel)
            {
                p.Turels = buildUpgrade.Progress;
            }
            else if (buildType == BuildNativeNames.SpaceShipyard)
            {
                p.BuildSpaceShipyard = buildUpgrade.Progress;
            }
            else if (buildType == BuildNativeNames.EnergyConverter)
            {
                p.BuildEnergyConverter = buildUpgrade.Progress;
            }
            else if (buildType == BuildNativeNames.ExtractionModule)
            {
                p.BuildExtractionModule = buildUpgrade.Progress;
            }
            planetService.AddOrUpdate(connection, p);
        }
        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);
        }
Exemple #17
0
        private void _createTaskToUser(IDbConnection connection, GDetailPlanetDataModel targetPlanet)
        {
            var taskModel = _createTaskModelToUser(connection, targetPlanet);

            _activatedPlanetIds.Add(taskModel.TargetPlanetId);
            var targetUserId = targetPlanet.UserId;

            var timer = _taskRunner.OnUserTaskCreated(taskModel, taskModel.SourceUserId);

            if (!timer.Started)
            {
                var logger = _svp.GetService <IDemonAzureLogItem>();
                logger.CrateAndSave("UserTaskDataModel", "NpcTaskRunner._createTaskToUser", taskModel, taskModel.Id);
                timer.Dispose();
                return;
            }
            _taskService.NotyfyTaskCreated(taskModel, targetUserId);
        }
        private static Dictionary <UnitType, HangarUnitsOut> GetherPlanetUnits(GDetailPlanetDataModel planet,
                                                                               UserPremiumWorkModel userPremium)
        {
            var shipyardlevel = 1;
            var shipyard      = planet.BuildSpaceShipyard;

            if (shipyard?.Level != null)
            {
                shipyardlevel = (int)shipyard.Level;
            }
            var outUnits = UnitList.ConvertToHangar(planet.Hangar);

            if (planet.UnitProgress == null || !planet.UnitProgress.Any())
            {
                return(outUnits);
            }
            SetUnitUpgradeInHangarUnit(userPremium, shipyardlevel, ref outUnits, planet.UnitProgress);
            return(outUnits);
        }
        /// <summary>
        ///  Не делает проверки планеты на текущее состояние.
        ///  Если планета уже имеет установленного владельца, проверку нужно делать перед методом
        /// В любом слае  отправляет запрос на обновление планеты, и извлечение альянса
        /// </summary>
        /// <param name="connection"></param>
        /// <param name="planet"></param>
        /// <param name="newOwner"></param>
        /// <param name="allianceService"></param>
        public void UpdatePlanetOwner(IDbConnection connection, GDetailPlanetDataModel planet, int newOwner, IAllianceService allianceService)
        {
            var npc = NpcHelper.GetNpcByName(Npc.SkagyName);

            if (newOwner == npc.NpcUser.Id)
            {
                planet.AllianceId = npc.NpcAlliance.Id;
                planet.UserId     = newOwner;
                AddOrUpdate(connection, planet);
                return;
            }

            var allianceUser = allianceService.GetAllianceUserByUserId(connection, newOwner);

            if (planet.AllianceId != allianceUser.AllianceId)
            {
                planet.AllianceId = allianceUser.AllianceId;
            }
            planet.UserId = newOwner;
            AddOrUpdate(connection, planet);
        }
        private void _calcDangerLevel(int timeBeforeAtk, int currentTime, GDetailPlanetDataModel planet)
        {
            var deltaTime = currentTime - timeBeforeAtk;

            if (deltaTime <= UnixTime.OneHourInSecond)
            {
                planet.DangerLevel += 2;
            }
            if (deltaTime <= UnixTime.OneDayInSecond)
            {
                planet.DangerLevel += 1;
            }
            else if (deltaTime >= UnixTime.OneDayInSecond * 7 && planet.DangerLevel - 1 > 1)
            {
                planet.DangerLevel -= 1;
            }
            else if (deltaTime >= UnixTime.OneDayInSecond * 30)
            {
                planet.DangerLevel = 1;
            }
        }
Exemple #21
0
        private UserTaskDataModel _createTaskModelToUser(IDbConnection connection, GDetailPlanetDataModel targetPlanet)
        {
            //return new UserTaskDataModel();

            //tmp
            var targeFleet = _createSkagryFleet(targetPlanet.Hangar, 0.3);



            var targetPlanetGeometry = _geometryPlanetService.GetGeometryPlanetById(connection, targetPlanet.Id);
            var targetPlanetSystem   =
                _systemService.GetDetailSystemBySystemId(connection, targetPlanetGeometry.SystemId);
            var minTime     = SKAGRY_FLY_TYME_SECOND;
            var maxTime     = minTime * 2;
            var duration    = _rand.Next(minTime, maxTime);
            var newTaskItem = new UserTaskDataModel
            {
                SourceTypeId       = 20,
                SourceOwnType      = false,
                SourceOwnName      = Npc.SkagyName,
                SourceUserId       = Npc.SkagryGameUserId,
                SourceOwnId        = 0,
                TargetPlanetName   = targetPlanet.Name,
                DateActivate       = UnixTime.UtcNow(),
                Duration           = duration,
                SourceFleet        = targeFleet, // targeFleet, // targetPlanet.Hangar.CloneDeep(),
                IsAtack            = true,
                IsTransfer         = false,
                TargetPlanetId     = targetPlanet.Id,
                TargetPlanetTypeId = targetPlanetGeometry.TypeId,
                TargetSystemName   = targetPlanetSystem.Name,
                SourceSystemName   = "Unknown",
                Canselation        = false,
                TaskEnd            = false
            };
            // todo save to db new Task Item
            var dataTask = _taskService.AddOrUpdate(connection, newTaskItem);

            return(dataTask);
        }
        public GDetailPlanetDataModel ResetProgress(ref GDetailPlanetDataModel planet)
        {
            var storage = planet.BuildStorage;
            var buildEnergyConverter  = planet.BuildEnergyConverter;
            var buildExtractionModule = planet.BuildExtractionModule;
            var buildSpaceShipyard    = planet.BuildSpaceShipyard;
            var turels = planet.Turels;

            turels.Level = 0;

            ItemProgress.ResetProgress(ref storage);
            ItemProgress.ResetProgress(ref buildEnergyConverter);
            ItemProgress.ResetProgress(ref buildEnergyConverter);
            ItemProgress.ResetProgress(ref buildExtractionModule);
            ItemProgress.ResetProgress(ref buildSpaceShipyard);
            ItemProgress.ResetProgress(ref turels);

            planet.BuildStorage          = storage;
            planet.BuildEnergyConverter  = buildEnergyConverter;
            planet.BuildExtractionModule = buildExtractionModule;
            planet.BuildSpaceShipyard    = buildSpaceShipyard;
            planet.Turels = turels;
            return(planet);
        }
 public GDetailPlanetDataModel UserPlanet(IDbConnection connection, GDetailPlanetDataModel planet, UserPremiumWorkModel userPremium, IGDetailPlanetService planetService)
 {
     return(_planetRunner.RunSinglePlanet(connection, planet, userPremium, planetService));
 }
        public PlanshetViewData GetPlanetCollection(IDbConnection connection, UserDataModel user, UserPremiumWorkModel userPremium, GDetailPlanetDataModel own, bool synchronize = true)
        {
            var planet = own;

            if (synchronize)
            {
                planet = _synchronizer.UserPlanet(connection, own, userPremium, _gDetailPlanetService);
            }
            var planetPlanshet = _getPlanetCollection(GetPlanetBuildList(planet, userPremium));

            planetPlanshet.IsMother = false;
            return(planetPlanshet);
        }
Exemple #25
0
 private void _updatePlanet(IDbConnection connection, GDetailPlanetDataModel planet,
                            Func <GDetailPlanetDataModel, GDetailPlanetDataModel> action)
 {
     _gDetailPlanetService.AddOrUpdate(connection, action(planet));
 }
Exemple #26
0
        public bool CallculateNewResources(IDbConnection connection, IGDetailPlanetService service, GDetailPlanetDataModel planet, EnergyConverterChangeOut clientData)
        {
            var dbRes         = planet.Resources;
            var level         = planet.BuildEnergyConverter.GetLevel(1);
            var calculatedRes = _callculateNewResources(dbRes, clientData, level);

            if (dbRes.Equals(calculatedRes))
            {
                return(false);
            }
            planet.Resources = calculatedRes;
            service.AddOrUpdate(connection, planet);
            return(true);
        }
Exemple #27
0
        public ItemProgress Upgraded(IDbConnection connection, GDetailPlanetDataModel planet, int userId, bool premiumIsActive, IServiceProvider resolver)
        {
            var bu = new BuildUpgrade(planet.Resources, planet.BuildEnergyConverter, NativeName);

            return(base.Upgraded(connection, planet, bu, resolver));
        }
 public abstract List <BuildItemUnitView> GetPlanetBuildList(GDetailPlanetDataModel planet,
                                                             UserPremiumWorkModel userPremium);
Exemple #29
0
 public ItemProgress FixPlanetItemProgress(UnitType unitType, GDetailPlanetDataModel planet,
                                           UserPremiumWorkModel userPremium)
 {
     return(FixItemProgress(unitType, planet.Hangar, planet.UnitProgress, userPremium,
                            planet.BuildSpaceShipyard));
 }
 public int UpgradeForCc(IDbConnection connection, GDetailPlanetDataModel planet, int userId, bool premiumIsActive, BuildUpgrade preResult, IServiceProvider resolver)
 {
     return(base.UpgradeForCc(connection, planet, userId, premiumIsActive, preResult,
                              CalcCcCurrentPrice(preResult.Progress?.Level ?? 1), resolver));
 }