Olympe Engine 2.0
2D Game Engine with ECS Architecture
Loading...
Searching...
No Matches
Quest.h
Go to the documentation of this file.
1/* Quest.h
2 Quest contains objectives
3*/
4#pragma once
5
6#include "Objective.h"
7#include <vector>
8#include <memory>
9#include <string>
10#include <iostream>
11#include "system/system_utils.h"
12
13class Quest
14{
15public:
16 std::string name;
17 std::vector<std::unique_ptr<Objective>> objectives;
18 Quest(const std::string& n = "Quest") : name(n) { SYSTEM_LOG << "Quest '" << name << "' created\n"; }
19 ~Quest() { SYSTEM_LOG << "Quest '" << name << "' destroyed\n"; }
20
21 void AddObjective(std::unique_ptr<Objective> o) { objectives.push_back(std::move(o)); }
22 bool IsComplete() const
23 {
24 for (const auto& o : objectives) if (!o->IsComplete()) return false;
25 return true;
26 }
27};
ComponentTypeID GetComponentTypeID_Static()
Definition ECS_Entity.h:56
Definition Quest.h:14
std::vector< std::unique_ptr< Objective > > objectives
Definition Quest.h:17
bool IsComplete() const
Definition Quest.h:22
std::string name
Definition Quest.h:16
Quest(const std::string &n="Quest")
Definition Quest.h:18
~Quest()
Definition Quest.h:19
void AddObjective(std::unique_ptr< Objective > o)
Definition Quest.h:21
#define SYSTEM_LOG