network-simulator/gui/src/main.cpp

89 lines
2.1 KiB
C++
Raw Normal View History

2023-06-30 01:13:55 +02:00
#include <iostream>
2023-06-30 01:46:12 +02:00
#include <SDL.h>
2023-06-30 02:25:29 +02:00
#include "imgui.h"
#include "imgui_impl_sdl3.h"
#include "imgui_impl_sdlrenderer3.h"
2023-06-30 01:13:55 +02:00
#include "Netsim.hpp"
2023-06-30 20:19:26 +02:00
#include "NetworkRenderer.hpp"
2023-06-30 01:13:55 +02:00
int main(int argc, char** argv) {
2023-06-30 01:46:12 +02:00
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window;
SDL_Renderer* renderer;
SDL_CreateWindowAndRenderer(1000, 1000, NULL, &window, &renderer);
SDL_SetWindowTitle(window, "netsim");
2023-06-30 02:25:29 +02:00
IMGUI_CHECKVERSION();
ImGui::CreateContext();
ImGui_ImplSDL3_InitForSDLRenderer(window, renderer);
ImGui_ImplSDLRenderer3_Init(renderer);
ImGuiIO& io = ImGui::GetIO();
io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
2023-06-30 01:13:55 +02:00
2023-06-30 02:25:29 +02:00
ImGui::StyleColorsDark();
2023-06-30 01:13:55 +02:00
2023-06-30 02:25:29 +02:00
Network network("Testnet");
2023-06-30 20:19:26 +02:00
NetworkRenderer networkRenderer(network);
2023-06-30 01:13:55 +02:00
2023-06-30 01:46:12 +02:00
bool shouldClose = false;
SDL_Event event;
while (!shouldClose) {
while (SDL_PollEvent(&event)) {
2023-06-30 02:25:29 +02:00
ImGui_ImplSDL3_ProcessEvent(&event);
2023-06-30 01:46:12 +02:00
switch (event.type) {
case SDL_EVENT_WINDOW_CLOSE_REQUESTED:
case SDL_EVENT_QUIT:
shouldClose = true;
break;
}
}
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255);
SDL_RenderClear(renderer);
2023-06-30 20:19:26 +02:00
networkRenderer.Render(renderer);
2023-06-30 02:25:29 +02:00
ImGui_ImplSDL3_NewFrame();
ImGui_ImplSDLRenderer3_NewFrame();
ImGui::NewFrame();
if (ImGui::BeginMainMenuBar()) {
if (ImGui::BeginMenu("New...")) {
if (ImGui::MenuItem("Host")) {
2023-06-30 20:19:26 +02:00
auto device = Device::create("12:34:56:78:9A:BC");
network.addDevice(device);
networkRenderer.AddDevice(device, 400, 400);
2023-06-30 02:25:29 +02:00
};
ImGui::EndMenu();
}
ImGui::EndMainMenuBar();
}
ImGui::Render();
ImGui_ImplSDLRenderer3_RenderDrawData(ImGui::GetDrawData());
2023-06-30 01:46:12 +02:00
SDL_RenderPresent(renderer);
}
2023-06-30 02:25:29 +02:00
ImGui_ImplSDLRenderer3_Shutdown();
ImGui_ImplSDL3_Shutdown();
ImGui::DestroyContext();
2023-06-30 01:46:12 +02:00
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
2023-06-30 01:13:55 +02:00
return 0;
}