R-Type
Distributed multiplayer game engine in C++
Loading...
Searching...
No Matches
EntityState.hpp
Go to the documentation of this file.
1/*
2** EPITECH PROJECT, 2025
3** Created on 09/12/2025.
4** File description:
5** EntityState.hpp
6*/
7
8#pragma once
9
10#include <cstdint>
11#include <optional>
12#include "../Shared/SharedTypes.hpp"
13#include "schemas/s2c_messages.capnp.h"
14
15namespace RType::Messages::S2C {
16
24 public:
25 uint32_t entityId;
28 std::optional<int32_t> health;
29 std::string currentAnimation;
30 int32_t spriteX;
31 int32_t spriteY;
32 int32_t spriteW;
33 int32_t spriteH;
34 uint32_t lastProcessedInput = 0; // 0 if N/A
35
37 : entityId(0),
38 type(Shared::EntityType::Player),
39 currentAnimation("idle"),
40 spriteX(0),
41 spriteY(0),
42 spriteW(33),
43 spriteH(17) {}
44
45 void toCapnp(::EntityState::Builder builder) const {
46 builder.setEntityId(entityId);
47 builder.setType(Shared::toCapnpEntityType(type));
48
49 auto posBuilder = builder.initPosition();
50 position.toCapnp(posBuilder);
51
52 builder.setHealth(health.value_or(-1));
53 builder.setCurrentAnimation(currentAnimation);
54 builder.setSpriteX(spriteX);
55 builder.setSpriteY(spriteY);
56 builder.setSpriteW(spriteW);
57 builder.setSpriteH(spriteH);
58 builder.setLastProcessedInput(lastProcessedInput);
59 }
60
61 static EntityState fromCapnp(::EntityState::Reader reader) {
62 EntityState result;
63 result.entityId = reader.getEntityId();
64 result.type = Shared::fromCapnpEntityType(reader.getType());
65 result.position = Shared::Vec2::fromCapnp(reader.getPosition());
66 result.lastProcessedInput = reader.getLastProcessedInput();
67
68 int32_t healthValue = reader.getHealth();
69 if (healthValue >= 0) {
70 result.health = healthValue;
71 }
72
73 result.currentAnimation = reader.getCurrentAnimation();
74 result.spriteX = reader.getSpriteX();
75 result.spriteY = reader.getSpriteY();
76 result.spriteW = reader.getSpriteW();
77 result.spriteH = reader.getSpriteH();
78 return result;
79 }
80 };
81
82} // namespace RType::Messages::S2C
State of a single entity.
static EntityState fromCapnp(::EntityState::Reader reader)
std::optional< int32_t > health
void toCapnp(::EntityState::Builder builder) const
Server-to-Client messages.
Definition Server.hpp:34
EntityType
Entity type enum - matches Cap'n Proto enum.
EntityType fromCapnpEntityType(::EntityType type)
inline ::EntityType toCapnpEntityType(EntityType type)
C++ wrapper for Vec2 position.
static Vec2 fromCapnp(::Vec2::Reader reader)
void toCapnp(::Vec2::Builder builder) const