+static int gui_showtrick_ccmd( int argc, const char *argv[] ){
+ if( argc == 1 ){
+ enum guitrick_type type = k_guitrick_type_none;
+ if( !strcmp( argv[0], "pump" ) ) type = k_guitrick_type_pump;
+ else if( !strcmp( argv[0], "flip" ) ) type = k_guitrick_type_backflip;
+ else if( !strcmp( argv[0], "ollie" ) ) type = k_guitrick_type_ollie;
+ else if( !strcmp( argv[0], "trick" ) ) type = k_guitrick_type_trick;
+ else if( !strcmp( argv[0], "misc" ) ) type = k_guitrick_type_isc;
+ else return 1;
+ gui.trick_type = type;
+ v3_copy( localplayer.rb.co, gui.trick_co );
+ return 0;
+ }
+ return 1;
+}
+
+static void gui_draw_icon( enum gui_icon icon, v2f co, f32 size ){
+ if( gui.icon_draw_count == vg_list_size(gui.icon_draw_buffer) )
+ return;
+
+ struct icon_call *call = &gui.icon_draw_buffer[ gui.icon_draw_count ++ ];
+
+ call->icon = icon;
+ call->location[0] = co[0] * (f32)vg.window_x;
+ call->location[1] = co[1] * (f32)vg.window_y;
+ call->location[2] = 0.0f;
+ call->location[3] = size * (f32)vg.window_x;
+
+ v4_copy( gui.cur_icon_colour, call->colour );
+ call->colour_changed = gui.colour_changed;
+ gui.colour_changed = 0;
+}
+
+static void gui_icon_setcolour( v4f colour ){
+ gui.colour_changed = 1;
+ v4_copy( colour, gui.cur_icon_colour );
+}
+
+static mdl_submesh *gui_find_icon( const char *name ){
+ mdl_mesh *mesh = mdl_find_mesh( &gui.model_icons, name );
+ if( mesh ){
+ if( mesh->submesh_count ){
+ return mdl_arritm( &gui.model_icons.submeshs, mesh->submesh_start );
+ }
+ }
+
+ return NULL;
+}
+
+static void gui_init(void){