77 auto sc = static_cast<SDL_Scancode>(msg.controlId);
79 if (sc == SDL_SCANCODE_TAB && !s_key_TabPressed)
81 s_key_TabPressed = true;
82 World::Get().ToggleGrid();
147 if (
binding.controllerID !=
msg.deviceId)
continue;
160 ctrl.isConnected =
true;
163 ctrl.isConnected =
false;
178 float value =
msg.param1;
183 if (
axis == 0)
ctrl.leftStick.x = value;
184 else if (
axis == 1)
ctrl.leftStick.y = value;
185 else if (
axis == 2)
ctrl.rightStick.x = value;
186 else if (
axis == 3)
ctrl.rightStick.y = value;
187 else if (
axis == 4)
ctrl.leftTrigger = (value + 1.0f) * 0.5f;
188 else if (
axis == 5)
ctrl.rightTrigger = (value + 1.0f) * 0.5f;
194 catch (
const std::exception&)
216 switch (
msg.msg_type)
218 case EventType::Olympe_EventType_Game_Pause:
219 VideoGame::Get().Pause();
220 SYSTEM_LOG <<
"GameEventConsumeSystem: Paused via event\n";
222 case EventType::Olympe_EventType_Game_Resume:
223 VideoGame::Get().Resume();
224 SYSTEM_LOG <<
"GameEventConsumeSystem: Resumed via event\n";
226 case EventType::Olympe_EventType_Game_Quit:
227 VideoGame::Get().RequestQuit();
228 SYSTEM_LOG <<
"GameEventConsumeSystem: Quit requested via event\n";
230 case EventType::Olympe_EventType_Game_Restart:
231 SYSTEM_LOG <<
"GameEventConsumeSystem: Restart requested via event (not implemented)\n";
233 case EventType::Olympe_EventType_Game_TakeScreenshot:
234 SYSTEM_LOG <<
"GameEventConsumeSystem: TakeScreenshot event (not implemented)\n";
236 case EventType::Olympe_EventType_Game_SaveState:
238 int slot = msg.controlId;
239 SYSTEM_LOG <<
"GameEventConsumeSystem: SaveState event slot=" << slot <<
"\n";
240 VideoGame::Get().SaveGame(slot);
246 SYSTEM_LOG <<
"GameEventConsumeSystem: LoadState event slot=" <<
slot <<
"\n";
272 SYSTEM_LOG <<
"GameEventConsumeSystem: Enter pressed -> add player (returned " <<
added <<
")\n";
285 SYSTEM_LOG <<
"GameEventConsumeSystem: Backspace pressed -> remove player " <<
pid <<
" -> " << (
ok ?
"removed" :
"failed") <<
"\n";
315 auto sc = static_cast<SDL_Scancode>(msg.controlId);
317 if (sc == SDL_SCANCODE_ESCAPE)
319 if (GameMenu::Get().IsActive())
321 GameMenu::Get().Deactivate();
322 SYSTEM_LOG <<
"UIEventConsumeSystem: ESC pressed - menu deactivated\n";
326 GameMenu::Get().Activate();
327 SYSTEM_LOG <<
"UIEventConsumeSystem: ESC pressed - menu activated\n";
339 SYSTEM_LOG <<
"UIEventConsumeSystem: Menu selection moved up\n";
344 SYSTEM_LOG <<
"UIEventConsumeSystem: Menu selection moved down\n";
349 SYSTEM_LOG <<
"UIEventConsumeSystem: Menu selection validated\n";
361 switch (
msg.msg_type)
365 SYSTEM_LOG <<
"UIEventConsumeSystem: Menu Enter event - activated\n";
369 SYSTEM_LOG <<
"UIEventConsumeSystem: Menu Exit event - deactivated\n";
374 SYSTEM_LOG <<
"UIEventConsumeSystem: Menu Validate event\n";
493 catch (
const std::exception&
e)
495 std::cerr <<
"MovementSystem Error for Entity " << entity <<
": " <<
e.what() <<
"\n";
638 constexpr uint32_t FLIPPED_HORIZONTALLY_FLAG = 0x80000000;
639 constexpr uint32_t FLIPPED_VERTICALLY_FLAG = 0x40000000;
640 constexpr uint32_t FLIPPED_DIAGONALLY_FLAG = 0x20000000;
642 flipH = (gid & FLIPPED_HORIZONTALLY_FLAG) != 0;
643 flipV = (gid & FLIPPED_VERTICALLY_FLAG) != 0;
644 flipD = (gid & FLIPPED_DIAGONALLY_FLAG) != 0;
660 const std::string& orientation,
661 int tileWidth,
int tileHeight,
664 if (orientation ==
"isometric") {
682 return Vector(tileX, tileY, 0);
725 int worldX,
int worldY,
727 int tileWidth,
int tileHeight)
731 if (orientation ==
"isometric") {
738 return baseDepth +
static_cast<float>(worldY * tileHeight);
745 int tileWidth,
int tileHeight)
749 if (orientation ==
"isometric") {
762 int worldX,
int worldY,
uint32_t gid,
763 int tileoffsetX,
int tileoffsetY,
765 const std::string& orientation,
766 int tileWidth,
int tileHeight)
768 if (!texture)
return;
771 bool flipH, flipV, flipD;
776 (
float)srcRect.w, (
float)srcRect.h};
781 if (orientation ==
"isometric") {
784 float isoX = (worldX - worldY) * (tileWidth / 2.0f);
785 float isoY = (worldX + worldY) * (tileHeight / 2.0f);
792 else if (orientation ==
"hexagonal") {
794 float hexRadius = tileWidth / 2.0f;
796 float worldYPos = hexRadius * (3.0f / 2.0f * worldY);
801 worldPos =
Vector((
float) worldX * tileWidth, (
float) worldY * tileHeight, 0.0f);
806 float screenX = (worldPos.
x -
cam.worldPosition.x) *
cam.zoom -
cam.screenOffset.x +
cam.viewport.w / 2.0f;
807 float screenY = (worldPos.
y -
cam.worldPosition.y) *
cam.zoom -
cam.screenOffset.y +
cam.viewport.h / 2.0f;
818 if (orientation ==
"isometric") {
877 int tileoffsetX;
int tileoffsetY;
889 item.type = ParallaxLayer;
909 item.tile.zOrder = z;
917 item.entity.entityId = id;
930 const auto& parallaxLayers =
parallaxMgr.GetLayers();
931 for (
size_t i = 0;
i < parallaxLayers.size(); ++
i) {
932 const auto& layer = parallaxLayers[
i];
933 if (!layer.visible)
continue;
936 if (layer.scrollFactorX < 1.0f || layer.zOrder < 0) {
938 depth = -1000.0f + layer.zOrder;
939 }
else if (layer.scrollFactorX > 1.0f || layer.zOrder > 100) {
941 depth = 10000.0f + layer.zOrder;
944 depth =
static_cast<float>(layer.zOrder);
947 renderBatch.push_back(RenderItem::MakeParallax(depth,
static_cast<int>(
i)));
960 for (
int y = 0; y <
chunk.height; ++y) {
961 for (
int x = 0; x <
chunk.width; ++x) {
962 int worldX =
chunk.x + x;
963 int worldY =
chunk.y + y;
975 if (gid == 0)
continue;
981 if (!
tilesetMgr.GetTileTexture(gid, texture, srcRect, tileset)) {
989 tileWidth, tileHeight);
993 depth, texture, srcRect,
1014 if (
id.type ==
"UIElement")
1018 if (!
visual.visible)
continue;
1032 tileWidth, tileHeight);
1034 renderBatch.push_back(RenderItem::MakeEntity(depth, entity));
1044 return a.depth < b.depth;
1051 switch (
item.type) {
1052 case RenderItem::ParallaxLayer:
1056 case RenderItem::IndividualTile:
1058 item.tile.texture,
item.tile.srcRect,
1060 item.tile.tileoffsetX,
item.tile.tileoffsetY,
1061 cam, mapOrientation, tileWidth, tileHeight
1065 case RenderItem::Entity:
1081 if (
settings->showCollisionOverlay)
1087 if (
settings->showNavigationOverlay)
1172 string _str =
id.name +
", pos: (" + std::to_string(
pos.position.x) +
", " + std::to_string(
pos.position.y) +
") z-order: " + std::to_string(
pos.position.z) +
")";
1189 catch (
const std::exception&
e)
1191 std::cerr <<
"RenderSingleEntity Error for Entity " << entity <<
": " <<
e.what() <<
"\n";
1286 catch (
const std::exception&
e)
1288 std::cerr <<
"RenderEntitiesForCamera Error for Entity " << entity <<
": " <<
e.what() <<
"\n";
1327 catch (
const std::exception&
e)
1329 std::cerr <<
"MovementSystem Error for Entity " << entity <<
": " <<
e.what() <<
"\n";
1366 pctrl.Joydirection.x = 0.0f;
1367 pctrl.Joydirection.y = 0.0f;
1380 if (
binding.controllerID == -1)
1387 auto profile =
device->profile;
1398 pctrl.Joydirection.y = -1.0f;
1403 pctrl.Joydirection.y = 1.0f;
1408 pctrl.Joydirection.x = -1.0f;
1413 pctrl.Joydirection.x = 1.0f;
1417 auto jumpBinding = profile->GetActionBinding(
"jump");
1422 auto shootBinding = profile->GetActionBinding(
"shoot");
1436 if (
km.IsKeyHeld(
mapping->keyboardBindings[
"up"]) ||
km.IsKeyHeld(
mapping->keyboardBindings[
"up_alt"]))
1437 pctrl.Joydirection.y = -1.0f;
1438 if (
km.IsKeyHeld(
mapping->keyboardBindings[
"down"]) ||
km.IsKeyHeld(
mapping->keyboardBindings[
"down_alt"]))
1439 pctrl.Joydirection.y = 1.0f;
1440 if (
km.IsKeyHeld(
mapping->keyboardBindings[
"left"]) ||
km.IsKeyHeld(
mapping->keyboardBindings[
"left_alt"]))
1441 pctrl.Joydirection.x = -1.0f;
1442 if (
km.IsKeyHeld(
mapping->keyboardBindings[
"right"]) ||
km.IsKeyHeld(
mapping->keyboardBindings[
"right_alt"]))
1443 pctrl.Joydirection.x = 1.0f;
1446 pctrl.isJumping =
km.IsKeyHeld(
mapping->keyboardBindings[
"jump"]);
1447 pctrl.isShooting =
km.IsKeyHeld(
mapping->keyboardBindings[
"shoot"]);
1448 pctrl.isInteracting =
km.IsKeyPressed(
mapping->keyboardBindings[
"interact"]);
1454 pctrl.Joydirection.y = -1.0f;
1456 pctrl.Joydirection.y = 1.0f;
1458 pctrl.Joydirection.x = -1.0f;
1460 pctrl.Joydirection.x = 1.0f;
1469 else if (
binding.controllerID >= 0)
1475 pctrl.Joydirection.x =
ctrl.leftStick.x;
1476 pctrl.Joydirection.y =
ctrl.leftStick.y;
1479 float deadzone = 0.15f;
1481 deadzone =
device->profile->deadzone;
1487 pctrl.Joydirection.y *
pctrl.Joydirection.y);
1490 pctrl.Joydirection.x = 0.0f;
1491 pctrl.Joydirection.y = 0.0f;
1496 auto profile =
device->profile;
1498 auto jumpBinding = profile->GetActionBinding(
"jump");
1503 auto shootBinding = profile->GetActionBinding(
"shoot");
1531 pctrl.Joydirection.y *
pctrl.Joydirection.y);
1538 catch (
const std::exception&
e)
1540 std::cerr <<
"InputMappingSystem Error for Entity " << entity <<
": " <<
e.what() <<
"\n";
1563 if (
agent.needsRepath)
1566 agent.needsRepath =
false;
1570 if (
agent.hasPath && !
agent.currentPath.empty())
1591 for (
int i = 0;
i < 8; ++
i)
1593 if (
agent.layerMask & (1 <<
i))
1601 std::vector<Vector> path;
1606 agent.currentPath = path;
1607 agent.currentWaypointIndex = 0;
1608 agent.hasPath =
true;
1613 agent.hasPath =
false;
1614 agent.currentPath.clear();
1623 if (
agent.currentWaypointIndex >=
static_cast<int>(
agent.currentPath.size()))
1626 agent.hasPath =
false;
1627 agent.currentPath.clear();
1641 ++
agent.currentWaypointIndex;
1655 ++
agent.currentWaypointIndex;
1660 position.position.y += direction.
y *
moveSpeed;
1728 if (!
s || !
s->enabled)
return;
1739 if (!
cam.isActive)
continue;
1743 (
int)
cam.viewport.y,
1750 switch (
s->projection)
1771 (
int)
cam.viewport.y,
1778 switch (
s->projection)
1803 if (!
s || !
s->enabled)
return;
1806 switch (
s->projection)
1820 const float csx = std::max(1.f,
s.cellSize.x);
1821 const float csy = std::max(1.f,
s.cellSize.y);
1825 float minX = bounds.x;
1826 float maxX = bounds.x + bounds.w;
1827 float minY = bounds.y;
1828 float maxY = bounds.y + bounds.h;
1832 if (
cam.zoom <
s.lodZoomThreshold)
1863 const float w = std::max(1.f,
s.cellSize.x);
1864 const float h = std::max(1.f,
s.cellSize.y);
1883 float det =
u.x *
v.y -
u.y *
v.x;
1884 if (std::abs(
det) < 0.0001f)
return {0.f, 0.f};
1895 std::vector<std::pair<float, float>>
samples = {
1896 {bounds.x, bounds.y},
1897 {bounds.x + bounds.w, bounds.y},
1898 {bounds.x, bounds.y + bounds.h},
1899 {bounds.x + bounds.w, bounds.y + bounds.h},
1900 {bounds.x + bounds.w * 0.5f, bounds.y + bounds.h * 0.5f}
1922 if (
cam.zoom <
s.lodZoomThreshold)
1950 const float r = std::max(1.f,
s.hexRadius);
1953 const float dx = 1.5f * r;
1954 const float dy = std::sqrt(3.0f) * r;
1958 float minX = bounds.x;
1959 float maxX = bounds.x + bounds.w;
1960 float minY = bounds.y;
1961 float maxY = bounds.y + bounds.h;
1971 if (
cam.zoom <
s.lodZoomThreshold)
1979 float y =
dy * ((
float)
rr + 0.5f * (
float)(
q & 1));
1980 return Vector(x, y, 0.f);
1986 for (
int i = 0;
i < 6; ++
i)
1989 pts[
i] =
Vector(
c.x + std::cos(a) * r,
c.y + std::sin(a) * r, 0.f);
1991 for (
int i = 0;
i < 6; ++
i)
2039 float halfW = width / 2.0f;
2040 float halfH = height / 2.0f;
2043 SDL_FColor fcolor = { color.r / 255.0f, color.g / 255.0f, color.b / 255.0f, color.a / 255.0f };
2075 int indices[] = {0, 1, 2, 0, 2, 3};
2093 SDL_FColor fcolor = { color.r / 255.0f, color.g / 255.0f, color.b / 255.0f, color.a / 255.0f };
2103 for (
int i = 0;
i < 6; ++
i)
2115 int indices[18] = {0,1,2, 0,2,3, 0,3,4, 0,4,5, 0,5,6, 0,6,1};
2123 if (!
s.showCollisionOverlay)
return;
2133 SYSTEM_LOG <<
"[GridSystem] RenderCollisionOverlay first call\n";
2135 <<
"x" <<
collMap.GetHeight() <<
"\n";
2136 SYSTEM_LOG <<
" Active layer: " << (
int)
s.activeCollisionLayer <<
"\n";
2138 << (
int)
s.collisionColors[
s.activeCollisionLayer].r <<
","
2139 << (
int)
s.collisionColors[
s.activeCollisionLayer].g <<
","
2140 << (
int)
s.collisionColors[
s.activeCollisionLayer].b <<
","
2141 << (
int)
s.collisionColors[
s.activeCollisionLayer].a <<
")\n";
2143 <<
"x" <<
collMap.GetTileHeight() <<
"\n";
2150 SYSTEM_LOG <<
"[GridSystem] ERROR: CollisionMap is EMPTY (not initialized)!\n";
2159 const std::vector<std::vector<TileProperties>>&
layerData =
collMap.GetLayer(layer);
2173 collMap.WorldToGrid(bounds.x + bounds.w, bounds.y,
trX,
trY);
2174 collMap.WorldToGrid(bounds.x, bounds.y + bounds.h,
blX,
blY);
2175 collMap.WorldToGrid(bounds.x + bounds.w, bounds.y + bounds.h,
brX,
brY);
2196 SYSTEM_LOG <<
" World bounds: x=" << bounds.x <<
", y=" << bounds.y
2197 <<
", w=" << bounds.w <<
", h=" << bounds.h <<
"\n";
2199 <<
trX <<
"," <<
trY <<
") BL(" <<
blX <<
"," <<
blY <<
") BR("
2200 <<
brX <<
"," <<
brY <<
")\n";
2226 << x <<
"," << y <<
")\n";
2231 float worldX =
tile.worldX;
2232 float worldY =
tile.worldY;
2239 float tileWidth =
collMap.GetTileWidth();
2240 float tileHeight =
collMap.GetTileHeight();
2241 float screenWidth = tileWidth *
cam.zoom;
2242 float screenHeight = tileHeight *
cam.zoom;
2263 rect.w = screenWidth;
2264 rect.h = screenHeight;
2285 if (!
s.showNavigationOverlay)
return;
2295 SYSTEM_LOG <<
"[GridSystem] RenderNavigationOverlay first call\n";
2297 <<
"x" <<
collMap.GetHeight() <<
"\n"
2298 <<
"y" <<
collMap.GetHeight() <<
"\n";
2299 SYSTEM_LOG <<
" Active layer: " << (
int)
s.activeNavigationLayer <<
"\n";
2301 << (
int)
s.navigationColors[
s.activeNavigationLayer].r <<
","
2302 << (
int)
s.navigationColors[
s.activeNavigationLayer].g <<
","
2303 << (
int)
s.navigationColors[
s.activeNavigationLayer].b <<
","
2304 << (
int)
s.navigationColors[
s.activeNavigationLayer].a <<
")\n";
2306 <<
"x" <<
collMap.GetTileHeight() <<
"\n";
2313 SYSTEM_LOG <<
"[GridSystem] ERROR: NavigationMap is EMPTY (not initialized)!\n";
2322 const std::vector<std::vector<TileProperties>>&
layerData =
collMap.GetLayer(layer);
2336 collMap.WorldToGrid(bounds.x + bounds.w, bounds.y,
trX,
trY);
2337 collMap.WorldToGrid(bounds.x, bounds.y + bounds.h,
blX,
blY);
2338 collMap.WorldToGrid(bounds.x + bounds.w, bounds.y + bounds.h,
brX,
brY);
2359 SYSTEM_LOG <<
" World bounds: x=" << bounds.x <<
", y=" << bounds.y
2360 <<
", w=" << bounds.w <<
", h=" << bounds.h <<
"\n";
2362 <<
trX <<
"," <<
trY <<
") BL(" <<
blX <<
"," <<
blY <<
") BR("
2363 <<
brX <<
"," <<
brY <<
")\n";
2382 <<
"navigable=" << (
testTile.isNavigable ?
"YES" :
"NO")
2383 <<
", blocked=" << (
testTile.isBlocked ?
"YES" :
"NO") <<
"\n";
2389 SYSTEM_LOG <<
" DEBUG: Is in grid scan range? "
2402 if (
tile.isNavigable && !
tile.isBlocked)
2410 << x <<
"," << y <<
")\n";
2415 float worldX =
tile.worldX;
2416 float worldY =
tile.worldY;
2429 float tileWidth =
collMap.GetTileWidth();
2430 float tileHeight =
collMap.GetTileHeight();
2431 float screenWidth = tileWidth *
cam.zoom;
2432 float screenHeight = tileHeight *
cam.zoom;
2453 rect.w = screenWidth;
2454 rect.h = screenHeight;
2498 if (!
cam.isActive)
continue;
2502 (
int)
cam.viewport.x, (
int)
cam.viewport.y,
2503 (
int)
cam.viewport.w, (
int)
cam.viewport.h
2542 if (
id.type !=
"UIElement")
2546 if (
id.tag ==
"MenuElement")
2673 SYSTEM_LOG <<
"UIRenderingSystem: In-game menu rendered (Resume/Restart/Quit)\n";
2713 catch (
const std::exception&
e)
2715 std::cerr <<
"RenderingEditorSystem Error for Entity " << entity <<
": " <<
e.what() <<
"\n";
@ FollowPath
Follow the path (check progression)
Core ECS component definitions.
ComponentTypeID GetComponentTypeID_Static()
SDL_FlipMode GetSDLFlip(bool flipH, bool flipV, bool)
void ExtractFlipFlags(uint32_t gid, bool &flipH, bool &flipV, bool &flipD)
void RenderSingleEntity(const CameraTransform &cam, EntityID entity)
void RenderMultiLayerForCamera(const CameraTransform &cam)
void RenderTileImmediate(SDL_Texture *texture, const SDL_Rect &srcRect, int worldX, int worldY, uint32_t gid, int tileoffsetX, int tileoffsetY, const CameraTransform &cam, const std::string &orientation, int tileWidth, int tileHeight)
void RenderEntitiesForCamera(const CameraTransform &cam)
float CalculateTileDepth(const std::string &orientation, int worldX, int worldY, int layerZOrder, int tileWidth, int tileHeight)
void GetVisibleTileRange(const CameraTransform &cam, const std::string &orientation, int tileWidth, int tileHeight, int &minX, int &minY, int &maxX, int &maxY)
float CalculateEntityDepth(const std::string &orientation, const Vector &position, int tileWidth, int tileHeight)
void RenderMultiLayerForCamera(const CameraTransform &cam)
CameraTransform GetActiveCameraTransform(short playerID)
static SDL_Renderer * renderer
World and ECS Manager for Olympe Engine.
virtual void Process() override
CameraEventConsumeSystem()
virtual void Process() override
static CollisionMap & Get()
virtual void Process() override
virtual void Process() override
std::set< EntityID > m_entities
ComponentSignature requiredSignature
static EventQueue & Get()
static int screenWidth
Screen width in pixels.
static float fDt
Delta time between frames in seconds.
static int screenHeight
Screen height in pixels.
static SDL_Renderer * renderer
Main SDL renderer.
virtual void Process() override
void RenderIso(const CameraTransform &cam, const GridSettings_data &s)
SDL_FRect GetWorldVisibleBounds(const CameraTransform &cam)
void RenderHex(const CameraTransform &cam, const GridSettings_data &s)
void DrawHexagonOverlay(float centerX, float centerY, float radius, const SDL_Color &color)
void RenderOrtho(const CameraTransform &cam, const GridSettings_data &s)
void DrawFilledRectWorld(const CameraTransform &cam, const Vector &worldPos, float width, float height, const SDL_Color &c)
void RenderCollisionOverlay(const CameraTransform &cam, const GridSettings_data &s)
const GridSettings_data * FindSettings() const
void RenderNavigationOverlay(const CameraTransform &cam, const GridSettings_data &s)
void DrawIsometricTileOverlay(float centerX, float centerY, float width, float height, const SDL_Color &color)
void DrawLineWorld(const CameraTransform &cam, const Vector &aWorld, const Vector &bWorld, const SDL_Color &c)
void RenderForCamera(const CameraTransform &cam)
virtual void Render() override
static JoystickManager & Get()
static KeyboardManager & Get()
virtual void Process() override
static NavigationMap & Get()
bool NeedsRepath(EntityID entity)
void FollowPath(EntityID entity, float deltaTime)
virtual void Process() override
void RequestPath(EntityID entity, const Vector &targetPos)
static ParallaxLayerManager & Get()
virtual void Process() override
virtual void Process() override
void SetActiveCamera(const CameraTransform &cam)
Set the active camera for the current rendering pass Call this at the start of rendering for each pla...
void ClearActiveCamera()
Clear the active camera (e.g., at end of rendering pass)
static RenderContext & Get()
virtual void Render() override
virtual void Render() override
virtual void Process() override
virtual void Process() override
void RenderInGameMenu(const CameraTransform &cam)
virtual void Render() override
void RenderHUD(const CameraTransform &cam)
void RenderDebugOverlay(const CameraTransform &cam)
std::vector< EntityID > m_playersEntity
bool LoadGame(int slot=0)
EntityID AddPlayerEntity(string _playerPrefabName="Player")
bool RemovePlayerEntity(const EntityID eid)
static ViewportManager & Get()
const std::vector< short > & GetPlayers() const
int GetTileHeight() const
void ToggleCollisionOverlay()
Toggle collision overlay visibility.
const std::vector< TileChunk > & GetTileChunks() const
static World & Get()
Get singleton instance (short form)
bool HasComponent(EntityID entity) const
T & GetComponent(EntityID entity)
std::unordered_map< EntityID, ComponentSignature > m_entitySignatures
void ToggleNavigationOverlay()
Toggle navigation overlay visibility.
const std::string & GetMapOrientation() const
TilesetManager & GetTilesetManager()
void Draw_FilledCircle(int cx, int cy, int radius)
void Draw_Text(const std::string &text, const SDL_FRect *rect, SDL_Color textcolor, SDL_Color backgroundcolor)
void Draw_Rectangle(const SDL_FRect *rect, SDL_Color color)
constexpr int ORTHO_TILE_PADDING
constexpr float DEPTH_LAYER_SCALE
constexpr int ISO_TILE_PADDING
constexpr float DEPTH_X_SCALE
constexpr float DEPTH_DIAGONAL_SCALE
Bounding box component for collision detection.
SDL_FRect boundingBox
Collision rectangle.
static constexpr int MAX_BUTTONS
Identity component for entity identification.
Position component for spatial location.
Information about a loaded tileset.
int tileoffsetX
Global X offset for all tiles.
int tileoffsetY
Global Y offset for all tiles.
@ Olympe_EventType_Joystick_ButtonUp
@ Olympe_EventType_Joystick_ButtonDown
@ Olympe_EventType_Joystick_AxisMotion
@ Olympe_EventType_Keyboard_Connected
@ Olympe_EventType_Keyboard_Disconnected
@ Olympe_EventType_Keyboard_KeyDown
@ Olympe_EventType_Menu_Enter
@ Olympe_EventType_Game_LoadState
@ Olympe_EventType_Joystick_Connected
@ Olympe_EventType_Joystick_Disconnected
@ Olympe_EventType_Keyboard_KeyUp
@ Olympe_EventType_Menu_Validate
@ Olympe_EventType_Menu_Exit