7684b5018445237a5854c8cabaaa76969f0edad4
2 * =============================================================================
4 * Copyright . . . -----, ,----- ,---. .---.
5 * 2021-2023 |\ /| | / | | | | /|
6 * | \ / | +-- / +----- +---' | / |
7 * | \ / | | / | | \ | / |
8 * | \/ | | / | | \ | / |
9 * ' ' '--' [] '----- '----- ' ' '---' SOFTWARE
11 * =============================================================================
26 static int skaterift_loaded
= 0;
27 static GLuint tex_error
;
29 int main( int argc
, char *argv
[] )
31 vg_mem
.use_libc_malloc
= 0;
32 vg_set_mem_quota( 160*1024*1024 );
33 vg_enter( argc
, argv
, "Voyager Game Engine" );
37 VG_STATIC
void vg_launch_opt(void)
41 VG_STATIC
void vg_preload(void)
43 vg_info(" Copyright . . . -----, ,----- ,---. .---. \n" );
44 vg_info(" 2021-2023 |\\ /| | / | | | | /| \n" );
45 vg_info(" | \\ / | +-- / +----- +---' | / | \n" );
46 vg_info(" | \\ / | | / | | \\ | / | \n" );
47 vg_info(" | \\/ | | / | | \\ | / | \n" );
48 vg_info(" ' ' '--' [] '----- '----- ' ' '---' "
52 vg_loader_step( NULL
, steam_end
);
55 VG_STATIC
void skaterift_load_post( void *data
, u32 len
)
60 VG_STATIC
void vg_load(void)
62 vg_tex2d_replace_with_error( &tex_error
);
64 vg_async_call( skaterift_load_post
, NULL
, 0 );
67 VG_STATIC
void vg_update(void)
72 VG_STATIC
void vg_update_fixed(void)
76 VG_STATIC
void vg_update_post(void)
80 VG_STATIC
void vg_framebuffer_resize( int w
, int h
)
85 VG_STATIC
void vg_render(void)
87 glBindFramebuffer( GL_FRAMEBUFFER
, 0 );
89 glViewport( 0,0, vg
.window_x
, vg
.window_y
);
90 glDisable( GL_DEPTH_TEST
);
92 glClearColor( 0.0f
, 0.2f
, 0.7f
, 0.0f
);
93 glClear( GL_COLOR_BUFFER_BIT
|GL_DEPTH_BUFFER_BIT
);
97 glDisable(GL_DEPTH_TEST
);
101 struct workshop_form
{
103 char description
[512];
107 VG_STATIC
void vg_gui(void)
109 if( !skaterift_loaded
) return;
111 ui_rect screen
= { 0, 0, vg
.window_x
, vg
.window_y
};
113 ui_rect window
= { 0, 0, 1000, 800 };
114 ui_rect_center( screen
, window
);
116 ui_fill( window
, ui_colour( k_ui_bg
+1 ) );
117 ui_outline( window
, 1, ui_colour( k_ui_bg
+7 ) );
119 ui_rect title
, panel
;
120 ui_split_px( window
, k_ui_axis_h
, 28, 0, title
, panel
);
121 ui_fill( title
, ui_colour( k_ui_bg
+7 ) );
122 ui_text( title
, "Workshop tool", 1, k_ui_align_middle_center
,
123 ui_colourcont(k_ui_bg
+7) );
125 ui_rect sidebar
, content
;
126 ui_split_ratio( panel
, k_ui_axis_v
, 0.3f
, 1, sidebar
, content
);
129 ui_fill( sidebar
, ui_colour( k_ui_bg
+2 ) );
131 ui_split_px( sidebar
, k_ui_axis_h
, 28, 0, title
, sidebar
);
132 ui_text( title
, "Your submissions", 1, k_ui_align_middle_center
, 0 );
135 ui_split_px( sidebar
, k_ui_axis_h
, 28, 0, controls
, sidebar
);
136 ui_fill( controls
, ui_colour( k_ui_bg
+1 ) );
137 ui_outline( controls
, -1, ui_colour( k_ui_bg
+4 ) );
140 ui_split_ratio( controls
, k_ui_axis_v
, 0.25f
, 0, info
, controls
);
141 ui_text( info
, "page 0/2", 1, k_ui_align_middle_center
, 0 );
143 ui_rect btn_left
, btn_right
;
144 ui_split_ratio( controls
, k_ui_axis_v
, 0.5f
, 2, btn_left
, btn_right
);
146 if( ui_button_text( btn_left
, "prev", 1, k_ui_bg
+4 ) ){
150 if( ui_button_text( btn_right
, "next", 1, k_ui_bg
+4 ) ){
151 vg_info( "right\n" );
155 ui_rect_pad( content
, 8 );
158 ui_split_px( content
, k_ui_axis_h
, 300, 0, image_plane
, content
);
159 ui_fill( image_plane
, ui_colour( k_ui_bg
+0 ) );
162 ui_fit_item( image_plane
, (ui_px
[2]){ 3, 2 }, img_box
);
163 ui_image( img_box
, tex_error
);
165 ui_rect title_entry
, null
, label
;
166 ui_split_px( content
, k_ui_axis_h
, 8, 0, null
, content
);
167 ui_split_px( content
, k_ui_axis_h
, 28, 0, title_entry
, content
);
169 const char *str_title
= "Title:", *str_desc
= "Description:";
170 ui_split_px( title_entry
, k_ui_axis_v
,
171 ui_text_line_width(str_title
)+8, 0, label
, title_entry
);
173 ui_text( label
, str_title
, 1, k_ui_align_middle_left
, 0 );
174 ui_textbox( title_entry
, form_test
.title
,
175 vg_list_size(form_test
.title
), 0 );
177 /* description box */
179 ui_split_px( content
, k_ui_axis_h
, 8, 0, null
, content
);
180 ui_split_px( content
, k_ui_axis_h
, 28*4, 0, desc_entry
, content
);
181 ui_split_px( desc_entry
, k_ui_axis_v
,
182 ui_text_line_width(str_desc
)+8, 0, label
, desc_entry
);
183 ui_text( label
, str_desc
, 1, k_ui_align_middle_left
, 0 );
184 ui_textbox( desc_entry
, form_test
.description
,
185 vg_list_size(form_test
.description
),
186 UI_TEXTBOX_MULTILINE
|UI_TEXTBOX_WRAP
);