public void StartDeconstructionPreparation() { if (WorkingCharacter != null) { WorkingCharacter.InterruptActivity(); WorkingCharacter = null; } ProductionStarted = false; Halted = true; jobReservation = null; InputStorage.StartDeconstructionPreparation(); preparingForDeconstruction = true; }
public bool Work(float deltaTime, Character workingCharacter) { if (ProductionStarted == false && (InputStorage.AreRequirementsMet == false || OutputStorage.IsEmpty == false)) { return(false); } if (WorkingCharacter != null && WorkingCharacter != workingCharacter) { return(false); } jobReservation = null; if (ProductionStarted == false) { if (RemainingProductionCycles == 0) { WorkingCharacter.WorkFinished(); WorkingCharacter = null; return(false); } if (Consume()) { ProductionStarted = true; productionTimeLeft = productionTime; WorkingCharacter = workingCharacter; timeWithoutWork = 0; return(true); } else { return(false); } } else { productionTimeLeft -= deltaTime; WorkingCharacter = workingCharacter; timeWithoutWork = 0; if (productionTimeLeft <= 0) { if (Produce()) { ProductionStarted = false; RemainingProductionCycles -= 1; workingCharacter.WorkFinished(); if (IsNaturalDeposit) { GameManager.Instance.World.RemoveNaturalDepositReservations(workingCharacter); } return(true); } else { return(false); } } else { return(true); } } }