2025-09-05 10:49:27 +02:00
|
|
|
import ./utils/appImGui
|
2025-09-02 12:48:46 +02:00
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
proc main() =
|
|
|
|
|
var app = createApp(1024, 800, imnodes = true, title = "Conquest", docking = true)
|
|
|
|
|
defer: app.destroyApp()
|
2025-09-02 12:48:46 +02:00
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
var showConquest = true
|
2025-09-02 12:48:46 +02:00
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
let io = igGetIO()
|
2025-09-02 12:48:46 +02:00
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
# main loop
|
|
|
|
|
while not app.handle.windowShouldClose:
|
|
|
|
|
pollEvents()
|
|
|
|
|
|
|
|
|
|
if app.isIconifySleep():
|
|
|
|
|
continue
|
|
|
|
|
newFrame()
|
|
|
|
|
|
|
|
|
|
# Create fullscreen dockspace as the base where all other windows are placed in
|
|
|
|
|
block:
|
|
|
|
|
var
|
|
|
|
|
windowClass = ImGuiWindowClass_ImGuiWindowClass()
|
|
|
|
|
dockspaceFlags: ImGuiDockNodeFlags = ImGuiDockNodeFlags_None.int32
|
|
|
|
|
windowFlags: ImGuiWindow_Flags = ImGuiWindowFlags_MenuBar.int32 or ImGuiWindowFlags_NoDocking.int32
|
|
|
|
|
|
2025-09-02 12:48:46 +02:00
|
|
|
var vp = igGetMainViewport()
|
|
|
|
|
igSetNextWindowPos(vp.WorkPos, ImGui_Cond_None.int32, vec2(0.0f, 0.0f))
|
|
|
|
|
igSetNextWindowSize(vp.WorkSize, 0)
|
|
|
|
|
igSetNextWindowViewport(vp.ID)
|
|
|
|
|
igPushStyleVar_Float(ImGuiStyleVar_WindowRounding.int32, 0.0f)
|
|
|
|
|
igPushStyleVar_Float(ImGuiStyleVar_WindowBorderSize.int32, 0.0f)
|
2025-09-05 10:49:27 +02:00
|
|
|
windowFlags = windowFlags or (
|
|
|
|
|
ImGuiWindowFlags_NoTitleBar.int32 or
|
|
|
|
|
ImGuiWindowFlags_NoCollapse.int32 or
|
|
|
|
|
ImGuiWindowFlags_NoResize.int32 or
|
|
|
|
|
ImGuiWindowFlags_NoMove.int32 or
|
|
|
|
|
ImGuiWindowFlags_NoBringToFrontOnFocus.int32 or
|
|
|
|
|
ImGuiWindowFlags_NoNavFocus.int32
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# Add padding
|
2025-09-02 12:48:46 +02:00
|
|
|
igPushStyleVar_Vec2(ImGuiStyleVar_WindowPadding.int32, vec2(0.0f, 0.0f))
|
|
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
igBegin("Conquest", addr showConquest, windowFlags)
|
|
|
|
|
defer: igEnd()
|
2025-09-02 12:48:46 +02:00
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
igPopStyleVar(3)
|
2025-09-02 12:48:46 +02:00
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
# Create dockspace
|
2025-09-02 12:48:46 +02:00
|
|
|
igDockSpace(igGetID_Str("Conquest-Dockspace"), vec2(0.0f, 0.0f), dockspaceFlags, windowClass)
|
|
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
# Create Dockspace menu bar
|
|
|
|
|
if igBeginMenuBar():
|
|
|
|
|
if igBeginMenu("Options", true):
|
2025-09-02 12:48:46 +02:00
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
if igMenuItem("Exit", nil, false, (addr showConquest) != nil):
|
|
|
|
|
showConquest = false
|
|
|
|
|
igEndMenu()
|
|
|
|
|
igEndMenuBar()
|
2025-09-02 12:48:46 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
# Components and widgets
|
|
|
|
|
igShowDemoWindow(nil)
|
|
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
block:
|
|
|
|
|
igBegin("Info Window", nil, 0)
|
|
|
|
|
defer: igEnd()
|
2025-09-02 12:48:46 +02:00
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
igText(cstring(ICON_FA_USER_SHIELD & " " & getFrontendVersionString()))
|
2025-09-02 12:48:46 +02:00
|
|
|
|
|
|
|
|
# render
|
2025-09-05 10:49:27 +02:00
|
|
|
app.render()
|
2025-09-02 12:48:46 +02:00
|
|
|
|
2025-09-05 10:49:27 +02:00
|
|
|
if not showConquest:
|
|
|
|
|
app.handle.setWindowShouldClose(true)
|
2025-09-02 12:48:46 +02:00
|
|
|
|
|
|
|
|
when isMainModule:
|
2025-09-05 10:49:27 +02:00
|
|
|
main()
|