diff options
| author | realtradam <[email protected]> | 2023-06-17 02:44:51 -0400 |
|---|---|---|
| committer | realtradam <[email protected]> | 2023-06-17 02:44:51 -0400 |
| commit | c42aa675696463f7cd30b331af9d32ae7afcbd56 (patch) | |
| tree | 6450a42cd095767cc1130670595bebaada5fe2df /src | |
| parent | aca04016f134829a2f3b6745c26318f3d947dc6d (diff) | |
| download | rodeo_sample_game-c42aa675696463f7cd30b331af9d32ae7afcbd56.tar.gz rodeo_sample_game-c42aa675696463f7cd30b331af9d32ae7afcbd56.zip | |
wip rotation
Diffstat (limited to 'src')
| -rw-r--r-- | src/input.c | 49 | ||||
| -rw-r--r-- | src/input.h | 14 | ||||
| -rw-r--r-- | src/main.c | 127 |
3 files changed, 156 insertions, 34 deletions
diff --git a/src/input.c b/src/input.c index 420648c..45cce8e 100644 --- a/src/input.c +++ b/src/input.c @@ -237,6 +237,39 @@ play_sound_input3(rodeo_input_any_state_t *input_state, void *data) return &down; } + +void* +mouse_x_input( + rodeo_input_any_state_t *input_state, + void *data +) +{ + static int64_t pos = 0; + + if(NULL != input_state) + { + pos = input_state->data.positional_state; + } + + return &pos; +} + +void* +mouse_y_input( + rodeo_input_any_state_t *input_state, + void *data +) +{ + static int64_t pos = 0; + + if(NULL != input_state) + { + pos = input_state->data.positional_state; + } + + return &pos; +} + #ifdef __clang__ #pragma clang diagnostic pop #endif @@ -266,6 +299,13 @@ register_inputs(void) rodeo_input_type_Binary | rodeo_input_type_UnboundedRange | rodeo_input_type_BoundedRange ); + inputs.mouse_x = rodeo_input_command_create( + rodeo_input_type_Positional + ); + inputs.mouse_y = rodeo_input_command_create( + rodeo_input_type_Positional + ); + inputs.play_sound = rodeo_input_command_create( rodeo_input_type_Binary ); @@ -295,6 +335,9 @@ register_inputs(void) rodeo_input_command_register_boundedRange_controllerAxis(inputs.left, rodeo_input_boundedRange_controllerAxisLeft_X); rodeo_input_command_register_boundedRange_controllerAxis(inputs.right, rodeo_input_boundedRange_controllerAxisLeft_X); + rodeo_input_command_register_positional_mouse(inputs.mouse_x, rodeo_input_positional_mouse_X); + rodeo_input_command_register_positional_mouse(inputs.mouse_y, rodeo_input_positional_mouse_Y); + rodeo_input_command_register_binary_scancode(inputs.play_sound, rodeo_input_binary_scancode_M); rodeo_input_command_register_binary_scancode(inputs.play_sound2, rodeo_input_binary_scancode_N); rodeo_input_command_register_binary_scancode(inputs.play_sound3, rodeo_input_binary_scancode_B); @@ -307,6 +350,9 @@ register_inputs(void) rodeo_input_command_register_callback(inputs.left, *units_move_left_input); rodeo_input_command_register_callback(inputs.right, *units_move_right_input); + rodeo_input_command_register_callback(inputs.mouse_x, *mouse_x_input); + rodeo_input_command_register_callback(inputs.mouse_y, *mouse_y_input); + rodeo_input_command_register_callback(inputs.play_sound, *play_sound_input); rodeo_input_command_register_callback(inputs.play_sound2, *play_sound_input2); rodeo_input_command_register_callback(inputs.play_sound3, *play_sound_input3); @@ -319,6 +365,9 @@ register_inputs(void) rodeo_input_scene_register_command(inputs.scene, inputs.left); rodeo_input_scene_register_command(inputs.scene, inputs.right); + rodeo_input_scene_register_command(inputs.scene, inputs.mouse_x); + rodeo_input_scene_register_command(inputs.scene, inputs.mouse_y); + rodeo_input_scene_register_command(inputs.scene, inputs.play_sound); rodeo_input_scene_register_command(inputs.scene, inputs.play_sound2); rodeo_input_scene_register_command(inputs.scene, inputs.play_sound3); diff --git a/src/input.h b/src/input.h index c89d4cd..fae1d81 100644 --- a/src/input.h +++ b/src/input.h @@ -11,6 +11,8 @@ struct rodeo_input_command_t right; rodeo_input_command_t up; rodeo_input_command_t down; + rodeo_input_command_t mouse_x; + rodeo_input_command_t mouse_y; rodeo_input_command_t play_sound; rodeo_input_command_t play_sound2; rodeo_input_command_t play_sound3; @@ -73,6 +75,18 @@ play_sound_input3( void *data ); +void* +mouse_x_input( + rodeo_input_any_state_t *input_state, + void *data +); + +void* +mouse_y_input( + rodeo_input_any_state_t *input_state, + void *data +); + void register_inputs(void); @@ -150,6 +150,7 @@ main_loop(void) .width = rodeo_gfx_width_get(), .height = rodeo_gfx_height_get() }, + 0, blue_clear ); bool reset_movement = true; @@ -187,39 +188,76 @@ main_loop(void) summon_units(); } - rodeo_gfx_rectangle_draw( - (rodeo_rectangle_t){ 100, 100, 50, 50 }, - red + rodeo_log( + rodeo_logLevel_warning, + "%f, %f", + (float)*(int64_t*)mouse_x_input(NULL,NULL) - (150.0f / 2.0f), + (float)*(int64_t*)mouse_y_input(NULL,NULL) - (150.0f / 2.0f) ); - rodeo_gfx_rectangle_draw( - (rodeo_rectangle_t){ 100, 160, 50, 50 }, - green - ); - rodeo_gfx_rectangle_draw( - (rodeo_rectangle_t){ 160, 100, 50, 50 }, - blue - ); - rodeo_gfx_rectangle_draw( - (rodeo_rectangle_t){ 160, 160, 50, 50 }, - pink - ); - - rodeo_gfx_rectangle_draw( - (rodeo_rectangle_t){ 300, 300, 50, 50 }, - red_clear - ); - rodeo_gfx_rectangle_draw( - (rodeo_rectangle_t){ 310, 310, 50, 50 }, - green_clear - ); - rodeo_gfx_rectangle_draw( - (rodeo_rectangle_t){ 320, 320, 50, 50 }, - blue_clear - ); - rodeo_gfx_rectangle_draw( - (rodeo_rectangle_t){ 330, 330, 50, 50 }, - pink_clear - ); + + + rodeo_rectangle_t scissor = { + .x = (float)*(int64_t*)mouse_x_input(NULL,NULL) - (150.0f / 2.0f), + .y = (float)*(int64_t*)mouse_y_input(NULL,NULL) - (150.0f / 2.0f), + .width = 150, + .height = 150 + }; + + mrodeo_gfx_scissor_do(scissor) + { + rodeo_gfx_rectangle_draw( + (rodeo_rectangle_t){ 100, 100, 50, 50 }, + 0, + red + ); + rodeo_gfx_rectangle_draw( + (rodeo_rectangle_t){ 100, 160, 50, 50 }, + 0, + green + ); + rodeo_gfx_rectangle_draw( + (rodeo_rectangle_t){ 160, 100, 50, 50 }, + 0, + blue + ); + rodeo_gfx_rectangle_draw( + (rodeo_rectangle_t){ 160, 160, 50, 50 }, + 0, + pink + ); + + rodeo_gfx_rectangle_draw( + (rodeo_rectangle_t){ 300, 300, 50, 50 }, + 0, + red_clear + ); + rodeo_gfx_rectangle_draw( + (rodeo_rectangle_t){ 310, 310, 50, 50 }, + 0, + green_clear + ); + rodeo_gfx_rectangle_draw( + (rodeo_rectangle_t){ 320, 320, 50, 50 }, + 0, + blue_clear + ); + rodeo_gfx_rectangle_draw( + (rodeo_rectangle_t){ 330, 330, 50, 50 }, + 0, + pink_clear + ); + } + if(scissor.x < 0) + { + scissor.width += scissor.x; + scissor.x = 0; + } + if(scissor.y < 0) + { + scissor.height += scissor.y; + scissor.y = 0; + } + rodeo_gfx_rectangle_draw(scissor, 0, pink_clear); for(uint64_t i = 0; i < (sizeof(box_collision_ids) / sizeof(box_collision_ids[0])); ++i) @@ -229,6 +267,7 @@ main_loop(void) { rodeo_gfx_rectangle_draw( (*box.data_handle)->rect, + 0, pink ); } @@ -260,6 +299,7 @@ main_loop(void) .width = 13, .height = 19 }, + 0, (rodeo_color_RGBAFloat_t){ .array = {1,1,1,1} }, texture ); @@ -278,6 +318,25 @@ main_loop(void) .width = 13, .height = 19 }, + 0, + (rodeo_color_RGBAFloat_t){ .array = {1.0,1.0,1.0,1.0} }, + texture + ); + + rodeo_gfx_texture_2d_draw( + (rodeo_rectangle_t){ + .x = (float)*(int64_t*)mouse_x_input(NULL,NULL) - (orc_size[1] / 2.0f), + .y = (float)*(int64_t*)mouse_y_input(NULL,NULL) - (orc_size[1] / 2.0f), + .width = orc_size[0], + .height = orc_size[1], + }, + (rodeo_rectangle_t){ + .x = 5, + .y = 5, + .width = 13, + .height = 19 + }, + (float)rodeo_gfx_frame_count_get() / 60.0f, (rodeo_color_RGBAFloat_t){ .array = {1.0,1.0,1.0,1.0} }, texture ); @@ -316,8 +375,8 @@ main_loop(void) rodeo_rectangle_t letter_first = rodeo_gfx_letterbox_first_get(); rodeo_rectangle_t letter_second = rodeo_gfx_letterbox_second_get(); - rodeo_gfx_rectangle_draw(letter_first, black_clear); - rodeo_gfx_rectangle_draw(letter_second, black_clear); + rodeo_gfx_rectangle_draw(letter_first, 0, black_clear); + rodeo_gfx_rectangle_draw(letter_second, 0, black_clear); } } |
