|
|
@ -96,8 +96,136 @@ uint32_t add_hex_region(ClientContext* context) {
|
|
|
|
return i;
|
|
|
|
return i;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
VkResult hex_info_ui(ClientContext* context) {
|
|
|
|
VkResult color_ui(ClientContext* context) {
|
|
|
|
|
|
|
|
GPUString strings[] = {
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {-2, 168},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.size = 32,
|
|
|
|
|
|
|
|
.offset = 0,
|
|
|
|
|
|
|
|
.length = 9,
|
|
|
|
|
|
|
|
.font = 0,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GPUDrawable drawables[] = {
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {0, 0},
|
|
|
|
|
|
|
|
.size = {178, 168},
|
|
|
|
|
|
|
|
.color = {0.4, 0.4, 0.4, 0.4},
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {2, 2},
|
|
|
|
|
|
|
|
.size = {130, 130},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x01,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {36, 136},
|
|
|
|
|
|
|
|
.size = {140, 30},
|
|
|
|
|
|
|
|
.color = {0, 0, 1, 0.4},
|
|
|
|
|
|
|
|
.id = 0x02,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {134, 2},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x03,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {156, 2},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x04,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {134, 24},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x05,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {156, 24},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x06,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {134, 46},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x07,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {156, 46},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x08,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {134, 68},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x09,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {156, 68},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x0A,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {134, 90},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x0B,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {156, 90},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x0C,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {134, 112},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x0D,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {156, 112},
|
|
|
|
|
|
|
|
.size = {20, 20},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.id = 0x0E,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
uint32_t codes[9];
|
|
|
|
|
|
|
|
VkResult result;
|
|
|
|
|
|
|
|
VK_RESULT(map_string("#FFFFFFFF", codes, 0, 0, context->ui));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
LayerInput layer = {
|
|
|
|
|
|
|
|
.strings = strings,
|
|
|
|
|
|
|
|
.num_strings = sizeof(strings)/sizeof(GPUString),
|
|
|
|
|
|
|
|
.codes = codes,
|
|
|
|
|
|
|
|
.num_codes = sizeof(codes)/sizeof(uint32_t),
|
|
|
|
|
|
|
|
.drawables = drawables,
|
|
|
|
|
|
|
|
.num_drawables = sizeof(drawables)/sizeof(GPUDrawable),
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ContainerInput container = {
|
|
|
|
|
|
|
|
.layers = &layer,
|
|
|
|
|
|
|
|
.layer_count = 1,
|
|
|
|
|
|
|
|
.anchor = ANCHOR_BOTTOM_LEFT,
|
|
|
|
|
|
|
|
.id = 0x03,
|
|
|
|
|
|
|
|
.offset = {0, 0},
|
|
|
|
|
|
|
|
.size = {178, 168},
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return create_container(&container, context->render, context->ui);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
VkResult hex_info_ui(ClientContext* context) {
|
|
|
|
GPUString strings[] = {
|
|
|
|
GPUString strings[] = {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
.pos = {0, 33},
|
|
|
|
.pos = {0, 33},
|
|
|
@ -108,7 +236,7 @@ VkResult hex_info_ui(ClientContext* context) {
|
|
|
|
.font = 0,
|
|
|
|
.font = 0,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
.pos = {0, 73},
|
|
|
|
.pos = {2, 50},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.size = 16,
|
|
|
|
.size = 16,
|
|
|
|
.offset = 20,
|
|
|
|
.offset = 20,
|
|
|
@ -116,7 +244,7 @@ VkResult hex_info_ui(ClientContext* context) {
|
|
|
|
.font = 0,
|
|
|
|
.font = 0,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
.pos = {0, 93},
|
|
|
|
.pos = {2, 73},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.size = 16,
|
|
|
|
.size = 16,
|
|
|
|
.offset = 40,
|
|
|
|
.offset = 40,
|
|
|
@ -124,7 +252,7 @@ VkResult hex_info_ui(ClientContext* context) {
|
|
|
|
.font = 0,
|
|
|
|
.font = 0,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
.pos = {0, 113},
|
|
|
|
.pos = {2, 93},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.size = 16,
|
|
|
|
.size = 16,
|
|
|
|
.offset = 60,
|
|
|
|
.offset = 60,
|
|
|
@ -132,15 +260,15 @@ VkResult hex_info_ui(ClientContext* context) {
|
|
|
|
.font = 0,
|
|
|
|
.font = 0,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
.pos = {0, 133},
|
|
|
|
.pos = {2, 113},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.size = 16,
|
|
|
|
.size = 16,
|
|
|
|
.offset = 80,
|
|
|
|
.offset = 80,
|
|
|
|
.length = 0,
|
|
|
|
.length = 0,
|
|
|
|
.font = 0,
|
|
|
|
.font = 0,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
.pos = {0, 153},
|
|
|
|
.pos = {2, 133},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.size = 16,
|
|
|
|
.size = 16,
|
|
|
|
.offset = 100,
|
|
|
|
.offset = 100,
|
|
|
@ -148,20 +276,28 @@ VkResult hex_info_ui(ClientContext* context) {
|
|
|
|
.font = 0,
|
|
|
|
.font = 0,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
{
|
|
|
|
{
|
|
|
|
.pos = {0, 173},
|
|
|
|
.pos = {2, 153},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
.size = 16,
|
|
|
|
.size = 16,
|
|
|
|
.offset = 120,
|
|
|
|
.offset = 120,
|
|
|
|
.length = 0,
|
|
|
|
.length = 0,
|
|
|
|
.font = 0,
|
|
|
|
.font = 0,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
|
|
|
|
{
|
|
|
|
|
|
|
|
.pos = {2, 173},
|
|
|
|
|
|
|
|
.color = {1, 1, 1, 1},
|
|
|
|
|
|
|
|
.size = 16,
|
|
|
|
|
|
|
|
.offset = 140,
|
|
|
|
|
|
|
|
.length = 0,
|
|
|
|
|
|
|
|
.font = 0,
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
GPUDrawable drawables[] = {
|
|
|
|
GPUDrawable drawables[] = {
|
|
|
|
{
|
|
|
|
{
|
|
|
|
.pos = {0, 0},
|
|
|
|
.pos = {0, 0},
|
|
|
|
.size = {225, 200},
|
|
|
|
.size = {150, 175},
|
|
|
|
.color = {0.4, 0.4, 0.4, 0.4},
|
|
|
|
.color = {0.4, 0.4, 0.4, 0.4},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
};
|
|
|
|
};
|
|
|
@ -176,8 +312,8 @@ VkResult hex_info_ui(ClientContext* context) {
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
ContainerInput container = {
|
|
|
|
ContainerInput container = {
|
|
|
|
.id = 0x01,
|
|
|
|
.id = 0x02,
|
|
|
|
.size = {225, 200},
|
|
|
|
.size = {150, 175},
|
|
|
|
.offset = {0, 0},
|
|
|
|
.offset = {0, 0},
|
|
|
|
.anchor = ANCHOR_BOTTOM_RIGHT,
|
|
|
|
.anchor = ANCHOR_BOTTOM_RIGHT,
|
|
|
|
.layers = &layer,
|
|
|
|
.layers = &layer,
|
|
|
@ -309,15 +445,14 @@ VkResult update_hex_info_ui(ClientContext* context) {
|
|
|
|
VkResult result;
|
|
|
|
VkResult result;
|
|
|
|
HexRegion* region = context->hex->regions[context->hex->data.clicked_region];
|
|
|
|
HexRegion* region = context->hex->regions[context->hex->data.clicked_region];
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(temp,
|
|
|
|
|
|
|
|
sizeof(temp),
|
|
|
|
|
|
|
|
"Hex %d-%d.%d",
|
|
|
|
|
|
|
|
context->hex->data.clicked_region,
|
|
|
|
|
|
|
|
context->hex->data.clicked_hex,
|
|
|
|
|
|
|
|
context->hex->data.clicked_vertex);
|
|
|
|
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 0, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(region == NULL) {
|
|
|
|
if(region == NULL) {
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
|
|
|
|
temp,
|
|
|
|
|
|
|
|
sizeof(temp),
|
|
|
|
|
|
|
|
"");
|
|
|
|
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 0, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
snprintf(
|
|
|
|
temp,
|
|
|
|
temp,
|
|
|
|
sizeof(temp),
|
|
|
|
sizeof(temp),
|
|
|
@ -353,49 +488,89 @@ VkResult update_hex_info_ui(ClientContext* context) {
|
|
|
|
sizeof(temp),
|
|
|
|
sizeof(temp),
|
|
|
|
"");
|
|
|
|
"");
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 6, context->ui, context->render));
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 6, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
|
|
|
|
temp,
|
|
|
|
|
|
|
|
sizeof(temp),
|
|
|
|
|
|
|
|
"");
|
|
|
|
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 7, context->ui, context->render));
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
GPUHex* hex = ®ion->data.hexes[context->hex->data.clicked_hex];
|
|
|
|
GPUHex* hex = ®ion->data.hexes[context->hex->data.clicked_hex];
|
|
|
|
|
|
|
|
snprintf(temp,
|
|
|
|
|
|
|
|
sizeof(temp),
|
|
|
|
|
|
|
|
"%d-%d",
|
|
|
|
|
|
|
|
context->hex->data.clicked_region,
|
|
|
|
|
|
|
|
context->hex->data.clicked_hex);
|
|
|
|
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 0, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int32_t hex_index = context->hex->data.clicked_hex;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
float radius = 0;
|
|
|
|
|
|
|
|
float ring = 0;
|
|
|
|
|
|
|
|
int side = 0;
|
|
|
|
|
|
|
|
if(hex_index != 0) {
|
|
|
|
|
|
|
|
radius = floor(0.5 + sqrt(12*hex_index-3)/6);
|
|
|
|
|
|
|
|
ring = hex_index - (3*radius*radius - 3*radius + 1);
|
|
|
|
|
|
|
|
side = floor(ring/radius);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int32_t hex_q = hex_starts_qr[side][0]*radius + hex_directions_qr[side][0]*(ring-(radius*side));
|
|
|
|
|
|
|
|
int32_t hex_r = hex_starts_qr[side][1]*radius + hex_directions_qr[side][1]*(ring-(radius*side));
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
int32_t world_q = hex_q + region->data.q*(REGION_SIZE*2 + 1) + region->data.r*REGION_SIZE;
|
|
|
|
|
|
|
|
int32_t world_r = hex_r + region->data.q*(REGION_SIZE + 0.5) + region->data.r*(REGION_SIZE*2+1);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
|
|
|
|
temp,
|
|
|
|
|
|
|
|
sizeof(temp),
|
|
|
|
|
|
|
|
"%d, %d, %d, %d",
|
|
|
|
|
|
|
|
world_q,
|
|
|
|
|
|
|
|
world_r,
|
|
|
|
|
|
|
|
region->data.y,
|
|
|
|
|
|
|
|
context->hex->data.clicked_vertex);
|
|
|
|
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 1, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
snprintf(
|
|
|
|
temp,
|
|
|
|
temp,
|
|
|
|
sizeof(temp),
|
|
|
|
sizeof(temp),
|
|
|
|
"%02.02f %02.02f %02.02f",
|
|
|
|
"%02.02f %02.02f %02.02f",
|
|
|
|
hex->height[0], hex->height[1], hex->height[2]);
|
|
|
|
hex->height[0], hex->height[1], hex->height[2]);
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 1, context->ui, context->render));
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 2, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
snprintf(
|
|
|
|
temp,
|
|
|
|
temp,
|
|
|
|
sizeof(temp),
|
|
|
|
sizeof(temp),
|
|
|
|
"%02.02f %02.02f %02.02f",
|
|
|
|
"%02.02f %02.02f %02.02f",
|
|
|
|
hex->height[3], hex->height[4], hex->height[5]);
|
|
|
|
hex->height[3], hex->height[4], hex->height[5]);
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 2, context->ui, context->render));
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 3, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
snprintf(
|
|
|
|
temp,
|
|
|
|
temp,
|
|
|
|
sizeof(temp),
|
|
|
|
sizeof(temp),
|
|
|
|
"%08X",
|
|
|
|
"%08X",
|
|
|
|
hex->color[0]);
|
|
|
|
hex->color[0]);
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 3, context->ui, context->render));
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 4, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
snprintf(
|
|
|
|
temp,
|
|
|
|
temp,
|
|
|
|
sizeof(temp),
|
|
|
|
sizeof(temp),
|
|
|
|
"%08X %08X",
|
|
|
|
"%08X %08X",
|
|
|
|
hex->color[1], hex->color[2]);
|
|
|
|
hex->color[1], hex->color[2]);
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 4, context->ui, context->render));
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 5, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
snprintf(
|
|
|
|
temp,
|
|
|
|
temp,
|
|
|
|
sizeof(temp),
|
|
|
|
sizeof(temp),
|
|
|
|
"%08X %08X",
|
|
|
|
"%08X %08X",
|
|
|
|
hex->color[3], hex->color[4]);
|
|
|
|
hex->color[3], hex->color[4]);
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 5, context->ui, context->render));
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 6, context->ui, context->render));
|
|
|
|
|
|
|
|
|
|
|
|
snprintf(
|
|
|
|
snprintf(
|
|
|
|
temp,
|
|
|
|
temp,
|
|
|
|
sizeof(temp),
|
|
|
|
sizeof(temp),
|
|
|
|
"%08X %08X",
|
|
|
|
"%08X %08X",
|
|
|
|
hex->color[5], hex->color[6]);
|
|
|
|
hex->color[5], hex->color[6]);
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 6, context->ui, context->render));
|
|
|
|
VK_RESULT(update_ui_string(temp, 1, 0, 7, context->ui, context->render));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
return VK_SUCCESS;
|
|
|
|
return VK_SUCCESS;
|
|
|
@ -406,6 +581,7 @@ VkResult main_thread(ClientContext* context) {
|
|
|
|
|
|
|
|
|
|
|
|
VK_RESULT(region_info_ui(context));
|
|
|
|
VK_RESULT(region_info_ui(context));
|
|
|
|
VK_RESULT(hex_info_ui(context));
|
|
|
|
VK_RESULT(hex_info_ui(context));
|
|
|
|
|
|
|
|
VK_RESULT(color_ui(context));
|
|
|
|
|
|
|
|
|
|
|
|
//
|
|
|
|
//
|
|
|
|
double last_frame_time = 0;
|
|
|
|
double last_frame_time = 0;
|
|
|
|