// IAEngine: 2D Game Engine by IA // Copyright (C) 2025 IASoft (PVT) LTD (oss@iasoft.dev) // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . #include namespace ia::iae::rpg { RefPtr g_map; } namespace ia::iae::rpg { GameRequestedConfig *RequestEngineConfig() { STATIC GameRequestedConfig EngineConfig{ .DesignWidth = 800, .DesignHeight = 600, .WindowWidth = 800, .WindowHeight = 600, }; return &EngineConfig; } VOID OnInitialize() { Engine::Input_SetupOnScreenGamePad(); Engine::SetRenderState_YSortingEnabled(true); Engine::Input_SetupKeyboardGamePad(InputKey::K_LEFT, InputKey::K_RIGHT, InputKey::K_DOWN, InputKey::K_UP, InputKey::A, InputKey::B, InputKey::C, InputKey::D); Engine::CreateTileSetFromFile("TSet1", "Resources/Sprites/Cute_Fantasy_Free/Tiles/Beach_Tile.png", 16, 16); g_map = MakeRefPtr("Map"); g_map->GetTileMapComponent()->Setup({ TileMapComponent::TileEntryDesc{ .IsWalkable = true, .TileIndex = 0, .TileSetName = "TSet1", }, TileMapComponent::TileEntryDesc{ .IsWalkable = true, .TileIndex = 1, .TileSetName = "TSet1", }, TileMapComponent::TileEntryDesc{ .IsWalkable = true, .TileIndex = 2, .TileSetName = "TSet1", }, TileMapComponent::TileEntryDesc{ .IsWalkable = true, .TileIndex = 3, .TileSetName = "TSet1", } }, 16, 16, 4, 1); auto mainCamera = MakeRefPtr(Engine::GetUniqueResourceName()); Engine::SetActiveCamera(mainCamera->GetCameraComponent()); Engine::GetActiveScene()->AddNode(mainCamera); Engine::GetActiveScene()->AddNode(g_map); } VOID OnTerminate() { } VOID OnDebugDraw() { } VOID OnFixedUpdate() { } VOID OnUpdate(IN FLOAT32 deltaTime) { } VOID OnResize(IN INT32 newWidth, IN INT32 newHeight) { } } // namespace ia::iae::rpg C_DECL(GameRequestedConfig *Game_GetConfigRequest()) { return rpg::RequestEngineConfig(); } C_DECL(VOID Game_OnInitialize()) { rpg::OnInitialize(); } C_DECL(VOID Game_OnTerminate()) { rpg::OnTerminate(); } C_DECL(VOID Game_OnDebugDraw()) { rpg::OnDebugDraw(); } C_DECL(VOID Game_OnFixedUpdate()) { rpg::OnFixedUpdate(); } C_DECL(VOID Game_OnUpdate(IN FLOAT32 deltaTime)) { rpg::OnUpdate(deltaTime); } C_DECL(VOID Game_OnResize(IN INT32 newWidth, IN INT32 newHeight)) { rpg::OnResize(newWidth, newHeight); } IAENGINE_RUN("RPG Sample", "com.iasoft.iae.rpgsample", "IASoft (PVT) LTD", "IASoft (PVT) LTD", 1, 0, 0);