#include "v4k.h"
#include "oscedit.h"

// game

struct player {
    char *name;
    int health;
    bool visible;
    float time;
};

void render_game(struct player *p) {
    printf("%*.s\rgame: %s health=%d time=%f visible=%d", 30, "", p->name, p->health, p->time, p->visible);
}

// demo
int main() {
    do_once map_init(client_vars, less_str, hash_str);
    do_once map_init(server_vars, less_str, hash_str);

    int client_socket = osc_open("127.0.0.1", OSC_EDIT_PORT);

    if( client_socket >= 0 ) {
        struct player P1 = { STRDUP("Player 1"), 100, true };

        while( GetAsyncKeyState(VK_ESCAPE) & 0x8000 ^ 0x8000 ) {
            P1.time = time_ss(); // << this is the "game", it just advances "time"

            osc_edit("/player/name", 's', &P1.name);
            osc_edit("/player/health", 'i', &P1.health);
            osc_edit("/player/time", 'f', &P1.time);
            osc_edit("/player/visible", 'b', &P1.visible);
            osc_edit_sync(-1, client_socket, 4);

            render_game(&P1);
        }
    }
}