using System.Collections.Generic; using System.Text; using UnityEngine; using Verse; namespace RJW_Menstruation.Sexperience { public class GatheredCumMixture : ThingWithComps { public Color cumColor = Color.white; public List ingredients = new List(); public override Color DrawColor => cumColor; public override void ExposeData() { base.ExposeData(); Scribe_Values.Look(ref cumColor, "cumColor", Color.white, true); Scribe_Collections.Look(ref ingredients, "ingredients"); } public override bool TryAbsorbStack(Thing other, bool respectStackLimit) { float amount = stackCount; float count = ThingUtility.TryAbsorbStackNumToTake(this, other, respectStackLimit); bool res = base.TryAbsorbStack(other, respectStackLimit); if (res && other is GatheredCumMixture mixture) { GatheredCumMixture othercum = mixture; cumColor = Colors.CMYKLerp(cumColor, othercum.cumColor, count / (amount + count)); if (!othercum.ingredients.NullOrEmpty()) for (int i = 0; i < othercum.ingredients.Count; i++) { if (!ingredients.Contains(othercum.ingredients[i])) ingredients.Add(othercum.ingredients[i]); } } return res; } public override string GetInspectString() { StringBuilder res = new StringBuilder(); if (!ingredients.NullOrEmpty()) for (int i = 0; i < ingredients.Count; i++) { res.Append(ingredients[i]); if (i != ingredients.Count - 1) res.Append(", "); } return res.ToString(); } public void InitwithCum(CumMixture cum) { ingredients.AddRange(cum.Getingredients); cumColor = cum.Color; } } }