OpenTTD Source: src/newgrf_badge_type.h Source File

OpenTTD Source 15.0-RC2

newgrf_badge_type.h
Go to the documentation of this file.
1/*
2 * This file is part of OpenTTD.
3 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
4 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
5 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <https://www.gnu.org/licenses/old-licenses/gpl-2.0>.
6 */
7
10#ifndef NEWGRF_BADGE_TYPE_H
11#define NEWGRF_BADGE_TYPE_H
12
13#include "core/enum_type.hpp"
14#include "core/strong_typedef_type.hpp"
15
16using BadgeID = StrongType::Typedef<uint16_t, struct BadgeIDTag, StrongType::Compare>;
17using BadgeClassID = StrongType::Typedef<uint16_t, struct BadgeClassIDTag, StrongType::Compare>;
18
19 template <> struct std::hash<BadgeClassID> {
20 std::size_t operator()(const BadgeClassID &badge_class_index) const noexcept
21 {
22 return std::hash<BadgeClassID::BaseType>{}(badge_class_index.base());
23 }
24};
25
26 enum class BadgeFlag : uint8_t {
27 Copy = 0,
28 NameListStop = 1,
29 NameListFirstOnly = 2,
30 UseCompanyColour = 3,
31 NameListSkip = 4,
32
33 HasText,
34};
35using BadgeFlags = EnumBitSet<BadgeFlag, uint8_t>;
36
37using BadgeFilterChoices = std::unordered_map<BadgeClassID, BadgeID>;
38
39#endif /* NEWGRF_BADGE_TYPE_H */
EnumBitSet< BadgeFlag, uint8_t >
enum_type.hpp
Type (helpers) for enums.
BadgeFlag
BadgeFlag
Definition newgrf_badge_type.h:26
BadgeFlag::NameListStop
@ NameListStop
Stop adding names to the name list after this badge.
BadgeFlag::UseCompanyColour
@ UseCompanyColour
Apply company colour palette to this badge.
BadgeFlag::NameListFirstOnly
@ NameListFirstOnly
Don't add this name to the name list if not first.
BadgeFlag::Copy
@ Copy
Copy badge to related things.
BadgeFlag::HasText
@ HasText
Internal flag set if the badge has text.
BadgeFlag::NameListSkip
@ NameListSkip
Don't show name in name list at all.
strong_typedef_type.hpp
Type (helpers) for making a strong typedef that is a distinct type.
StrongType::Typedef< uint16_t, struct BadgeIDTag, StrongType::Compare >