F4MP/codigos originales/tiltedcode/Code/server/Components/CellIdComponent.h

48 lines
1.2 KiB
C
Raw Normal View History

#pragma once
#ifndef TP_INTERNAL_COMPONENTS_GUARD
#error Include Components.h instead
#endif
#include <Structs/GridCellCoords.h>
struct CellIdComponent
{
CellIdComponent() {}
CellIdComponent(GameId aCellId)
: Cell(aCellId)
{
}
CellIdComponent(GameId aCellId, GameId aWorldSpaceId, GridCellCoords aCenterCoords)
: Cell(aCellId)
, WorldSpaceId(aWorldSpaceId)
, CenterCoords(aCenterCoords)
{
}
bool operator==(const CellIdComponent& acRhs) const noexcept { return Cell == acRhs.Cell; }
bool operator!=(const CellIdComponent& acRhs) const noexcept { return !operator==(acRhs); }
operator bool() const noexcept { return *this != CellIdComponent{}; }
bool IsInInteriorCell() const noexcept { return !WorldSpaceId; }
bool IsInRange(const CellIdComponent& acRhs, bool aIsDragon) const noexcept
{
if (IsInInteriorCell())
return Cell == acRhs.Cell;
if (WorldSpaceId != acRhs.WorldSpaceId)
return false;
return GridCellCoords::IsCellInGridCell(acRhs.CenterCoords, CenterCoords, aIsDragon);
}
GameId Cell{};
GameId WorldSpaceId{};
GridCellCoords CenterCoords{};
};