|  |  |  | @ -1,9 +1,6 @@ | 
		
	
		
			
				|  |  |  |  | #include "GLFW/glfw3.h" | 
		
	
		
			
				|  |  |  |  | #define CGLM_PRINT_PRECISION 10 | 
		
	
		
			
				|  |  |  |  | #define CGLM_DEFINE_PRINTS 1 | 
		
	
		
			
				|  |  |  |  | #include "cglm/cam.h" | 
		
	
		
			
				|  |  |  |  | #include "cglm/mat4.h" | 
		
	
		
			
				|  |  |  |  | #include "cglm/io.h" | 
		
	
		
			
				|  |  |  |  | #include "ui.h" | 
		
	
		
			
				|  |  |  |  | #include "gpu.h" | 
		
	
		
			
				|  |  |  |  | #include "draw.h" | 
		
	
	
		
			
				
					|  |  |  | @ -53,6 +50,35 @@ void* network_thread(void* data) { | 
		
	
		
			
				|  |  |  |  |   return NULL; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | VkResult add_hex_region(ClientContext* context) { | 
		
	
		
			
				|  |  |  |  |   VkResult result; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   HexRegion* region; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   VK_RESULT(allocate_hex_region(0, 0, 0, context->hex->data.current_map, ®ion, context->hex, context->render)); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   for(uint32_t hex = 0; hex < REGION_HEX_COUNT; hex++) { | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].color[0] = 0xFFFFFFFF; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].color[1] = 0xFFFFFFFF; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].color[2] = 0xFFFFFFFF; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].color[3] = 0xFFFFFFFF; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].color[4] = 0xFFFFFFFF; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].color[5] = 0xFFFFFFFF; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].color[6] = 0xFFFFFFFF; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].height[0] = 0; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].height[1] = 0; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].height[2] = 0; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].height[3] = 0; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].height[4] = 0; | 
		
	
		
			
				|  |  |  |  |     region->data.hexes[hex].height[5] = 0; | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   VK_RESULT(set_hex_region(region, context->hex, context->render)); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   return VK_SUCCESS; | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  | VkResult main_thread(ClientContext* context) { | 
		
	
		
			
				|  |  |  |  |   VkResult result; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | @ -87,37 +113,6 @@ VkResult main_thread(ClientContext* context) { | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   create_container(&container, context->render, context->ui); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   HexRegion* regions[MAX_LOADED_REGIONS]; | 
		
	
		
			
				|  |  |  |  |   uint32_t colors[] = { | 
		
	
		
			
				|  |  |  |  |     0xFF0000FF, | 
		
	
		
			
				|  |  |  |  |     0x00FF00FF, | 
		
	
		
			
				|  |  |  |  |     0x0000FFFF, | 
		
	
		
			
				|  |  |  |  |   }; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   context->hex->data.current_map = 0x01; | 
		
	
		
			
				|  |  |  |  |   VK_RESULT(add_transfers( | 
		
	
		
			
				|  |  |  |  |         &context->hex->data.current_map, | 
		
	
		
			
				|  |  |  |  |         context->hex->context, | 
		
	
		
			
				|  |  |  |  |         offsetof(GPUHexContext, current_map), | 
		
	
		
			
				|  |  |  |  |         sizeof(uint32_t), | 
		
	
		
			
				|  |  |  |  |         context->render)); | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   uint32_t region = 0; | 
		
	
		
			
				|  |  |  |  |   for(int32_t q = -5; q < 5; q++) { | 
		
	
		
			
				|  |  |  |  |     for(int32_t r = -5; r < 5; r++) { | 
		
	
		
			
				|  |  |  |  |       VK_RESULT(allocate_hex_region(q, r, 0, 0x01, ®ions[region], context->hex, context->render)); | 
		
	
		
			
				|  |  |  |  |       for(uint32_t i = 0; i < REGION_HEX_COUNT; i++) { | 
		
	
		
			
				|  |  |  |  |         for(uint32_t h = 0; h < 6; h++) { | 
		
	
		
			
				|  |  |  |  |           regions[region]->data.hexes[i].color[h] = colors[(q+r+50) % (sizeof(colors)/sizeof(uint32_t))]; | 
		
	
		
			
				|  |  |  |  |           regions[region]->data.hexes[i].height[h] = (float)i/REGION_HEX_COUNT;  | 
		
	
		
			
				|  |  |  |  |         } | 
		
	
		
			
				|  |  |  |  |         regions[region]->data.hexes[i].color[6] = colors[(q+r+50) % (sizeof(colors)/sizeof(uint32_t))]; | 
		
	
		
			
				|  |  |  |  |       } | 
		
	
		
			
				|  |  |  |  |       VK_RESULT(set_hex_region(regions[region], context->hex, context->render)); | 
		
	
		
			
				|  |  |  |  |       region++; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   //
 | 
		
	
		
			
				|  |  |  |  |   int frame = 0; | 
		
	
		
			
				|  |  |  |  |   double last_frame_time = 0; | 
		
	
	
		
			
				
					|  |  |  | @ -275,6 +270,12 @@ void key_callback(GLFWwindow* window, int key, int scancode, int action, int mod | 
		
	
		
			
				|  |  |  |  |       context->velocity[1] -= 1; | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     break; | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
		
			
				|  |  |  |  |   case GLFW_KEY_EQUAL: | 
		
	
		
			
				|  |  |  |  |     if(action == GLFW_RELEASE) { | 
		
	
		
			
				|  |  |  |  |       add_hex_region(context); | 
		
	
		
			
				|  |  |  |  |     } | 
		
	
		
			
				|  |  |  |  |     break; | 
		
	
		
			
				|  |  |  |  |   } | 
		
	
		
			
				|  |  |  |  | } | 
		
	
		
			
				|  |  |  |  | 
 | 
		
	
	
		
			
				
					|  |  |  | 
 |