Peoplemon  0.1.0
Peoplemon 3 game source documentation
Light.hpp
Go to the documentation of this file.
1 #ifndef CORE_MAPS_LIGHT_HPP
2 #define CORE_MAPS_LIGHT_HPP
3 
4 #include <BLIB/Serialization.hpp>
5 
6 namespace core
7 {
8 namespace map
9 {
16 struct Light {
17  std::uint16_t radius;
18  sf::Vector2i position;
19  sf::Vector3i color;
20 
21  static const sf::Vector3i DefaultColor;
22 
27  Light();
28 
36  Light(std::uint16_t radius, const sf::Vector2i& position,
37  const sf::Vector3i& color = DefaultColor);
38 };
39 
40 } // namespace map
41 } // namespace core
42 
43 namespace bl
44 {
45 namespace serial
46 {
47 template<>
48 struct SerializableObject<core::map::Light> : public SerializableObjectBase {
49  SerializableField<1, core::map::Light, std::uint16_t> radius;
50  SerializableField<2, core::map::Light, sf::Vector2i> position;
51  SerializableField<3, core::map::Light, sf::Vector3i> color;
52 
54  : SerializableObjectBase("Light")
55  , radius("radius", *this, &core::map::Light::radius, SerializableFieldBase::Required{})
56  , position("position", *this, &core::map::Light::position, SerializableFieldBase::Required{})
57  , color("color", *this, &core::map::Light::color, SerializableFieldBase::Optional{}) {
58  color.setDefault(const_cast<sf::Vector3i&&>(core::map::Light::DefaultColor));
59  }
60 };
61 
62 } // namespace serial
63 } // namespace bl
64 
65 #endif
Core classes and functionality for both the editor and game.
Represents a renderable light in a Map.
Definition: Light.hpp:16
sf::Vector3i color
Definition: Light.hpp:19
std::uint16_t radius
Definition: Light.hpp:17
Light()
Creates an empty light.
Definition: Light.cpp:9
static const sf::Vector3i DefaultColor
Definition: Light.hpp:21
sf::Vector2i position
Definition: Light.hpp:18
SerializableField< 2, core::map::Light, sf::Vector2i > position
Definition: Light.hpp:50
SerializableField< 3, core::map::Light, sf::Vector3i > color
Definition: Light.hpp:51
SerializableField< 1, core::map::Light, std::uint16_t > radius
Definition: Light.hpp:49