public static void Invoke(LG_SecurityDoor __instance, pDoorState state) { bool valid; EventListenerType validListenerType; switch (state.status) { case eDoorStatus.Open: valid = true; validListenerType = EventListenerType.SecurityDoorOpen; break; case eDoorStatus.Unlocked: valid = true; validListenerType = EventListenerType.SecurityDoorUnlock; break; case eDoorStatus.ChainedPuzzleActivated: valid = true; validListenerType = EventListenerType.SecurityDoorActivateChainedPuzzle; break; default: valid = false; validListenerType = (EventListenerType)0; break; } if (valid) { var blocks = EventListenerDataBlock.GetAllBlocks(); var exp = RundownManager.GetActiveExpeditionData(); foreach (var block in blocks) { if (block.Type == validListenerType) { foreach (var expedition in block.ForExpeditions) { if (expedition.ExpeditionIndex == exp.expeditionIndex && expedition.Tier == exp.tier) { var data = __instance.LinkedToZoneData; if (__instance.LinksToLayerType == block.SecurityDoor_Layer && data.LocalIndex == block.SecurityDoor_ZoneIndex && data.BuildFromLocalIndex == block.SecurityDoor_BuildFromIndex) { EventSequenceManager.StartSequence(block.EventSequenceOnActivate); } break; } } } } } }
public static bool TryGetSpawnedDoor(LG_Zone zone, out LG_SecurityDoor door) { door = zone.m_sourceGate?.SpawnedDoor?.Cast <LG_SecurityDoor>() ?? null; return(door != null); }