summaryrefslogtreecommitdiff
path: root/game/objective.h
blob: 5b3690ee5a27d5f3e847e2b90045bf31fa805af0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef OBJECTIVE_H
#define OBJECTIVE_H

#include "activity.h"
#include "network/link.h"
#include <memory>
#include <special_members.hpp>

class Orders;

class Objective {
public:
	explicit Objective(Orders * os) : orders(os) { }
	DEFAULT_MOVE_COPY(Objective);
	virtual ~Objective() = default;

	[[nodiscard]] virtual Objective * complete() const;
	[[nodiscard]] virtual ActivityPtr createActivity() const = 0;
	[[nodiscard]] virtual Link::Next navigate(Link::Nexts::const_iterator, Link::Nexts::const_iterator) const = 0;

	Orders * orders;
};
using ObjectivePtr = std::unique_ptr<Objective>;

#endif