예제 #1
0
        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);
            }
        }
예제 #2
0
 /// <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;
 }
예제 #3
0
        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);
        }
예제 #4
0
 /// <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));
 }
예제 #5
0
 private void ApplyMutationData([NotNull] Pawn pawn, [NotNull] IReadOnlyMutationData mutationData)
 {
     mutationData.ApplyMutationData(pawn, MutationUtilities.AncillaryMutationEffects.HistoryOnly);
 }