OpenGothic
Open source reimplementation of Gothic I and II
Loading...
Searching...
No Matches
questlog.cpp
Go to the documentation of this file.
1#include "questlog.h"
2#include "serialize.h"
3
6
7QuestLog::Quest &QuestLog::add(std::string_view name, Section s) {
8 if(auto m = find(name))
9 return *m;
10 Quest q;
11 q.name = name;
12 q.section = s;
13 quests.emplace_back(q);
14 return quests.back();
15 }
16
17void QuestLog::setStatus(std::string_view name, QuestLog::Status s) {
18 auto m = find(name);
19 if(m==nullptr && s==Status::Obsolete)
20 return;
21 auto& q = add(name,Mission);
22 q.status = s;
23 }
24
25void QuestLog::addEntry(std::string_view name, std::string_view entry) {
26 if(auto m = find(name))
27 m->entry.emplace_back(entry);
28 }
29
30QuestLog::Quest *QuestLog::find(std::string_view name) {
31 for(auto& i:quests)
32 if(i.name==name)
33 return &i;
34 return nullptr;
35 }
36
38 uint32_t sz=uint32_t(quests.size());
39 fout.write(sz);
40 for(auto& i:quests){
41 fout.write(i.name,uint8_t(i.section),uint8_t(i.status),i.entry);
42 }
43 }
44
46 uint32_t sz=0;
47 fin.read(sz);
48 quests.resize(sz);
49
50 for(auto& i:quests){
51 fin.read(i.name,reinterpret_cast<uint8_t&>(i.section),reinterpret_cast<uint8_t&>(i.status),i.entry);
52 }
53 }
void save(Serialize &fout)
Definition questlog.cpp:37
void setStatus(std::string_view name, Status s)
Definition questlog.cpp:17
void addEntry(std::string_view name, std::string_view entry)
Definition questlog.cpp:25
void load(Serialize &fin)
Definition questlog.cpp:45
Quest & add(std::string_view name, Section s)
Definition questlog.cpp:7
@ Mission
Definition questlog.h:21
void write(const Arg &... a)
Definition serialize.h:76
void read(Arg &... a)
Definition serialize.h:81
Section section
Definition questlog.h:27
std::string name
Definition questlog.h:26