private void CheckMutationProgress() { if (_addedMutationData == null) { return; } int mx = _addedMutationData.Count; if (mx == 0) { return; } int idx = Mathf.FloorToInt(Mathf.Clamp(PercentDone * mx, 0, mx - 1)); if (idx != _curMutationIndex) { var pawn = innerContainer?.FirstOrDefault() as Pawn; if (pawn == null) { return; } _curMutationIndex = idx; IReadOnlyMutationData mutationData = _addedMutationData[_curMutationIndex]; ApplyMutationData(pawn, mutationData); } }
/// <summary> /// Initializes a new instance of the <see cref="MutationData"/> class. /// </summary> /// <param name="mData">The m data.</param> public MutationData([NotNull] IReadOnlyMutationData mData) { if (mData == null) { throw new ArgumentNullException(nameof(mData)); } mutation = mData.Mutation; part = mData.Part; severity = mData.Severity; isHalted = mData.IsHalted; removing = mData.Removing; }
private void ApplyMutationData([NotNull] Pawn pawn, [NotNull] IReadOnlyMutationData mutationData) { if (mutationData.Part != null) { if (mutationData.Part.IsMissingAtAllIn(pawn)) { return; } } mutationData.ApplyMutationData(pawn, MutationUtilities.AncillaryMutationEffects.HistoryOnly); }
/// <summary> /// Adds the specified m data. /// </summary> /// <param name="mData">The m data.</param> public void Add([NotNull] IReadOnlyMutationData mData) { mutationData.Add(new MutationData(mData)); }
private void ApplyMutationData([NotNull] Pawn pawn, [NotNull] IReadOnlyMutationData mutationData) { mutationData.ApplyMutationData(pawn, MutationUtilities.AncillaryMutationEffects.HistoryOnly); }