Files
conquest/src/client/main.nim

79 lines
2.5 KiB
Nim
Raw Normal View History

import ./utils/appImGui
2025-09-02 12:48:46 +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
var showConquest = true
2025-09-02 12:48:46 +02:00
let io = igGetIO()
2025-09-02 12:48:46 +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)
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))
igBegin("Conquest", addr showConquest, windowFlags)
defer: igEnd()
2025-09-02 12:48:46 +02:00
igPopStyleVar(3)
2025-09-02 12:48:46 +02:00
# Create dockspace
2025-09-02 12:48:46 +02:00
igDockSpace(igGetID_Str("Conquest-Dockspace"), vec2(0.0f, 0.0f), dockspaceFlags, windowClass)
# Create Dockspace menu bar
if igBeginMenuBar():
if igBeginMenu("Options", true):
2025-09-02 12:48:46 +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)
block:
igBegin("Info Window", nil, 0)
defer: igEnd()
2025-09-02 12:48:46 +02:00
igText(cstring(ICON_FA_USER_SHIELD & " " & getFrontendVersionString()))
2025-09-02 12:48:46 +02:00
# render
app.render()
2025-09-02 12:48:46 +02:00
if not showConquest:
app.handle.setWindowShouldClose(true)
2025-09-02 12:48:46 +02:00
when isMainModule:
main()