mirror of
https://github.com/OpenFusionProject/OpenFusion.git
synced 2024-11-17 03:20:06 +00:00
52 lines
992 B
C++
52 lines
992 B
C++
|
#pragma once
|
||
|
|
||
|
#include "core/Core.hpp"
|
||
|
|
||
|
/* forward declaration(s) */
|
||
|
struct Entity;
|
||
|
|
||
|
enum EntityKind {
|
||
|
INVALID,
|
||
|
PLAYER,
|
||
|
SIMPLE_NPC,
|
||
|
COMBAT_NPC,
|
||
|
MOB,
|
||
|
EGG,
|
||
|
BUS
|
||
|
};
|
||
|
|
||
|
struct EntityRef {
|
||
|
EntityKind kind;
|
||
|
union {
|
||
|
CNSocket *sock;
|
||
|
int32_t id;
|
||
|
};
|
||
|
|
||
|
EntityRef(CNSocket *s);
|
||
|
EntityRef(int32_t i);
|
||
|
|
||
|
bool isValid() const;
|
||
|
Entity *getEntity() const;
|
||
|
|
||
|
bool operator==(const EntityRef& other) const {
|
||
|
if (kind != other.kind)
|
||
|
return false;
|
||
|
|
||
|
if (kind == EntityKind::PLAYER)
|
||
|
return sock == other.sock;
|
||
|
|
||
|
return id == other.id;
|
||
|
}
|
||
|
|
||
|
// arbitrary ordering
|
||
|
bool operator<(const EntityRef& other) const {
|
||
|
if (kind == other.kind) {
|
||
|
if (kind == EntityKind::PLAYER)
|
||
|
return sock < other.sock;
|
||
|
else
|
||
|
return id < other.id;
|
||
|
}
|
||
|
|
||
|
return kind < other.kind;
|
||
|
}
|
||
|
};
|