Skip to content

Commit 1251a7c

Browse files
committed
Add comprehensive TriggerManager getter methods
- Add getTriggers() method to get all registered triggers - Add getGlobalTriggers() and getPerPlayerTriggers() methods - Add hasTrigger() method to check if trigger is registered - Add countTriggers(), countGlobalTriggers(), countPerPlayerTriggers() methods - Add getTriggerByName() and hasTriggerByName() methods - Add getTriggersByType() method to filter by trigger type - Add removeTriggerByName() method - Add getTriggerNames() and getTriggerStats() methods
1 parent 659fdba commit 1251a7c

1 file changed

Lines changed: 144 additions & 0 deletions

File tree

src/imperazim/components/trigger/TriggerManager.php

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,4 +100,148 @@ public static function removeTrigger(Trigger $trigger): bool {
100100
public static function clearTriggers(): void {
101101
self::$triggers = [];
102102
}
103+
104+
/**
105+
* Gets all registered triggers.
106+
* @return Trigger[] Array of all registered triggers.
107+
*/
108+
public static function getTriggers(): array {
109+
return self::$triggers;
110+
}
111+
112+
/**
113+
* Gets all global triggers.
114+
* @return Trigger[] Array of global triggers.
115+
*/
116+
public static function getGlobalTriggers(): array {
117+
$globalTriggers = [];
118+
foreach (self::$triggers as $trigger) {
119+
if ($trigger->getTriggerType() === TriggerTypes::GLOBAL) {
120+
$globalTriggers[] = $trigger;
121+
}
122+
}
123+
return $globalTriggers;
124+
}
125+
126+
/**
127+
* Gets all per-player triggers.
128+
* @return Trigger[] Array of per-player triggers.
129+
*/
130+
public static function getPerPlayerTriggers(): array {
131+
$perPlayerTriggers = [];
132+
foreach (self::$triggers as $trigger) {
133+
if ($trigger->getTriggerType() === TriggerTypes::PER_PLAYER) {
134+
$perPlayerTriggers[] = $trigger;
135+
}
136+
}
137+
return $perPlayerTriggers;
138+
}
139+
140+
/**
141+
* Checks if a specific trigger is registered.
142+
* @param Trigger $trigger The trigger to check.
143+
* @return bool True if the trigger is registered, false otherwise.
144+
*/
145+
public static function hasTrigger(Trigger $trigger): bool {
146+
return in_array($trigger, self::$triggers, true);
147+
}
148+
149+
/**
150+
* Gets the total number of registered triggers.
151+
* @return int The number of registered triggers.
152+
*/
153+
public static function countTriggers(): int {
154+
return count(self::$triggers);
155+
}
156+
157+
/**
158+
* Gets the number of global triggers.
159+
* @return int The number of global triggers.
160+
*/
161+
public static function countGlobalTriggers(): int {
162+
return count(self::getGlobalTriggers());
163+
}
164+
165+
/**
166+
* Gets the number of per-player triggers.
167+
* @return int The number of per-player triggers.
168+
*/
169+
public static function countPerPlayerTriggers(): int {
170+
return count(self::getPerPlayerTriggers());
171+
}
172+
173+
/**
174+
* Finds a trigger by its name.
175+
* @param string $name The name of the trigger.
176+
* @return Trigger|null The trigger if found, null otherwise.
177+
*/
178+
public static function getTriggerByName(string $name): ?Trigger {
179+
foreach (self::$triggers as $trigger) {
180+
if ($trigger->getName() === $name) {
181+
return $trigger;
182+
}
183+
}
184+
return null;
185+
}
186+
187+
/**
188+
* Finds triggers by their type.
189+
* @param string $type The trigger type (use TriggerTypes constants).
190+
* @return Trigger[] Array of triggers of the specified type.
191+
*/
192+
public static function getTriggersByType(string $type): array {
193+
$filteredTriggers = [];
194+
foreach (self::$triggers as $trigger) {
195+
if ($trigger->getTriggerType() === $type) {
196+
$filteredTriggers[] = $trigger;
197+
}
198+
}
199+
return $filteredTriggers;
200+
}
201+
202+
/**
203+
* Checks if a trigger with the given name exists.
204+
* @param string $name The name of the trigger.
205+
* @return bool True if a trigger with the name exists, false otherwise.
206+
*/
207+
public static function hasTriggerByName(string $name): bool {
208+
return self::getTriggerByName($name) !== null;
209+
}
210+
211+
/**
212+
* Removes a trigger by its name.
213+
* @param string $name The name of the trigger to remove.
214+
* @return bool True if the trigger was found and removed, false otherwise.
215+
*/
216+
public static function removeTriggerByName(string $name): bool {
217+
$trigger = self::getTriggerByName($name);
218+
if ($trigger !== null) {
219+
return self::removeTrigger($trigger);
220+
}
221+
return false;
222+
}
223+
224+
/**
225+
* Gets trigger names as an array.
226+
* @return string[] Array of trigger names.
227+
*/
228+
public static function getTriggerNames(): array {
229+
$names = [];
230+
foreach (self::$triggers as $trigger) {
231+
$names[] = $trigger->getName();
232+
}
233+
return $names;
234+
}
235+
236+
/**
237+
* Gets trigger statistics.
238+
* @return array Statistics about triggers [total, global, perPlayer].
239+
*/
240+
public static function getTriggerStats(): array {
241+
return [
242+
'total' => self::countTriggers(),
243+
'global' => self::countGlobalTriggers(),
244+
'perPlayer' => self::countPerPlayerTriggers()
245+
];
246+
}
103247
}

0 commit comments

Comments
 (0)