protected void onUpdateSettings(BaseQualityControl moduleQualityControl) { //Quality check events if (BARISSettings.PartsCanBreak && BARISBreakableParts.RCSCanFail) { if (checkQualityDuringRCSToggle) { BARISScenario.Instance.onRcsUpdate += onRCSUpdate; } if (checkQualityDuringSASToggle) { BARISScenario.Instance.onSasUpdate += onSASUpdate; } if (checkQualityDuringThrottling) { BARISScenario.Instance.onThrottleUpDown += onThrottleUpdate; } } else { if (checkQualityDuringRCSToggle) { BARISScenario.Instance.onSasUpdate -= onRCSUpdate; } if (checkQualityDuringSASToggle) { BARISScenario.Instance.onSasUpdate -= onSASUpdate; } if (checkQualityDuringThrottling) { BARISScenario.Instance.onThrottleUpDown -= onThrottleUpdate; } } }
protected void onUpdateSettings(BaseQualityControl moduleQualityControl) { if (!BARISBridge.DrillsCanFail) { isBroken = false; } }
public void OnPartBroken(BaseQualityControl moduleQualityControl) { if (!BARISBridge.PartsCanBreak || !BARISBridge.SASCanFail) { return; } isBroken = true; if (moduleSAS != null) { moduleSAS.enabled = false; moduleSAS.isEnabled = false; } if (reactionWheel != null) { reactionWheel.enabled = false; reactionWheel.isEnabled = false; } if (this.part.vessel == FlightGlobals.ActiveVessel) { string message = Localizer.Format(this.part.partInfo.title + BARISScenario.SASBroken); BARISScenario.Instance.LogPlayerMessage(message); } qualityControl.UpdateQualityDisplay(qualityControl.qualityDisplay + Localizer.Format(BARISScenario.SASLabel)); }
public void OnPartFixed(BaseQualityControl moduleQualityControl) { isBroken = false; rcsModule.enabled = true; rcsModule.isEnabled = true; rcsModule.moduleIsEnabled = false; }
public void SubscribeToEvents(BaseQualityControl moduleQualityControl) { qualityControl = this.part.FindModuleImplementing <BaseQualityControl>(); qualityControl.onPartBroken += OnPartBroken; qualityControl.onPartFixed += OnPartFixed; qualityControl.onMothballStateChanged += onMothballStateChanged; }
public void GetPartModules() { BaseEvent cmdEvent; int totalEvents; commandModule = this.part.FindModuleImplementing <ModuleCommand>(); if (commandModule != null) { totalEvents = commandModule.Events.Count; for (int index = 0; index < totalEvents; index++) { cmdEvent = commandModule.Events.GetByIndex(index); cmdEvent.guiActive = false; cmdEvent.guiActiveUnfocused = false; } } switcher = this.part.FindModuleImplementing <WBIResourceSwitcher>(); if (switcher != null) { switcher.Events["ToggleDecals"].guiActive = false; switcher.Events["ToggleDecals"].guiActiveUnfocused = false; switcher.Events["DumpResources"].guiActive = false; switcher.Events["DumpResources"].guiActiveUnfocused = false; } lightModule = this.part.FindModuleImplementing <WBILight>(); qualityControl = this.part.FindModuleImplementing <BaseQualityControl>(); }
protected void onUpdateSettings(BaseQualityControl moduleQualityControl) { Events["ExplodeEngine"].guiActive = BARISScenario.showDebug; Events["EngineStuckOn"].guiActive = BARISScenario.showDebug; Events["ShutdownEngine"].guiActive = BARISScenario.showDebug; Events["GenerateFailureMode"].guiActive = BARISScenario.showDebug; partsCanBreak = BARISScenario.partsCanBreak; }
public void SubscribeToEvents(BaseQualityControl moduleQualityControl) { qualityControl = (ModuleQualityControl)moduleQualityControl; //qualityControl.onUpdateSettings += onUpdateSettings; qualityControl.onPartBroken += OnPartBroken; qualityControl.onPartFixed += OnPartFixed; qualityControl.onMothballStateChanged += onMothballStateChanged; if (BARISScenario.showDebug && qualityControl.guiVisible) { } }
public void OnPartFixed(BaseQualityControl moduleQualityControl) { isBroken = true; //Enable all the part modules we're supposed to. foreach (PartModule partModule in breakablePartModules) { partModule.enabled = true; partModule.isEnabled = true; partModule.moduleIsEnabled = true; } }
protected void onUpdateSettings(BaseQualityControl moduleQualityControl) { //Quality check events if (BARISSettings.PartsCanBreak && BARISBreakableParts.RCSCanFail) { BARISScenario.Instance.onRcsUpdate += onRcsUpdate; } else { BARISScenario.Instance.onSasUpdate -= onRcsUpdate; } }
public void OnPartBroken(BaseQualityControl moduleQualityControl) { isBroken = true; opsManagerView.isBroken = isBroken; List <ModuleResourceConverter> converters = this.part.FindModulesImplementing <ModuleResourceConverter>(); foreach (ModuleResourceConverter converter in converters) { converter.StopResourceConverter(); } }
public virtual void OnPartBroken(BaseQualityControl moduleQualityControl) { isBroken = true; StopResourceConverter(); if (this.part.vessel == FlightGlobals.ActiveVessel) { string message = Localizer.Format(this.part.partInfo.title + BARISBridge.DrillBroken); BARISBridge.LogPlayerMessage(message); } qualityControl.UpdateQualityDisplay(qualityControl.qualityDisplay + Localizer.Format(BARISBridge.DrillLabel)); }
public void OnPartBroken(BaseQualityControl moduleQualityControl) { if (!BARISSettings.PartsCanBreak || !BARISBreakableParts.EnginesCanFail) { return; } //Generate a failure mode GenerateFailureMode(); //Subscribe to the time tick event to apply failure mode. BARISScenario.Instance.onTimeTickEvent += failureModeTimeTick; }
public void SubscribeToEvents(BaseQualityControl moduleQualityControl) { qualityControl = moduleQualityControl; qualityControl.onPartBroken += OnPartBroken; qualityControl.onPartFixed += OnPartFixed; qualityControl.onUpdateSettings += onUpdateSettings; //Make sure we're broken if (isBroken) { OnPartBroken(qualityControl); } }
public void SubscribeToEvents(BaseQualityControl moduleQualityControl) { debugLog("SubscribeToEvents"); qualityControl = (ModuleQualityControl)moduleQualityControl; qualityControl.onUpdateSettings += onUpdateSettings; qualityControl.onPartBroken += OnPartBroken; qualityControl.onPartFixed += OnPartFixed; //Handle persistence case for broken part. if (isBroken) { OnPartBroken(qualityControl); } }
public void OnPartFixed(BaseQualityControl moduleQualityControl) { isBroken = false; if (moduleSAS != null) { moduleSAS.enabled = true; moduleSAS.isEnabled = true; } if (reactionWheel != null) { reactionWheel.enabled = true; reactionWheel.isEnabled = true; } }
public void SubscribeToEvents(BaseQualityControl moduleQualityControl) { debugLog("SubscribeToEvents"); qualityControl = moduleQualityControl; qualityControl.onPartBroken += OnPartBroken; qualityControl.onPartFixed += OnPartFixed; qualityControl.onUpdateSettings += onUpdateSettings; qualityControl.onMothballStateChanged += onMothballStateChanged; //Make sure we're broken if (isBroken) { OnPartBroken(qualityControl); } }
public void SubscribeToEvents(BaseQualityControl moduleQualityControl) { debugLog("SubscribeToEvents"); qualityControl = (ModuleQualityControl)moduleQualityControl; qualityControl.onUpdateSettings += onUpdateSettings; qualityControl.onPartBroken += OnPartBroken; qualityControl.onPartFixed += OnPartFixed; if (BARISScenario.showDebug && qualityControl.guiVisible) { Events["CreateSmallLeak"].guiActive = true; Events["CreateMediumLeak"].guiActive = true; Events["CreateLargeLeak"].guiActive = true; } }
public void OnPartBroken(BaseQualityControl moduleQualityControl) { if (!BARISSettings.PartsCanBreak && !BARISBreakableParts.RCSCanFail) { return; } isBroken = true; //Cause the part to explode if we've fallen below the target number. if (explodeTargetNumber > -1) { if (qualityControl.lastQualityCheck.resultRoll <= explodeTargetNumber) { //Send a message if (this.part.vessel == FlightGlobals.ActiveVessel) { string message = Localizer.Format(this.part.partInfo.title + BARISScenario.CascadeFailureMsg); BARISScenario.Instance.LogPlayerMessage(message); } this.part.explode(); return; } } //If we've suffered a critical failure and are supposed to explode, then do so. if (explodeOnCriticalFailure && qualityControl.lastQualityCheck.statusResult == QualityCheckStatus.criticalFail) { //Send a message if (this.part.vessel == FlightGlobals.ActiveVessel) { string message = Localizer.Format(this.part.partInfo.title + BARISScenario.CascadeFailureMsg); BARISScenario.Instance.LogPlayerMessage(message); } this.part.explode(); return; } //Disable all the part modules we're supposed to. foreach (PartModule partModule in breakablePartModules) { partModule.enabled = false; partModule.isEnabled = false; partModule.moduleIsEnabled = false; } }
public void SubscribeToEvents(BaseQualityControl moduleQualityControl) { debugLog("SubscribeToEvents"); qualityControl = (ModuleQualityControl)moduleQualityControl; qualityControl.onUpdateSettings += onUpdateSettings; qualityControl.onPartBroken += OnPartBroken; qualityControl.onPartFixed += OnPartFixed; BARISScenario.Instance.onThrottleUpDown += onThrottleUpDown; if (BARISScenario.showDebug && qualityControl.guiVisible) { Events["ExplodeEngine"].guiActive = true; Events["EngineStuckOn"].guiActive = true; Events["ShutdownEngine"].guiActive = true; Events["GenerateFailureMode"].guiActive = true; } }
public void OnPartBroken(BaseQualityControl moduleQualityControl) { if (!BARISSettings.PartsCanBreak && !BARISBridge.RCSCanFail) { return; } isBroken = true; rcsModule.moduleIsEnabled = true; if (this.part.vessel == FlightGlobals.ActiveVessel) { string message = Localizer.Format(this.part.partInfo.title + BARISScenario.RCSBroken); BARISScenario.Instance.LogPlayerMessage(message); } qualityControl.UpdateQualityDisplay(qualityControl.qualityDisplay + Localizer.Format(BARISScenario.RCSLabel)); }
public void OnPartFixed(BaseQualityControl moduleQualityControl) { ModuleEngines[] engines = multiModeEngines.Values.ToArray(); //Restore engine state isStuckOn = false; for (int index = 0; index < engines.Length; index++) { engines[index].currentThrottle = FlightInputHandler.state.mainThrottle; engines[index].allowShutdown = allowShutdown[index]; engines[index].throttleLocked = throttleLocked[index]; } //Reset failure mode failureMode = BARRISEngineFailureModes.None; failureModeID = 0; BARISScenario.Instance.onTimeTickEvent -= failureModeTimeTick; }
public virtual void OnPartBroken(BaseQualityControl moduleQualityControl) { if (!BARISBridge.ConvertersCanFail) { return; } isBroken = true; IsActivated = false; //Generate a failure mode if (this.part.vessel == FlightGlobals.ActiveVessel) { string message = Localizer.Format(this.part.partInfo.title + partBrokenMessage); BARISBridge.LogPlayerMessage(message); } qualityControl.UpdateQualityDisplay(qualityControl.qualityDisplay + Localizer.Format(partBrokenLabel)); }
public void OnPartBroken(BaseQualityControl moduleQualityControl) { if (!BARISSettings.PartsCanBreak || !BARISBreakableParts.TanksCanFail) { return; } //If we're out of MTBF and we suffered a critical failure, then dump resources or blow up the part. if (qualityControl.lastQualityCheck.statusResult == QualityCheckStatus.criticalFail) { DumpResources(); } //Generate a resource leak. else { leakedUnitsPerSec += CalculateLeakRate(); BARISScenario.Instance.onTimeTickEvent += leakTimeTick; } }
public void OnPartBroken(BaseQualityControl moduleQualityControl) { if (!BARISSettings.PartsCanBreak || !BARISBridge.TransmittersCanFail) { return; } isBroken = true; if (transmitter.IsBusy()) { transmitter.StopTransmission(); } transmitter.enabled = false; transmitter.isEnabled = false; if (this.part.vessel == FlightGlobals.ActiveVessel) { string message = Localizer.Format(this.part.partInfo.title + BARISScenario.TransmitterBroken); BARISScenario.Instance.LogPlayerMessage(message); } qualityControl.UpdateQualityDisplay(qualityControl.qualityDisplay + Localizer.Format(BARISScenario.TransmitterLabel)); }
public void OnPartBroken(BaseQualityControl moduleQualityControl) { if (!BARISBridge.PartsCanBreak || !BARISBridge.EnginesCanFail) { return; } //Record state isBroken = true; //If the chute is deployed then cut the chute string message = string.Empty; string qualityDisplay = string.Empty; if (deploymentState == deploymentStates.DEPLOYED || deploymentState == deploymentStates.SEMIDEPLOYED) { CutParachute(); //Player messages message = this.part.partInfo.title + " chute cut!"; qualityDisplay = "Broken"; } else { //The chute cannot deploy message = this.part.partInfo.title + " cannot deploy chute!"; qualityDisplay = " stuck"; ; } //Inform player qualityControl.UpdateQualityDisplay(qualityControl.qualityDisplay + qualityDisplay); if (this.part.vessel == FlightGlobals.ActiveVessel) { BARISScenario.Instance.LogPlayerMessage(message); } }
public virtual void OnPartFixed(BaseQualityControl moduleQualityControl) { isBroken = false; }
protected void onUpdateSettings(BaseQualityControl moduleQualityControl) { Events["CreateSmallLeak"].guiActive = BARISScenario.showDebug; Events["CreateMediumLeak"].guiActive = BARISScenario.showDebug; Events["CreateLargeLeak"].guiActive = BARISScenario.showDebug; }
public override void OnPartFixed(BaseQualityControl qualityControl) { base.OnPartFixed(qualityControl); SetupGUI(); }
public void onPartBroken(BaseQualityControl moduleQualityControl) { if (!isRunning || moduleQualityControl.part == this.part) { return; } ModuleQualityControl qualityModule = null; if (moduleQualityControl is ModuleQualityControl) { qualityModule = (ModuleQualityControl)moduleQualityControl; } if (qualityModule == null) { return; } //Record original highlight color qualityModule.originalHighlightColor = qualityModule.part.highlightColor; //Set broken highlight color qualityModule.part.highlightColor = Color.red; qualityModule.part.Highlight(true); //Roll RNG to see if the part gains quality. int rollResult = UnityEngine.Random.Range(minDieRoll, maxDieRoll); string partTitle = string.Empty; int totalQuality = 0; string message = ""; //If we've met our target number then improve part quality. if (rollResult >= improveQualityTargetNumber) { //Get the part title partTitle = qualityModule.part.partInfo.title; //Don't exceed max quality. totalQuality = qualityModule.quality + BARISScenario.Instance.GetFlightBonus(qualityModule.part); if (totalQuality + qualityImprovementAmount <= BARISBridge.QualityCap) { //Record the flight experience. BARISScenario.Instance.RecordFlightExperience(qualityModule.part, BARISBridge.FlightsPerQualityBonus * qualityImprovementAmount); //Calculate the new quality rating. totalQuality = qualityModule.quality + BARISScenario.Instance.GetFlightBonus(qualityModule.part); message = partTitle + " " + BARISScenario.QualityLabel + totalQuality; //Inform the user. ScreenMessages.PostScreenMessage(message, BARISScenario.MessageDuration, ScreenMessageStyle.UPPER_CENTER); } else { //Max quality reached. message = partTitle + Localizer.Format(BARISScenario.kMaxQualityReached); //Inform the user. ScreenMessages.PostScreenMessage(message, BARISScenario.MessageDuration, ScreenMessageStyle.UPPER_CENTER); } } //Roll to see if the vessel explodes. If not then increase the chances slightly. float explodeResult = UnityEngine.Random.Range(0f, 100.0f); if (explodeResult >= (100.0f - vesselExplodeProbability)) { for (int index = 0; index < qualityModules.Length; index++) { qualityModules[index].SetMarkedForDeath(true); } } else { vesselExplodeProbability += explodeProbabilityIncrement; //Update quality qualityModule.quality = totalQuality; qualityModule.UpdateQualityDisplay(BARISScenario.GetConditionSummary(qualityModule.currentMTBF, qualityModule.MaxMTBF, qualityModule.currentQuality, qualityModule.MaxQuality)); } }