-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgrass.h
45 lines (33 loc) · 1.04 KB
/
grass.h
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#ifndef PP_GRASS_H
#define PP_GRASS_H
#include "fpmas/model/spatial/grid.h"
using namespace fpmas::model;
class Grass : public GridCellBase<Grass> {
private:
int _countdown;
bool _grown;
public:
static int growing_rate;
Grass(int countdown, bool grown) : _countdown(countdown), _grown(grown) {}
Grass() : _countdown(growing_rate), _grown(true) {}
Grass(int countdown, bool grown, DiscretePoint location)
: GridCellBase<Grass>(location), _countdown(countdown), _grown(grown) {
}
bool isGrown() const {
return _grown;
}
int countdown() const {
return _countdown;
}
void reset() {
_grown=false;
_countdown = Grass::growing_rate;
}
void grow();
static void to_json(nlohmann::json& j, const Grass* grass);
static Grass* from_json(const nlohmann::json& j);
static std::size_t size(const fpmas::io::datapack::ObjectPack& p, const Grass* grass);
static void to_datapack(fpmas::io::datapack::ObjectPack& o, const Grass* grass);
static Grass* from_datapack(const fpmas::io::datapack::ObjectPack& o);
};
#endif