using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using UnityEngine; using UnityEngine.UI; namespace RimWorldAnimationStudio { public class SelectBodyPartsDialog : DialogBox { public override void Initialize(bool addedNewTag = false) { IEnumerable allTags = Tags.bodyParts.Concat(CustomTags.bodyParts); string placeHolderText = "Enter new body part name..."; Actor actor = Workspace.animationDef.actors[Workspace.actorID]; Transform contentWindow = transform.FindDeepChild("Content"); Reset(); Transform _appendageToggle = AddCloneObjectToParent(contentWindow).transform; _appendageToggle.Find("Text").GetComponent().text = "Any appendage"; Toggle appendageToggleComp = _appendageToggle.GetComponent(); appendageToggleComp.isOn = actor.isFucking; appendageToggleComp.onValueChanged.AddListener(delegate { actor.isFucking = appendageToggleComp.isOn; Workspace.Instance.RecordEvent("Actor required body part");}); Transform _orificeToggle = AddCloneObjectToParent(contentWindow).transform; _orificeToggle.Find("Text").GetComponent().text = "Any orifice"; Toggle orificeToggleComp = _orificeToggle.GetComponent(); orificeToggleComp.isOn = actor.isFucked; orificeToggleComp.onValueChanged.AddListener(delegate { actor.isFucked = orificeToggleComp.isOn; Workspace.Instance.RecordEvent("Actor required body part"); }); for (int i = 0; i < allTags.Count(); i++) { string tag = allTags.ElementAt(i); Transform _optionToggle = AddCloneObjectToParent(contentWindow).transform; _optionToggle.Find("Text").GetComponent().text = tag; Toggle toggleComp = _optionToggle.GetComponent(); toggleComp.isOn = actor.requiredGenitals.Contains(tag); toggleComp.onValueChanged.AddListener(delegate { if (toggleComp.isOn && actor.requiredGenitals.Contains(tag) == false) { actor.requiredGenitals.Add(tag); } else if (toggleComp.isOn == false && actor.requiredGenitals.Contains(tag)) { actor.requiredGenitals.Remove(tag); } Workspace.Instance.RecordEvent("Actor required body part"); }); if (addedNewTag && i == allTags.Count() - 1) { toggleComp.isOn = true; } } Transform _optionField = AddCloneObjectToParent(contentWindow, 1).transform; _optionField.Find("Placeholder").GetComponent().text = placeHolderText; InputField fieldComp = _optionField.GetComponent(); fieldComp.onEndEdit.AddListener(delegate { AddCustomTag(fieldComp, ref Tags.bodyParts, ref CustomTags.bodyParts); }); } public void Reset() { Transform contentWindow = transform.FindDeepChild("Content"); RemoveCloneObjectsFromParent(contentWindow); } } }