VIPRA Documentation
Loading...
Searching...
No Matches
subcondition_event_occurring.hpp
1#pragma once
2
3#include "vipra/vipra_behaviors/conditions/sub_condition.hpp"
4#include "vipra/vipra_behaviors/definitions/behavior_context.hpp"
5#include "vipra/vipra_behaviors/definitions/sim_pack.hpp"
6#include "vipra/vipra_behaviors/events/event.hpp"
7#include "vipra/vipra_behaviors/util/class_types.hpp"
8
9namespace VIPRA::Behaviors {
10
11class SubConditionEventOccurring {
12 NON_DEFAULT_CONSTRUCTIBLE(SubConditionEventOccurring)
13 COPYABLE(SubConditionEventOccurring)
14 MOVEABLE(SubConditionEventOccurring)
15 public:
16 explicit SubConditionEventOccurring(VIPRA::idx event, bool negate)
17 : _event(event), _negate(negate)
18 {
19 }
20
21 void operator()(Simpack pack, const VIPRA::idxVec& /*unused*/,
22 std::vector<Target> const& /*unused*/, std::vector<bool>& met,
23 std::vector<bool> const& /*unused*/, BoolOp /*unused*/) const
24 {
25 if ( _negate ) {
26 std::fill(met.begin(), met.end(), ! pack.context.events[_event].is_occurring());
27 }
28 else {
29 std::fill(met.begin(), met.end(), pack.context.events[_event].is_occurring());
30 }
31 }
32
33 private:
34 VIPRA::idx _event;
35 bool _negate{false};
36};
37} // namespace VIPRA::Behaviors
Holds references to commonly used parameters for simpler passing.
Definition sim_pack.hpp:23