MCPcopy Create free account
hub / github.com/Phobos-developers/Phobos / Execute

Method Execute

src/Ext/TEvent/Body.cpp:56–170  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

54}
55
56std::optional<bool> TEventExt::Execute(TEventClass* pThis, int iEvent, HouseClass* pHouse,
57 ObjectClass* pObject, CDTimerClass* pTimer, bool* isPersitant, TechnoClass* pSource)
58{
59 const auto eventKind = static_cast<PhobosTriggerEvent>(pThis->EventKind);
60
61 // They must be the same, but for other triggers to take effect normally, this cannot be judged outside case.
62 auto isSameEvent = [&]() { return eventKind == static_cast<PhobosTriggerEvent>(iEvent); };
63
64 switch (eventKind)
65 {
66 // The triggering conditions that need to be checked at any time are written here
67
68 // helper struct
69 struct and_with { bool operator()(int a, int b) { return a & b; } };
70
71 case PhobosTriggerEvent::LocalVariableGreaterThan:
72 return TEventExt::VariableCheck<false, std::greater<int>>(pThis);
73 case PhobosTriggerEvent::LocalVariableLessThan:
74 return TEventExt::VariableCheck<false, std::less<int>>(pThis);
75 case PhobosTriggerEvent::LocalVariableEqualsTo:
76 return TEventExt::VariableCheck<false, std::equal_to<int>>(pThis);
77 case PhobosTriggerEvent::LocalVariableGreaterThanOrEqualsTo:
78 return TEventExt::VariableCheck<false, std::greater_equal<int>>(pThis);
79 case PhobosTriggerEvent::LocalVariableLessThanOrEqualsTo:
80 return TEventExt::VariableCheck<false, std::less_equal<int>>(pThis);
81 case PhobosTriggerEvent::LocalVariableAndIsTrue:
82 return TEventExt::VariableCheck<false, and_with>(pThis);
83 case PhobosTriggerEvent::GlobalVariableGreaterThan:
84 return TEventExt::VariableCheck<true, std::greater<int>>(pThis);
85 case PhobosTriggerEvent::GlobalVariableLessThan:
86 return TEventExt::VariableCheck<true, std::less<int>>(pThis);
87 case PhobosTriggerEvent::GlobalVariableEqualsTo:
88 return TEventExt::VariableCheck<true, std::equal_to<int>>(pThis);
89 case PhobosTriggerEvent::GlobalVariableGreaterThanOrEqualsTo:
90 return TEventExt::VariableCheck<true, std::greater_equal<int>>(pThis);
91 case PhobosTriggerEvent::GlobalVariableLessThanOrEqualsTo:
92 return TEventExt::VariableCheck<true, std::less_equal<int>>(pThis);
93 case PhobosTriggerEvent::GlobalVariableAndIsTrue:
94 return TEventExt::VariableCheck<true, and_with>(pThis);
95
96 case PhobosTriggerEvent::LocalVariableGreaterThanLocalVariable:
97 return TEventExt::VariableCheckBinary<false, false, std::greater<int>>(pThis);
98 case PhobosTriggerEvent::LocalVariableLessThanLocalVariable:
99 return TEventExt::VariableCheckBinary<false, false, std::less<int>>(pThis);
100 case PhobosTriggerEvent::LocalVariableEqualsToLocalVariable:
101 return TEventExt::VariableCheckBinary<false, false, std::equal_to<int>>(pThis);
102 case PhobosTriggerEvent::LocalVariableGreaterThanOrEqualsToLocalVariable:
103 return TEventExt::VariableCheckBinary<false, false, std::greater_equal<int>>(pThis);
104 case PhobosTriggerEvent::LocalVariableLessThanOrEqualsToLocalVariable:
105 return TEventExt::VariableCheckBinary<false, false, std::less_equal<int>>(pThis);
106 case PhobosTriggerEvent::LocalVariableAndIsTrueLocalVariable:
107 return TEventExt::VariableCheckBinary<false, false, and_with>(pThis);
108 case PhobosTriggerEvent::GlobalVariableGreaterThanLocalVariable:
109 return TEventExt::VariableCheckBinary<false, true, std::greater<int>>(pThis);
110 case PhobosTriggerEvent::GlobalVariableLessThanLocalVariable:
111 return TEventExt::VariableCheckBinary<false, true, std::less<int>>(pThis);
112 case PhobosTriggerEvent::GlobalVariableEqualsToLocalVariable:
113 return TEventExt::VariableCheckBinary<false, true, std::equal_to<int>>(pThis);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected