Files
Tower-Defense2/include/td/Types.h
2025-07-29 15:17:56 +02:00

87 lines
1.3 KiB
C++

#pragma once
#include <cstdint>
#include <fpm/fixed.hpp>
#include <td/Maths.h>
namespace sp {
class DataBuffer;
} // namespace sp
namespace td {
using FpFloat = fpm::fixed_16_16;
enum class TeamColor : std::int8_t {
None = -1,
Blue,
Red,
};
enum class TowerType : std::uint8_t {
Archer = 0,
Leach,
Artillery,
Mage,
Ice,
Poison,
Quake,
Sorcerer,
Zeus,
Necromancer,
Turret,
};
enum class EntityType : std::uint8_t {
Zombie = 0,
Spider,
Pigman,
Skelon,
Creeper,
Silverfish,
Blaze,
Witch,
Slime,
Giant,
Wither,
// And passive animals
};
enum class ShopItem : std::uint8_t {
Goldmine = 0,
Inferno,
Meteor,
Zeus,
Freeze,
Speed,
Heal,
};
using TowerID = std::uint16_t;
using PlayerID = std::uint8_t;
using EntityID = std::uint16_t;
struct TowerCoords {
std::int16_t x;
std::int16_t y;
};
using EntityCoords = Vec2<FpFloat>;
using PeerID = std::uint16_t;
enum class Direction : std::uint8_t {
PositiveX = 1 << 0,
NegativeX = 1 << 1,
PositiveY = 1 << 2,
NegativeY = 1 << 3,
};
sp::DataBuffer& operator<<(sp::DataBuffer& a_Buffer, const EntityCoords& a_Coords);
sp::DataBuffer& operator<<(sp::DataBuffer& a_Buffer, const FpFloat& a_Float);
sp::DataBuffer& operator>>(sp::DataBuffer& a_Buffer, EntityCoords& a_Coords);
sp::DataBuffer& operator>>(sp::DataBuffer& a_Buffer, FpFloat& a_Float);
} // namespace td