private static void GetValue(Traverse __instance) { if (!__instance.FieldExists() && !__instance.MethodExists() && !__instance.TypeExists()) { Logging.Logger.LogWarning("Traverse.GetValue was called while not pointing at an existing Field, Property, Method or Type. The return value can be unexpected.\n" + new StackTrace()); } }
private static void SetValue(Traverse __instance) { // If method exists it will crash inside traverse so only need to mention the field missing if (!__instance.FieldExists() && !__instance.MethodExists()) { Logging.Logger.LogWarning("Traverse.SetValue was called while not pointing at an existing Field or Property. The call will have no effect.\n" + new StackTrace()); } }
internal static bool IsSelected(UIButton button) { Panel_Inventory_Examine_MenuItem menuItem = button.GetComponent <Panel_Inventory_Examine_MenuItem>(); if (menuItem == null) { return(false); } Traverse field = Traverse.Create(menuItem).Field("m_Selected"); return(field.FieldExists() && field.GetValue <bool>()); }
public static void Prefix(Creature __instance) { if (Main.CreatureConfig is null) { Main.CreatureConfig = new CreatureConfig(); Main.CreatureConfig.Load(); IngameMenuHandler.RegisterOnSaveEvent(Main.CreatureConfig.Save); } if ((!__instance.gameObject?.GetComponent <WaterParkCreature>()?.IsInsideWaterPark() ?? true)) { try { string id = __instance.GetComponent <PrefabIdentifier>().Id; float scale = 1; if (!Main.CreatureConfig.CreatureSizes.ContainsKey(id)) { UnityEngine.Random.InitState(DateTime.Now.Hour + DateTime.Now.Minute + DateTime.Now.Second + DateTime.Now.Millisecond); scale = UnityEngine.Random.Range(Main.Config.minsize, Main.Config.maxsize); __instance.SetScale(scale); Main.CreatureConfig.CreatureSizes.Add(__instance.GetComponent <PrefabIdentifier>().Id, scale); } else { scale = Main.CreatureConfig.CreatureSizes[id]; __instance.SetScale(scale); } List <CreatureAction> creatureActions = __instance.gameObject.GetComponentsInChildren <CreatureAction>().Where((x) => x.GetType().GetField("swimVelocity") != null)?.ToList() ?? new List <CreatureAction>(); scale = scale <1f ? 1f : scale> 5f ? 5f : scale; foreach (CreatureAction creatureAction in creatureActions) { Traverse swimVelocity = Traverse.Create(creatureAction).Field("swimVelocity"); if (swimVelocity.FieldExists()) { float currentSpeed = swimVelocity.GetValue <float>(); swimVelocity.SetValue(currentSpeed * scale); } } } catch { }; } }
public void LoadDataFromXmlCustom(XmlNode xmlRoot) { XmlAttribute mayRequire = xmlRoot.Attributes[name : "MayRequire"]; int index = mayRequire != null?xmlRoot.Name.LastIndexOf(value : '\"') + 1 : 0; DirectXmlCrossRefLoader.RegisterObjectWantsCrossRef(this, nameof(this.hediff), xmlRoot.Name.Substring(index, xmlRoot.Name.Length - index), mayRequire?.Value.ToLower()); this.path = xmlRoot.FirstChild.Value?.Trim(); Traverse traverse = Traverse.Create(this); foreach (XmlNode xmlRootChildNode in xmlRoot.ChildNodes) { Traverse field = traverse.Field(xmlRootChildNode.Name); if (field.FieldExists()) { field.SetValue(field.GetValueType().IsGenericType ? DirectXmlToObject.GetObjectFromXmlMethod(field.GetValueType())(xmlRootChildNode, arg2: false) : xmlRootChildNode.InnerXml.Trim()); } } }
void Update() { // Check if Scene is set to ClassRoomSelect if (Manager.Scene.Instance.NowSceneNames[0] == "ClassRoomSelect") { // Check if classroom scene is currently stored if (Utilities.ClassroomScene == null) { Utilities.ClassroomScene = Singleton <ActionGame.ClassRoomSelectScene> .Instance; } // Check if scene is visible, i.e. not currently loading a character if (Utilities.ClassroomScene != null && Utilities.ClassroomScene.classRoomList.isVisible) { // Get PreviewClassData instance Traverse enterPreview = Traverse.Create(Utilities.ClassroomScene.classRoomList).Field("enterPreview"); if (enterPreview.FieldExists()) { Utilities.CurrClassData = enterPreview.GetValue <ReactiveProperty <ActionGame.PreviewClassData> >().Value; } // Get current school emblem Outfits.EmblemID = Singleton <Manager.Game> .Instance.saveData.emblemID; // Set GUI visible flag UI.Visible = true; } else { UI.Visible = false; } } else { // Reset stored classroom scene and disable gui Utilities.ClassroomScene = null; UI.Visible = false; } }