using System.Collections.Generic; using System.Linq; using System.Xml.Serialization; using UnityEngine; namespace RimWorldAnimationStudio { public static class Constants { public static int defaultAnimationClipLength = 600; public static int minAnimationClipLength = 2; public static int maxAnimationClipLength = 9999; public static Color ColorWhite = new Color(1f, 1f, 1f); public static Color ColorGreen = new Color(0f, 1f, 0f); public static Color ColorGoldYellow = new Color(1f, 0.85f, 0f); public static Color ColorGrey = new Color(0.5f, 0.5f, 0.5f); public static Color ColorDarkGrey = new Color(0.2f, 0.2f, 0.2f); public static Color ColorPink = new Color(1.0f, 0.5f, 0.5f); public static Color ColorOrange = new Color(1.0f, 0.7f, 0.0f); public static Color ColorRichOrange = new Color(1.0f, 0.4f, 0.1f); public static Color ColorCyan = new Color(0.0f, 1.0f, 1.0f); public static Color ColorPurple = new Color(0.85f, 0.0f, 1.0f); public static Color ColorGhost = new Color(0.5f, 0.5f, 0.5f, 0.5f); public static Color ColorRed = new Color(0.9f, 0f, 0f); } public static class Tags { public static List bodyParts = new List() { "Penis", "Vagina", "Anus", "Breasts", "Mouth" }; public static List bodyDefTypes = new List() { "Human", "Bird", "BeetleLike", "BeetleLikeWithClaw", "MechanicalCentipede", "MechanicalTermite", "Lancer", "Pikeman", "Monkey", "QuadrupedAnimalWithClawsTailAndJowl", "QuadrupedAnimalWithHooves", "QuadrupedAnimalWithHoovesAndHorn", "QuadrupedAnimalWithHoovesAndHump", "QuadrupedAnimalWithHoovesAndTusks", "QuadrupedAnimalWithHoovesTusksAndTrunk", "QuadrupedAnimalWithPaws", "QuadrupedAnimalWithPawsAndTail", "Scyther", "Snake", "TurtleLike" }; public static List sexTypes = new List() { "None", "Vaginal", "Anal", "Oral", "Masturbation", "DoublePenetration", "Boobjob", "Handjob", "Footjob", "Fingering", "Scissoring", "MutualMasturbation", "Fisting", "MechImplant", "Rimming", "Fellatio", "Cunnilingus", "Sixtynine" }; public static List interactionDefTypes = new List(); public static List soundDefs = new List() { "None", "Sex", "Fuck", "Slimy", "Suck", "Cum" }; public static List actorLayers = new List() { "Building", "BuildingOnTop", "MoteBelowThings", "Item", "ItemImportant", "LayingPawn", "PawnRope", "Projectile", "Pawn", "PawnUnused", "PawnState" }; public static List bodyTypes = new List() { "Male", "Female", "Fat", "Hulk", "Thin" }; } public static class CustomTags { public static List bodyParts = new List(); public static List bodyDefTypes = new List(); public static List sexTypes = new List(); public static List interactionDefTypes = new List(); public static List soundDefs = new List(); public static List bodyTypes = new List(); } [XmlRoot("CustomTagsHelper", IsNullable = false)] public class CustomTagsHelper { [XmlArray("bodyParts"), XmlArrayItem("li")] public List bodyParts = new List(); [XmlArray("bodyDefTypes"), XmlArrayItem("li")] public List bodyDefTypes = new List(); [XmlArray("sexTypes"), XmlArrayItem("li")] public List sexTypes = new List(); [XmlArray("interactionDefTypes"), XmlArrayItem("li")] public List interactionDefTypes = new List(); [XmlArray("soundDefs"), XmlArrayItem("li")] public List soundDefs = new List(); [XmlArray("bodyTypes"), XmlArrayItem("li")] public static List bodyTypes = new List(); } public static class AlienRaceDefs { public static List allDefs = new List(); public static AlienRaceDef GetNamed(string alienRaceDef) { return allDefs.FirstOrDefault(x => x.defName == alienRaceDef); } public static void AddDef(AlienRaceDef alienRaceDef) { if (allDefs.Any(x => x.defName == alienRaceDef.defName)) return; allDefs.Add(alienRaceDef); } public static void OnLoad() { List allTags = Tags.bodyTypes.Concat(CustomTags.bodyTypes).ToList(); allTags.Add("None"); List facings = new List() { CardinalDirection.North, CardinalDirection.East, CardinalDirection.South }; string path; foreach (AlienRaceDef alienRaceDef in allDefs) { foreach (CardinalDirection facing in facings) { foreach (string bodyType in allTags) { path = alienRaceDef.GetBodyTypeGraphicPath(facing, bodyType); if (path != null && path != "") { alienRaceDef.SetBodyTypeGraphicPath(path, facing, bodyType); } } path = alienRaceDef.GetHeadGraphicPath(facing); if (path != null && path != "") { alienRaceDef.SetHeadGraphicPath(path, facing); } } } } } }