private static void CommonSensePatchPostix()
 {
     if (MP.IsInMultiplayer)
     {
         MP.WatchEnd();
     }
 }
Exemple #2
0
 static void DrawLockPostfix()
 {
     if (MP.IsInMultiplayer)
     {
         MP.WatchEnd();
     }
 }
 private static void CommonSensePatchPostix()
 {
     if (MP.IsInMultiplayer && (bool)manualUnloadEnabledField.GetValue(null))
     {
         MP.WatchEnd();
     }
 }
 private static void PostSyncBombType()
 {
     if (MP.IsInMultiplayer)
     {
         MP.WatchEnd();
     }
 }
Exemple #5
0
 static void WatchPostfix()
 {
     if (MP.IsInMultiplayer)
     {
         MP.WatchEnd();
     }
 }
Exemple #6
0
        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;
        }
Exemple #7
0
        private static void PostFillTab(ITab __instance, ref object[] __state)
        {
            if (MP.IsInMultiplayer && (bool)__state[0])
            {
                MP.WatchEnd();

                // Since we got non-null value in prefix, assume same here
                var soul          = pawnSoulITabSoulToShowGetter.Invoke(__instance, Array.Empty <object>());
                var favourTracker = compSoulFavourTrackerField(soul);

                var previousFavourList = (float[])__state[1];
                var favoursList        = soulFavourTrackerFavoursField(favourTracker);

                // Check for changes, revert them (if any) and change them in synced method
                for (var i = 0; i < favoursList.Count; i++)
                {
                    var newValue = favourProgressFavourValueField(favoursList[i]);
                    var oldValue = previousFavourList[i];

                    if (newValue != oldValue)
                    {
                        favourProgressFavourValueField(favoursList[i]) = oldValue;
                        SyncFavourValue((ThingComp)soul, i, newValue);
                        // We could break here, but let's just keep going in case there's more than one changed
                        // There shouldn't be more than a single difference, but let's be safe
                    }
                }
            }
        }
 private static void RenameTemplePostfix()
 {
     if (MP.enabled)
     {
         MP.WatchEnd();
     }
 }
Exemple #9
0
 private static void PostDrawOptions()
 {
     if (MP.IsInMultiplayer)
     {
         MP.WatchEnd();
     }
 }
 private static void StopWatch()
 {
     if (MP.IsInMultiplayer)
     {
         MP.WatchEnd();
     }
 }
Exemple #11
0
 // Token: 0x0600008C RID: 140 RVA: 0x00007664 File Offset: 0x00005864
 private static void WatchEnd()
 {
     if (!MP.IsInMultiplayer)
     {
         return;
     }
     MP.WatchEnd();
 }
        static void HandleInteractionPostfix()
        {
            if (MP.IsInMultiplayer)
            {
                MP.WatchEnd();

                watching = false;
            }
        }
        private static void PostDoWindowContents()
        {
            if (!MP.IsInMultiplayer)
            {
                return;
            }

            MP.WatchEnd();
        }
Exemple #14
0
        // Called after the tab is drawn, we end watching here and if needed manually sync the timetable
        // On top of that, we clear our ThingFilterOwner like the MP
        // https://github.com/rwmt/Multiplayer/blob/7aac8b54727d8626ec39429b97225fc88c807ab8/Source/Client/Sync/SyncHandlers.cs#L978
        private static void FillTabPostfix(ref object[] __state)
        {
            if (MP.IsInMultiplayer)
            {
                var timetable = __state[0];
                var oldTimes  = (bool[])__state[1];
                var newTimes  = (List <bool>)timetableTimesField.GetValue(timetable);

                for (int i = 0; i < 24; i++)
                {
                    if (oldTimes[i] != newTimes[i])
                    {
                        timetableTimesField.SetValue(timetable, new List <bool>(oldTimes));
                        controllerTimesSync.DoSync(restaurantController, newTimes);
                        break;
                    }
                }

                restaurantController = null;
                MP.WatchEnd();
            }
        }
        private static void PostPsykerDoWindowContents(Window __instance, ref object[] __state)
        {
            if (MP.IsInMultiplayer)
            {
                MP.WatchEnd();

                var comp = psykerWindowCompField.GetValue(__instance);
                var list = (IList)compPsykerMinorDisciplinesField.GetValue(comp);

                // Check through all learned minor disciplines, look for any changes
                if (__state.Length != list.Count)
                {
                    foreach (var item in list)
                    {
                        if (!__state.Contains(item))
                        {
                            SyncedAddMinorDiscipline((ThingComp)comp, ((Def)item).shortHash);
                            break;
                        }
                    }
                }
            }
        }
Exemple #16
0
 internal static void WatchEnd() => MP.WatchEnd();