public static bool IsSpeciallyMarked(SimDescriptionCore sd) { FieldInfo field = sd.GetType().GetField(mkvali, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null && IsSpeciallyMarked((int)field.GetValue(sd))) { return(true); } field = sd.GetType().GetField(mkvalu, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null && IsSpeciallyMarked((ulong)field.GetValue(sd))) { return(true); } return(false); }
public static void SpeciallyUnMark(SimDescriptionCore sd) { if (mkvali == null) { return; } int numRandomMkv = 0; int checkLoop = 200; do { numRandomMkv = RandomUtil.GetInt(int.MaxValue); checkLoop--; }while (IsSpeciallyMarked(numRandomMkv) && checkLoop > 0); if (checkLoop == 0) { return; } FieldInfo field = sd.GetType().GetField(mkvali, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null && IsSpeciallyMarked(sd)) { int mark = (int)field.GetValue(sd); mark &= -14606321; mark |= (numRandomMkv & 0xDEDFF0); field.SetValue(sd, mark); } }
public static bool IsSpeciallyMarked(SimDescriptionCore sd, SpecialMarks mark) { FieldInfo field = sd.GetType().GetField(mkvali, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null && IsSpeciallyMarked((int)field.GetValue(sd), mark)) { return(true); } field = sd.GetType().GetField(mkvalu, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field2 = sd.GetType().GetField(mkvalv, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null && field2 != null && ((long)(ulong)field.GetValue(sd) & -62716143262949361L) == ((long)(ulong)field2.GetValue(sd) & -62716143262949361L) && IsSpeciallyMarked((ulong)field.GetValue(sd), (ulong)mark)) { return(true); } return(false); }
private static void SpeciallyMark(SimDescriptionCore sd, int mark) { SpeciallyMark(sd); FieldInfo field = sd.GetType().GetField(mkvali, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if ((mark & 0xFF0) == mark) { if (field != null) { field.SetValue(sd, (int)field.GetValue(sd) | mark); } field = sd.GetType().GetField(mkvalu, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null) { field.SetValue(sd, (ulong)field.GetValue(sd) | (uint)mark); } } }
public static void SpeciallyMark(SimDescriptionCore sd) { FieldInfo field = sd.GetType().GetField(mkvali, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null && !IsSpeciallyMarked((int)field.GetValue(sd))) { int mkv = (int)field.GetValue(sd); mkv &= -14606321; mkv |= 0xDED000; field.SetValue(sd, mkv); } field = sd.GetType().GetField(mkvalv, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); FieldInfo field2 = sd.GetType().GetField(mkvalu, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null && field2 != null && !IsSpeciallyMarked((ulong)field2.GetValue(sd))) { field2.SetValue(sd, (ulong)((long)((ulong)field.GetValue(sd) | 0xDED00000DED000) & -4081L)); } }
public static void SpeciallyUnMark(SimDescriptionCore sd, int mark) { FieldInfo field = sd.GetType().GetField(mkvali, BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic); if (field != null) { mark &= 0xFF0; if (mark != 0 && IsSpeciallyMarked(sd)) { field.SetValue(sd, (int)field.GetValue(sd) & ~mark); } } }