PixelBullet  0.0.1
A C++ game engine
Loading...
Searching...
No Matches
key_pickup_component.h
1#pragma once
2
3#include "pixelbullet/serialization/node.h"
4
5#include <string>
6
7namespace pixelbullet
8{
10{
11 bool enabled = true;
12 std::string key_id;
13 std::string display_name;
14 int amount = 1;
15
16 [[nodiscard]] bool operator==(const KeyPickupComponent&) const noexcept = default;
17};
18
19inline Node& operator<<(Node& node, const KeyPickupComponent& component)
20{
21 node["enabled"] << component.enabled;
22 if (!component.key_id.empty())
23 {
24 node["keyId"] << component.key_id;
25 }
26 if (!component.display_name.empty())
27 {
28 node["displayName"] << component.display_name;
29 }
30 node["amount"] << component.amount;
31 return node;
32}
33
34inline const Node& operator>>(const Node& node, KeyPickupComponent& component)
35{
36 if (node.HasProperty("enabled"))
37 {
38 node["enabled"] >> component.enabled;
39 }
40 else
41 {
42 component.enabled = true;
43 }
44
45 if (node.HasProperty("keyId"))
46 {
47 node["keyId"] >> component.key_id;
48 }
49 else
50 {
51 component.key_id.clear();
52 }
53
54 if (node.HasProperty("displayName"))
55 {
56 node["displayName"] >> component.display_name;
57 }
58 else
59 {
60 component.display_name.clear();
61 }
62
63 if (node.HasProperty("amount"))
64 {
65 node["amount"] >> component.amount;
66 }
67 else
68 {
69 component.amount = 1;
70 }
71
72 return node;
73}
74} // namespace pixelbullet
Represents a hierarchical node capable of storing various data types and supporting YAML serializatio...
Definition node.h:45
Definition key_pickup_component.h:10