summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-06-17 02:44:51 -0400
committerrealtradam <[email protected]>2023-06-17 02:44:51 -0400
commitc42aa675696463f7cd30b331af9d32ae7afcbd56 (patch)
tree6450a42cd095767cc1130670595bebaada5fe2df
parentaca04016f134829a2f3b6745c26318f3d947dc6d (diff)
downloadrodeo_sample_game-c42aa675696463f7cd30b331af9d32ae7afcbd56.tar.gz
rodeo_sample_game-c42aa675696463f7cd30b331af9d32ae7afcbd56.zip
wip rotation
m---------external/RodeoKit0
-rw-r--r--src/input.c49
-rw-r--r--src/input.h14
-rw-r--r--src/main.c127
4 files changed, 156 insertions, 34 deletions
diff --git a/external/RodeoKit b/external/RodeoKit
-Subproject 4cb44499b27cd8fe4955a16a9af46cf97ecf06e
+Subproject 2b4fef04217ba2b0ab5eb71cc23d518340cd979
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);
diff --git a/src/main.c b/src/main.c
index 2d1c722..831a6f1 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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);
}
}