コード例 #1
0
        public void ForceModuleAvailable(int moduleId)
        {
            ShipModuleInfo module = GetModule(moduleId);

            if (module != null && module.State == ShipModuleState.Locked)
            {
                module.SetState(ShipModuleState.Available);
            }
        }
コード例 #2
0
        public void ForceOpenModule(int moduleId)
        {
            ShipModuleInfo module = GetModule(moduleId);

            if (module != null)
            {
                AddModuleCounter(module.Id, 1);
                module.SetState(ShipModuleState.Opened);
            }
        }
コード例 #3
0
ファイル: PlanetService.cs プロジェクト: OlegGelezcov/boscs
        //In past modules where not binded to planets and can be
        //situation when we has planet already opened, but module yet not purchased
        //In this case I look current  planet state and if it's opened then force buy all required modules for this planet
        //It's check occured when service loaded
        private IEnumerator BuyMissedModules()
        {
            yield return(new WaitUntil(() => IsLoaded && Services.Modules.IsLoaded && GameMode.IsGame));

            if (CurrentPlanet.Id != PlanetConst.EARTH_ID)
            {
                if (CurrentPlanet.LocalData.IsModuleRequired)
                {
                    int maxModuleId = CurrentPlanet.LocalData.module_id;
                    for (int i = 0; i <= maxModuleId; i++)
                    {
                        ShipModuleInfo module = Services.Modules.GetModule(i);
                        if (module != null)
                        {
                            if (module.State != ShipModuleState.Opened)
                            {
                                Services.Modules.ForceModuleAvailable(module.Id);
                                Services.Modules.ForceOpenModule(module.Id);
                            }
                        }
                    }
                }
            }
        }
コード例 #4
0
        public ModuleTransactionState BuyModule(int moduleId)
        {
            ShipModuleInfo module = GetModule(moduleId);

            if (module.State == ShipModuleState.Available)
            {
                IPlayerService playerService = Services.PlayerService;
                if (playerService.IsEnough(module.Data.Currency))
                {
                    playerService.RemoveCurrency(module.Data.Currency);
                    AddModuleCounter(module.Id, 1);
                    module.SetState(ShipModuleState.Opened);
                    return(ModuleTransactionState.Success);
                }
                else
                {
                    return(ModuleTransactionState.NotEnoughCurrency);
                }
            }
            else
            {
                return(ModuleTransactionState.NotValidState);
            }
        }
コード例 #5
0
 public static void OnShipModuleStateChanged(ShipModuleState oldState, ShipModuleState newState, ShipModuleInfo module)
 => ShipModuleStateChanged?.Invoke(oldState, newState, module);
コード例 #6
0
 private void OnShipModuleStateChanged(ShipModuleState oldState, ShipModuleState newState, ShipModuleInfo module)
 {
     if (IsLoaded)
     {
         if (newState == ShipModuleState.Opened)
         {
             SkipState(TutorialStateName.SpaceShip);
         }
     }
 }
コード例 #7
0
 private void LogModuleOpenTime(ShipModuleInfo module)
 => FB.LogAppEvent("module_opened_time", 1, new Dictionary <string, object> {
     ["id"]   = module.Id,
     ["time"] = (module.OpenTime - GameMode.GameStartTime).ToTextMark()
 });
コード例 #8
0
 private void OnShipModuleStateChanged(ShipModuleState oldState, ShipModuleState newState, ShipModuleInfo info)
 {
     if (oldState != newState)
     {
         if (newState == ShipModuleState.Opened)
         {
             LogModuleOpenTime(info);
             Services.Modules.GetModuleCounter().Match(
                 None: () => {
                 return(F.None);
             },
                 Some: count => {
                 LogModuleOpenCounter(count);
                 return(F.Some(count));
             });
         }
     }
 }