public void ForceModuleAvailable(int moduleId) { ShipModuleInfo module = GetModule(moduleId); if (module != null && module.State == ShipModuleState.Locked) { module.SetState(ShipModuleState.Available); } }
public void ForceOpenModule(int moduleId) { ShipModuleInfo module = GetModule(moduleId); if (module != null) { AddModuleCounter(module.Id, 1); module.SetState(ShipModuleState.Opened); } }
//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); } } } } } }
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); } }
public static void OnShipModuleStateChanged(ShipModuleState oldState, ShipModuleState newState, ShipModuleInfo module) => ShipModuleStateChanged?.Invoke(oldState, newState, module);
private void OnShipModuleStateChanged(ShipModuleState oldState, ShipModuleState newState, ShipModuleInfo module) { if (IsLoaded) { if (newState == ShipModuleState.Opened) { SkipState(TutorialStateName.SpaceShip); } } }
private void LogModuleOpenTime(ShipModuleInfo module) => FB.LogAppEvent("module_opened_time", 1, new Dictionary <string, object> { ["id"] = module.Id, ["time"] = (module.OpenTime - GameMode.GameStartTime).ToTextMark() });
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)); }); } } }