private void ResetNanoPrinter() { // reset storage settings settings = new StorageSettings(this); if (def.building.defaultStorageSettings != null) { settings.CopyFrom(def.building.defaultStorageSettings); } // reset slotGroup if (slotGroup != null) { // Destroy storage zone slotGroup.Notify_ParentDestroying(); slotGroup = null; } // reset neededMaterial scannedBlueprint = null; neededMaterial = new Dictionary <ThingDef, int>(); productionCountDown = productionCountDownStartValue; status = NanoPrinterStatus.Idle; }
// ===================== Status switch ===================== #region Status Switching private void SwitchState() { switch (status) { case NanoPrinterStatus.Paused: status = NanoPrinterStatus.Paused; break; case NanoPrinterStatus.Idle: status = NanoPrinterStatus.Scanning; break; case NanoPrinterStatus.Scanning: if (StateScanning()) { status = NanoPrinterStatus.Gathering; } break; case NanoPrinterStatus.Gathering: status = NanoPrinterStatus.Printing; break; case NanoPrinterStatus.Printing: ResetNanoPrinter(); status = NanoPrinterStatus.Idle; break; default: status = NanoPrinterStatus.Error; break; } }
private void CreateNewSlotGroup() { if (slotGroup == null) { // Create the new collection position (storage zone) slotGroup = new SlotGroup(this); status = NanoPrinterStatus.Gathering; } }
private void ResetNanoPrinter() { // reset neededMaterial scannedBlueprint = null; neededMaterial = new Dictionary <ThingDef, int>(); productionCountDown = productionCountDownStartValue; status = NanoPrinterStatus.Idle; }
private void ButtonPressed_Stop() { if (status != NanoPrinterStatus.Paused && status != NanoPrinterStatus.Idle) { status = NanoPrinterStatus.Paused; return; } ResetNanoPrinter(); }
// ===================== Functions ===================== #region Functions private void DoWorkAfterLoading() { NanoPrinterStatus saveStatus = status; int saveProductionCountdown = productionCountDown; ResetNanoPrinter(); StateScanning(true); status = saveStatus; productionCountDown = saveProductionCountdown; }
private void ButtonPressed_Start() { if (status == NanoPrinterStatus.Error) { return; } //CheckIfItemIsAtReceivePoint(); status = NanoPrinterStatus.Scanning; SwitchState(); }
// ===================== Functions ===================== #region Functions private void DoWorkAfterLoading() { NanoPrinterStatus saveStatus = status; int saveProductionCountdown = productionCountDown; ResetNanoPrinter(); StateScanning(true); status = saveStatus; productionCountDown = saveProductionCountdown; if (status == NanoPrinterStatus.Gathering) { CreateNewSlotGroup(); } }
private void ButtonPressed_Stop() { if (status != NanoPrinterStatus.Paused && status != NanoPrinterStatus.Idle) { if (slotGroup != null) { // Destroy storage zone slotGroup.Notify_ParentDestroying(); slotGroup = null; } status = NanoPrinterStatus.Paused; return; } ResetNanoPrinter(); }
private bool StateScanning(bool onlyScanning = false) { if (neededMaterial != null && neededMaterial.Count() != 0 && scannedBlueprint != null && scannedThingName != "") { return(true); } IEnumerable <Building> scanner = AllAdjacentScanner; if (scanner == null || scanner.Count() <= 0) { if (!onlyScanning) { Messages.Message(txtScanningNoHoppersFound.Translate(), MessageTypeDefOf.RejectInput); status = NanoPrinterStatus.Idle; } return(false); } // Set def of scanned object Thing foundThing = AllItemsInScanner; if (foundThing == null) { if (!onlyScanning) { Messages.Message(txtScanningNoItemsFound.Translate(), MessageTypeDefOf.RejectInput); status = NanoPrinterStatus.Idle; } return(false); } // calc needed material for the found object int price = CalcItemPrice(foundThing); scannedThingName = foundThing.Label; scannedBlueprint = foundThing.def; scannedBlueprintStuff = foundThing.Stuff; neededMaterial.Add(thingDefOfSteel, price); return(true); }
private void SetReceivedError() { status = NanoPrinterStatus.Error; }
private void SetReceivedError() { slotGroup.Notify_ParentDestroying(); slotGroup = null; status = NanoPrinterStatus.Error; }