static void Postfix(ColonyBeds __instance, ref bool __result, Vector3Int position, ref Vector3Int bedPosition, ref BedTracker.Bed bed, int boxradius) { if (!__result) { // Log.WriteWarning(" ... But game did not find a bed either"); } }
static void Prefix(ColonyBeds __instance, Vector3Int blockPosition) { if (__instance.Owner == null) { return; } var trackers = CustomBedTracker.trackers; lock (trackers) { CustomBedTracker tracker; if (!trackers.TryGetValue(__instance.Owner, out tracker)) { return; } lock (tracker) { tracker.Remove(blockPosition); if (tracker.Count == 1) { trackers.Remove(__instance.Owner); } } } }
static bool Prefix(ColonyBeds __instance, ref bool __result, Vector3Int position, out Vector3Int bedPosition, out BedTracker.Bed bed, int boxradius) { bed = null; bedPosition = Vector3Int.invalidPos; if (__instance.Owner == null) { return(true); } var trackers = CustomBedTracker.trackers; lock (trackers) { CustomBedTracker tracker; if (!trackers.TryGetValue(__instance.Owner, out tracker)) { return(true); } lock (tracker) { if (tracker.TryGetClosestUnused(position, out bedPosition, out bed, boxradius)) { __result = true; return(false); } } } // Log.WriteWarning("FindCloserBed: Did not find any available beds"); return(true); }
static void Prefix(ColonyBeds __instance, Vector3Int blockPosition, bool state) { if (__instance.Owner == null) { return; } var trackers = CustomBedTracker.trackers; lock (trackers) { CustomBedTracker tracker; if (!trackers.TryGetValue(__instance.Owner, out tracker)) { return; } lock (tracker) { tracker.SetState(blockPosition, state); } } }