static void Postfix(Rect inRect, Outfit ___selOutfitInt) { var selectedOutfit = ___selOutfitInt as ExtendedOutfit; DrawCloneButton(selectedOutfit); if (selectedOutfit == null) { return; } Rect canvas = new Rect( marginLeft, Dialog_ManageOutfits.TopAreaHeight + marginTop, inRect.xMax - marginLeft - marginRight, inRect.yMax - Dialog_ManageOutfits.TopAreaHeight - marginTop - marginBottom ); GUI.BeginGroup(canvas); Vector2 cur = Vector2.zero; if (MP.IsInMultiplayer) { MP.WatchBegin(); ExtendedOutfitProxy.Watch(ref selectedOutfit); } DrawDeadmanToogle(selectedOutfit, ref cur, canvas); DrawAutoWorkPrioritiesToggle(selectedOutfit, ref cur, canvas); DrawAutoTempToggle(selectedOutfit, ref cur, canvas); if (!selectedOutfit.AutoTemp) { DrawTemperatureStats(selectedOutfit, ref cur, canvas); } else { DrawAutoTempOffsetInput(selectedOutfit, ref cur, canvas); } cur.y += marginVertical; DrawApparelStats(selectedOutfit, cur, canvas); if (MP.IsInMultiplayer) { MP.WatchEnd(); } else if (GUI.changed) { var affected = Find.CurrentMap.mapPawns.FreeColonists .Where(i => i.outfits.CurrentOutfit == selectedOutfit); foreach (var pawn in affected) { pawn.mindState?.Notify_OutfitChanged(); } } GUI.EndGroup(); GUI.color = Color.white; Text.Anchor = TextAnchor.UpperLeft; }
static void WatchPrefix(ITab_Pawn_Visitor __instance) { if (MP.IsInMultiplayer) { MP.WatchBegin(); Pawn pawn = __instance.SelPawn; object comp = GetCompMethod.Invoke(pawn, null); _chat.Watch(comp); _recruit.Watch(comp); _arrived.Watch(comp); _sentAway.Watch(comp); _areaGuest.Watch(comp); _areaShop.Watch(comp); object worldComp = GetMapCompMethod.Invoke(null, new object[] { pawn.Map }); _defMode.Watch(worldComp); _defAreaGuest.Watch(worldComp); _defAreaShop.Watch(worldComp); } }
private static void PreFillTab(ITab __instance, ref object[] __state) { if (MP.IsInMultiplayer) { __state = new object[2]; var soul = pawnSoulITabSoulToShowGetter.Invoke(__instance, Array.Empty <object>()); if (soul != null) { MP.WatchBegin(); var prayerTracker = compSoulPrayerTrackerField(soul); prayerTrackerAllowPrayingSync.Watch(prayerTracker); prayerTrackerShowPrayerSync.Watch(prayerTracker); __state[0] = true; var favourTracker = compSoulFavourTrackerField(soul); var favoursList = soulFavourTrackerFavoursField(favourTracker); var favorValues = new float[favoursList.Count]; for (var i = 0; i < favoursList.Count; i++) { favorValues[i] = favourProgressFavourValueField(favoursList[i]); } __state[1] = favorValues; } else { __state[0] = false; } } }
private static void PreSyncBombType(ThingComp __instance) { if (MP.IsInMultiplayer) { MP.WatchBegin(); bombTypeSync.Watch(__instance); } }
// Used to watch for changes to the temple name private static void RenameTemplePrefix(Building ___Altar) { if (MP.enabled) { MP.WatchBegin(); altarNameSyncField.Watch(___Altar); } }
private static void CommonSensePatchPrefix(Thing thing) { if (MP.IsInMultiplayer) { MP.WatchBegin(); var comp = getCompUnlockerCheckerMethod.Invoke(null, new object[] { thing, false, false }); shouldUnloadSyncField.Watch(comp); } }
// Token: 0x0600008B RID: 139 RVA: 0x0000764A File Offset: 0x0000584A private static void WatchBegin() { if (!MP.IsInMultiplayer) { return; } MP.WatchBegin(); MultiplayerSupport.DRSettingsFields.Watch(null); }
static void HandleInteractionPrefix() { if (MP.IsInMultiplayer) { MP.WatchBegin(); watching = true; } }
static void DrawLockPrefix(object __instance, object handler) { if (MP.IsInMultiplayer) { MP.WatchBegin(); autoLockOnManualSwapSyncField.Watch(handler); } }
private static void PreDoCell(Pawn pawn) { if (!MP.IsInMultiplayer) { return; } MP.WatchBegin(); syncMedCare.Watch(pawn); }
private static void PreDoWindowContents(Window __instance) { if (!MP.IsInMultiplayer) { return; } MP.WatchBegin(); newFacepaintComboSync.Watch(__instance); coloursTiedSync.Watch(); }
private static void PreDrawOptions() { if (!MP.IsInMultiplayer) { return; } MP.WatchBegin(); var target = medicalCareField(); diseaseMarginField.Watch(target); minorWoundsThresholdField.Watch(target); diseaseThresholdField.Watch(target); }
private static void PrePsykerDoWindowContents(Window __instance, ref object[] __state) { if (MP.IsInMultiplayer) { var comp = psykerWindowCompField.GetValue(__instance); // SyncField MP.WatchBegin(); compPsykerXpSyncField.Watch(comp); // Copy all the currently learned minor disciplines, we'll check later if there were any changes var list = (IList)compPsykerMinorDisciplinesField.GetValue(comp); __state = new object[list.Count]; list.CopyTo(__state, 0); } }
private static void PreDoHeader() { if (!MP.IsInMultiplayer) { return; } MP.WatchBegin(); foreach (var syncField in syncDefaultCare) { syncField.Watch(); } foreach (var pawn in mainTabGetter().table.PawnsListForReading) { syncMedCare.Watch(pawn); } }
private static void PreDoCell(Pawn target) { if (!MP.IsInMultiplayer) { return; } MP.WatchBegin(); var comp = target.comps.FirstOrDefault(c => c.GetType() == compHandlerSettingsType); if (comp == null) { return; } modeField.Watch(comp); levelField.Watch(comp); }
// Called before the tab is drawn, we set our field watches in here // On top of that, we set our ThingFilterOwner like the MP // https://github.com/rwmt/Multiplayer/blob/7aac8b54727d8626ec39429b97225fc88c807ab8/Source/Client/Sync/SyncHandlers.cs#L975 private static void FillTabPrefix(ref object[] __state) { if (MP.IsInMultiplayer) { // ITab_Register.Register points to ITab.SelThing, which points to Find.Selector.SingleSelectedThing var controller = restaurantControllerField.GetValue(Find.Selector.SingleSelectedThing); var timetable = controllerTimetableField.GetValue(controller); __state = new object[] { timetable, ((List <bool>)timetableTimesField.GetValue(timetable)).ToArray() }; MP.WatchBegin(); restaurantController = controller; foreach (var field in controllerFieldsToSync) { field.Watch(controller); } } }
private static void PreDoHeader(PawnTable table) { if (!MP.IsInMultiplayer) { return; } MP.WatchBegin(); foreach (var pawn in table.PawnsListForReading) { var comp = pawn.comps.FirstOrDefault(c => c.GetType() == compHandlerSettingsType); if (comp == null) { continue; } modeField.Watch(comp); levelField.Watch(comp); } }
internal static void WatchBegin() => MP.WatchBegin();