public static void ValidateAndSetupDoors() { List <ulong> removeSim = new List <ulong>(); foreach (ObjectGuid guid in new List <ObjectGuid>(GoHere.Settings.mDoorSettings.Keys)) { DoorSettings settings = GoHere.Settings.mDoorSettings[guid]; if (Simulator.GetProxy(guid) != null && settings.SettingsValid) { foreach (KeyValuePair <ulong, long> sims in settings.mSimsRecentlyLetThrough) { if (!settings.WasSimRecentlyLetThrough(sims.Key)) { removeSim.Add(sims.Key); } else if (MiniSimDescription.Find(sims.Key) == null) { removeSim.Add(sims.Key); } } foreach (ulong sim in removeSim) { settings.mSimsRecentlyLetThrough.Remove(sim); } GoHere.Settings.AddOrUpdateDoorSettings(guid, settings, false); Door door = GameObject.GetObject(guid) as Door; if (door != null) { RegisterRoomListeners(door.LotCurrent); } continue; } GoHere.Settings.mDoorSettings.Remove(guid); } TooltipHelper.AddListener(typeof(Door), Type.GetType("NRaas.GoHereSpace.Helpers.DoorPortalComponentEx,NRaasGoHere").GetMethod("SceneWindow_Hover")); }
public static void ValidateAndSetupDoors() { List <ulong> removeSim = new List <ulong>(); foreach (ObjectGuid guid in new List <ObjectGuid>(GoHere.Settings.mDoorSettings.Keys)) { DoorSettings settings = GoHere.Settings.mDoorSettings[guid]; if (Simulator.GetProxy(guid) != null && settings.SettingsValid) { foreach (KeyValuePair <ulong, long> sims in settings.mSimsRecentlyLetThrough) { if (!settings.WasSimRecentlyLetThrough(sims.Key)) { removeSim.Add(sims.Key); } else if (MiniSimDescription.Find(sims.Key) == null) { removeSim.Add(sims.Key); } } foreach (ulong sim in removeSim) { settings.mSimsRecentlyLetThrough.Remove(sim); } GoHere.Settings.AddOrUpdateDoorSettings(guid, settings, false); Door door = GameObject.GetObject(guid) as Door; if (door != null) { RegisterRoomListeners(door.LotCurrent); } continue; } GoHere.Settings.mDoorSettings.Remove(guid); } }
public override void OnLaneLocked(Sim sim, LaneInfo info) { DoorSettings settings = GoHere.Settings.GetDoorSettings(this.OwnerDoor.ObjectId); bool allowed = true; if (settings != null) { if (settings.mIsOneWayDoor && (info.mLaneSlots[0] != Door.RoutingSlots.Door1_Rear && info.mLaneSlots[0] != Door.RoutingSlots.Door0_Rear)) { allowed = false; } allowed = allowed && settings.IsSimAllowedThrough(sim.SimDescription.SimDescriptionId); } if (!allowed) { if (sim.SimRoutingComponent != null && sim.SimRoutingComponent.IsRouting) { sim.SimRoutingComponent.GetCurrentRoute().DoRouteFail = false; } return; } if ((info.mLaneSlots[0] == Door.RoutingSlots.Door0_Rear || info.mLaneSlots[0] == Door.RoutingSlots.Door1_Rear) && settings.mDoorCost > 0 && !settings.WasSimRecentlyLetThrough(sim.SimDescription.SimDescriptionId)) { settings.AddRecentSim(sim.SimDescription.SimDescriptionId); GoHere.Settings.AddOrUpdateDoorSettings(this.OwnerDoor.ObjectId, settings, false); settings.HandleCost(sim); } base.OnLaneLocked(sim, info); }