OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
triggerlist.cpp
Go to the documentation of this file.
1#include "triggerlist.h"
2
3#include <Tempest/Log>
4
5#include "world/world.h"
6#include "game/serialize.h"
7
8using namespace Tempest;
9
10TriggerList::TriggerList(Vob* parent, World &world, const zenkit::VTriggerList& list, Flags flags)
11 :AbstractTrigger(parent,world,list,flags) {
12 targets = list.targets;
13 listProcess = list.mode;
14 }
15
17 if(targets.empty())
18 return;
19
20 switch(listProcess) {
21 case zenkit::TriggerBatchMode::ALL: {
22 uint64_t offset = 0;
23 for(auto& i:targets) {
24 offset += uint64_t(i.delay*1000);
25 uint64_t time = world.tickCount()+offset;
28 }
29 break;
30 }
31 case zenkit::TriggerBatchMode::NEXT: {
32 auto& i = targets[next];
33 next = (next+1)%uint32_t(targets.size());
34
35 uint64_t time = world.tickCount()+uint64_t(i.delay*1000);
38 break;
39 }
40 case zenkit::TriggerBatchMode::RANDOM: {
41 auto& i = targets[world.script().rand(uint32_t(targets.size()))];
42
43 uint64_t time = world.tickCount()+uint64_t(i.delay*1000);
46 break;
47 }
48 }
49 }
50
51void TriggerList::save(Serialize& fout) const {
53 fout.write(next);
54 }
55
56void TriggerList::load(Serialize& fin) {
58 fin.read(next);
59 }
void load(Serialize &fin) override
void save(Serialize &fout) const override
std::string vobName
uint32_t rand(uint32_t max)
void write(const Arg &... a)
Definition serialize.h:76
void read(Arg &... a)
Definition serialize.h:81
void onTrigger(const TriggerEvent &evt) override
TriggerList(Vob *parent, World &world, const zenkit::VTriggerList &data, Flags flags)
Definition vob.h:11
Flags
Definition vob.h:13
World & world
Definition vob.h:45
Definition world.h:31
uint64_t tickCount() const
Definition world.cpp:387
GameScript & script() const
Definition world.cpp:1019
void execTriggerEvent(const TriggerEvent &e)
Definition world.cpp:499