public static bool PopulateSaveableUpgrades(VehicleDef def, bool hardReset = false) { try { if (hardReset) { VehicleMod.settings.upgrades.upgradeSettings.Remove(def.defName); } if (def.HasComp(typeof(CompUpgradeTree))) { if (!VehicleMod.settings.upgrades.upgradeSettings.TryGetValue(def.defName, out var currentUpgradeDict)) { VehicleMod.settings.upgrades.upgradeSettings.Add(def.defName, new Dictionary <SaveableField, SavedField <object> >()); currentUpgradeDict = VehicleMod.settings.upgrades.upgradeSettings[def.defName]; foreach (UpgradeNode node in def.GetSortedCompProperties <CompProperties_UpgradeTree>().upgrades) { IterateUpgradeNode(def, node, ref currentUpgradeDict); } //Redundancy only VehicleMod.settings.upgrades.upgradeSettings[def.defName] = currentUpgradeDict; } } } catch (Exception ex) { Log.Error($"Failed to populate upgrade settings for {def.defName}. Exception=\"{ex.Message}\"\nInnerException=\"{ex.InnerException}\""); return(false); } return(true); }
public static void DrawGhostVehicle(IntVec3 center, Rot8 rot, ThingDef thingDef, Graphic baseGraphic, Color ghostCol, AltitudeLayer drawAltitude, Thing thing = null) { if (thingDef is VehicleBuildDef def) { VehicleDef vehicleDef = def.thingToSpawn; if (vehicleDef.GetSortedCompProperties <CompProperties_Cannons>() is CompProperties_Cannons props) { Vector3 loc = GenThing.TrueCenter(center, rot, def.Size, drawAltitude.AltitudeFor()); vehicleDef.DrawGhostCannonTextures(loc, rot, ghostCol); } } }
public VehicleGenerationRequest(VehicleDef vehicleDef, Faction faction, bool randomizeColors = false, bool randomizeMask = false, bool cleanSlate = true) { Rand.PushState(); VehicleDef = vehicleDef; Faction = faction; if (randomizeColors) { float r1 = Rand.Range(0.25f, .75f); float g1 = Rand.Range(0.25f, .75f); float b1 = Rand.Range(0.25f, .75f); ColorOne = new Color(r1, g1, b1, 1); float r2 = Rand.Range(0.25f, .75f); float g2 = Rand.Range(0.25f, .75f); float b2 = Rand.Range(0.25f, .75f); ColorTwo = new Color(r2, g2, b2, 1); float r3 = Rand.Range(0.25f, .75f); float g3 = Rand.Range(0.25f, .75f); float b3 = Rand.Range(0.25f, .75f); ColorThree = new Color(r3, g3, b3, 1); } else { ColorOne = vehicleDef.graphicData.color; ColorTwo = vehicleDef.graphicData.colorTwo; ColorThree = vehicleDef.graphicData.colorThree; } Upgrades = 0; CleanSlate = cleanSlate; if (!CleanSlate && vehicleDef.GetSortedCompProperties <CompProperties_UpgradeTree>() is CompProperties_UpgradeTree compProperties_UpgradeTree) { Upgrades = Rand.Range(0, compProperties_UpgradeTree.upgrades.Count); } RandomizeMask = randomizeMask; Rand.PopState(); }