1// SuperTux
2// Copyright (C) 2015 Hume2 <teratux.mail@gmail.com>
3//
4// This program is free software: you can redistribute it and/or modify
5// it under the terms of the GNU General Public License as published by
6// the Free Software Foundation, either version 3 of the License, or
7// (at your option) any later version.
8//
9// This program is distributed in the hope that it will be useful,
10// but WITHOUT ANY WARRANTY; without even the implied warranty of
11// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12// GNU General Public License for more details.
13//
14// You should have received a copy of the GNU General Public License
15// along with this program. If not, see <http://www.gnu.org/licenses/>.
16
17#ifndef HEADER_SUPERTUX_EDITOR_OBJECT_INFO_HPP
18#define HEADER_SUPERTUX_EDITOR_OBJECT_INFO_HPP
19
20#include "editor/object_group.hpp"
21
22class ObjectInfo final
23{
24public:
25 ObjectInfo();
26
27 int get_num_worldmap_groups() const { return get_num_groups(true); }
28 int get_num_level_groups() const { return get_num_groups(false); }
29
30 int get_first_worldmap_group_index() const
31 {
32 int worldmap_group_index = 0;
33 for (const auto& group : m_groups)
34 {
35 if (group.is_worldmap())
36 {
37 return worldmap_group_index;
38 }
39 worldmap_group_index++;
40 }
41 return -1;
42 }
43
44private:
45 int get_num_groups(bool for_worldmap) const
46 {
47 int num_groups = 0;
48 for (const auto& group : m_groups)
49 {
50 if (group.is_worldmap() == for_worldmap)
51 {
52 num_groups++;
53 }
54 }
55 return num_groups;
56 }
57
58public:
59 std::vector<ObjectGroup> m_groups;
60
61private:
62 ObjectInfo(const ObjectInfo&) = delete;
63 ObjectInfo& operator=(const ObjectInfo&) = delete;
64};
65
66#endif
67
68/* EOF */
69