summary refs log tree commit diff stats
path: root/src/map.h
blob: 6fe1e62a98a408e06c3b58ab0768294c4e0e3457 (plain) (blame)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
#ifndef MAP_H_74055FC0
#define MAP_H_74055FC0

#include <vector>
#include <string>
#include <list>
#include <stdexcept>
#include <map>

class Map {
public:

  class Adjacent {
  public:

    enum class Type {
      wall,
      wrap,
      warp,
      reverse
    };

    Adjacent(
      Type type = Type::wall,
      int mapId = -1) :
        type_(type),
        mapId_(mapId)
    {
    }

    inline Type getType() const
    {
      return type_;
    }

    inline int getMapId() const
    {
      return mapId_;
    }

  private:

    Type type_;
    int mapId_;
  };

  Map(
    int id,
    std::vector<int> tiles,
    std::string title,
    Adjacent leftAdjacent,
    Adjacent rightAdjacent,
    Adjacent upAdjacent,
    Adjacent downAdjacent) :
      id_(id),
      tiles_(std::move(tiles)),
      title_(std::move(title)),
      leftAdjacent_(std::move(leftAdjacent)),
      rightAdjacent_(std::move(rightAdjacent)),
      upAdjacent_(std::move(upAdjacent)),
      downAdjacent_(std::move(downAdjacent))
  {
  }

  inline size_t getId() const
  {
    return id_;
  }

  inline const std::vector<int>& getTiles() const
  {
    return tiles_;
  }

  inline const std::string& getTitle() const
  {
    return title_;
  }

  inline const Adjacent& getLeftAdjacent() const
  {
    return leftAdjacent_;
  }

  inline const Adjacent& getRightAdjacent() const
  {
    return rightAdjacent_;
  }

  inline const Adjacent& getUpAdjacent() const
  {
    return upAdjacent_;
  }

  inline const Adjacent& getDownAdjacent() const
  {
    return downAdjacent_;
  }

private:

  int id_;
  std::vector<int> tiles_;
  std::string title_;
  Adjacent leftAdjacent_;
  Adjacent rightAdjacent_;
  Adjacent upAdjacent_;
  Adjacent downAdjacent_;
};

#endif /* end of include guard: MAP_H_74055FC0 */