public override SurgeryAction GetSurgeryStep(SurgeryToolType toolType) { if (_skinOpened) { if (_vesselsClamped) { if (_skinRetracted) { if (_targetOrgan != null && toolType == SurgeryToolType.VesselCompression) { return(RemoveOrganSurgery); } if (toolType == SurgeryToolType.Incision) //_targetOrgan is potentially given a value by DisconnectOrganSurgery. { return(DisconnectOrganSurgery); } else if (toolType == SurgeryToolType.Cauterization) { return(CautizerizeIncisionSurgery); } } else { if (toolType == SurgeryToolType.Retraction) { return(RetractSkinSurgery); } else if (toolType == SurgeryToolType.Cauterization) { return(CautizerizeIncisionSurgery); } } } else { if (toolType == SurgeryToolType.VesselCompression) { return(ClampVesselsSurgery); } else if (toolType == SurgeryToolType.Cauterization) { return(CautizerizeIncisionSurgery); } } } else { if (toolType == SurgeryToolType.Incision) { return(OpenSkinSurgery); } } return(null); }
/// <summary> /// Attempts to perform surgery with the given tooltype. Returns whether the operation was successful. /// </summary> /// /// <param name="toolType">The SurgeryToolType used for this surgery.</param> /// /// <param name="performer">The entity performing the surgery.</param> public bool PerformSurgery(SurgeryToolType toolType, BodyManagerComponent target, IEntity performer) { SurgeryAction step = GetSurgeryStep(toolType); if (step == null) { return(false); } step(target, performer); return(true); }
/// <summary> /// Attempts to perform surgery on this BodyPart with the given tool. Returns false if there was an error, true if successful. /// </summary> public bool AttemptSurgery(SurgeryToolType toolType, BodyManagerComponent target, IEntity performer) { return(_surgeryData.PerformSurgery(toolType, target, performer)); }
/// <summary> /// Returns whether the given SurgertToolType can be used on the current state of this BodyPart (e.g. /// </summary> public bool SurgeryCheck(SurgeryToolType toolType) { return(_surgeryData.CheckSurgery(toolType)); }
/// <summary> /// Returns whether the given SurgeryToolType can be used to perform a surgery. /// </summary> public bool CheckSurgery(SurgeryToolType toolType) { return(GetSurgeryStep(toolType) != null); }
/// <summary> /// Gets the delegate corresponding to the surgery step using the given SurgeryToolType. Returns null if no surgery step can be performed. /// </summary> public abstract SurgeryAction GetSurgeryStep(SurgeryToolType toolType);