#include <iostream>
#include <X11/Xlib.h>
#include <X11/extensions/XTest.h>
#include <chrono>
#include <thread>
#include <unordered_map>
#include <string>
#include <utility>

std::unordered_map<std::string, std::pair<int, int>> buttons = {
	{"start server", {1000, 1200}}
};

void click(std::string button) {
	Display* display = XOpenDisplay(nullptr);

	XWarpPointer(display, None, DefaultRootWindow(display), 0, 0, 0, 0, buttons[button].first, buttons[button].second);

        XTestFakeButtonEvent(display, 1, True, CurrentTime);
        XTestFakeButtonEvent(display, 1, False, CurrentTime);

        XFlush(display);
        XCloseDisplay(display);
}

int main() {
	system("cd /home/isaac/Isaac/Coding/game_server_project");
	system("tailscale funnel --bg 42069");
	system("./MultiplayerTestLinux.x86_64 &");

	std::cout << "waiting for game\n";
	std::this_thread::sleep_for(std::chrono::milliseconds(1000));

	std::cout << "going\n";
	click("start server");

	std::cout << "game server running on port 42069\n";
}
