summaryrefslogtreecommitdiffhomepage
path: root/src/main.c
diff options
context:
space:
mode:
authorrealtradam <[email protected]>2023-06-13 17:53:27 -0400
committerrealtradam <[email protected]>2023-06-13 17:53:27 -0400
commitaa7d58cdc09fdf2a995c8b15f4e5b7881a7c9891 (patch)
treebfc5423d5e501f45a22f387054dbde718d80537e /src/main.c
parentea5a2225fbf9f1c305ec53f681c8aa9434cf1a10 (diff)
downloadrodeo_sample_game-aa7d58cdc09fdf2a995c8b15f4e5b7881a7c9891.tar.gz
rodeo_sample_game-aa7d58cdc09fdf2a995c8b15f4e5b7881a7c9891.zip
added letterboxing
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c262
1 files changed, 150 insertions, 112 deletions
diff --git a/src/main.c b/src/main.c
index 9a0a764..f4e40f8 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2,13 +2,12 @@
#include "rodeo.h"
#include <inttypes.h>
#include "input.h"
-#include "rodeo/collision.h"
cstr renderer;
float time_var;
-rodeo_audio_sound_t *scratch = NULL;
-rodeo_audio_music_t *music = NULL;
+rodeo_audio_sound_t scratch = {0};
+rodeo_audio_music_t music = {0};
typedef
struct
@@ -24,11 +23,16 @@ summon_t box2_position = { .x = 100, .y = 100 };
float orc_size[] = {13.0f * 2.0f, 19.0f * 2.0f};
-rodeo_texture_2d_t texture;
+rodeo_gfx_texture_2d_t texture;
rodeo_vector2_t units[UINT16_MAX][2] = {0};
uint16_t num_of_units = 0;
+const rodeo_color_RGBAFloat_t black_clear =
+{
+ .colors.red = 0.0f, .colors.green = 0.0f, .colors.blue = 0.0f,
+ .colors.alpha = 0.75f
+};
const rodeo_color_RGBAFloat_t red =
{
.colors.red = 1.0f, .colors.green = 0.0f, .colors.blue = 0.0f,
@@ -71,10 +75,10 @@ const rodeo_color_RGBAFloat_t pink_clear =
.colors.alpha = 0.5f
};
-rodeo_collision_2d_world_t world_orc;
-rodeo_collision_2d_world_t world_other;
-world_id orc_collision_id;
-world_id box_collision_ids[2] = { 0 };
+rodeo_collision_2d_collection_t world_orc;
+rodeo_collision_2d_collection_t world_other;
+rodeo_collision_2d_item_id_t orc_collision_id;
+rodeo_collision_2d_item_id_t box_collision_ids[2] = { 0 };
void
summon_units(void)
@@ -97,21 +101,29 @@ summon_units(void)
}
void collision_resolve(
- rodeo_collision_2d_world_item_t *a,
- rodeo_collision_2d_world_item_t *b
+ rodeo_collision_2d_item_data_t *a,
+ rodeo_collision_2d_item_data_t *b
) {
rodeo_log(
rodeo_logLevel_info,
"%d collided with %d",
- a->id.id, b->id.id
+ *a->id.self_handle, *b->id.self_handle
);
- rodeo_collision_2d_world_item_destroy(b);
+ for(int32_t i = 0; i < (int32_t)(sizeof box_collision_ids / sizeof *box_collision_ids); ++i)
+ {
+ if(box_collision_ids[i].self_handle == b->id.self_handle)
+ {
+ rodeo_collision_2d_item_destroy_by_id(b->id);
+ box_collision_ids[i] = (rodeo_collision_2d_item_id_t){0};
+ break;
+ }
+ }
}
void
main_loop(void)
{
- if(rodeo_frame_count_get() % 10 == 0)
+ if((uint32_t)rodeo_gfx_frame_time_get() % 10 == 0)
{
/* for testing
rodeo_input_scene_unregister_callback(
@@ -127,11 +139,19 @@ main_loop(void)
);
*/
- time_var = rodeo_frame_perSecond_get();
+ time_var = rodeo_gfx_frame_perSecond_get();
}
- mrodeo_frame_do()
+ rodeo_input_poll();
+ mrodeo_gfx_frame_do()
{
+ rodeo_gfx_rectangle_draw(
+ (rodeo_rectangle_t){
+ .width = rodeo_gfx_width_get(),
+ .height = rodeo_gfx_height_get()
+ },
+ blue_clear
+ );
bool reset_movement = true;
units_move_up_input(NULL, &reset_movement);
units_move_down_input(NULL, &reset_movement);
@@ -140,26 +160,26 @@ main_loop(void)
summon_position.x += *(float*)units_move_right_input(NULL, NULL) + *(float*)units_move_left_input(NULL, NULL);
summon_position.y += *(float*)units_move_down_input(NULL, NULL) + *(float*)units_move_up_input(NULL, NULL);
- rodeo_collision_2d_world_item_t* orc_collision_item = rodeo_collision_2d_world_item_get_by_id(orc_collision_id);
+ rodeo_collision_2d_item_t orc_collision_item = rodeo_collision_2d_item_get_by_id(orc_collision_id);
- orc_collision_item->x = summon_position.x;
- orc_collision_item->y = summon_position.y;
- orc_collision_item->dx = *(float*)units_move_right_input(NULL, NULL) + *(float*)units_move_left_input(NULL, NULL);
- orc_collision_item->dy = *(float*)units_move_down_input(NULL, NULL) + *(float*)units_move_up_input(NULL, NULL);
+ (*orc_collision_item.data_handle)->rect.x = summon_position.x;
+ (*orc_collision_item.data_handle)->rect.y = summon_position.y;
+ (*orc_collision_item.data_handle)->dx = *(float*)units_move_right_input(NULL, NULL) + *(float*)units_move_left_input(NULL, NULL);
+ (*orc_collision_item.data_handle)->dy = *(float*)units_move_down_input(NULL, NULL) + *(float*)units_move_up_input(NULL, NULL);
- rodeo_collision_2d_world_compare_self(&world_orc, collision_resolve);
+ rodeo_collision_2d_collection_compare_self(world_orc, collision_resolve);
if(*(bool*)play_sound_input(NULL, NULL))
{
- rodeo_audio_sound_play(scratch);
+ //rodeo_audio_sound_play(scratch);
}
if(*(bool*)play_sound_input2(NULL, NULL))
{
- rodeo_audio_music_play_fadeIn(music, 1000);
+ //rodeo_audio_music_play_fadeIn(music, 1000);
}
if(*(bool*)play_sound_input3(NULL, NULL))
{
- rodeo_audio_music_stop_fadeOut(1000);
+ //rodeo_audio_music_stop_fadeOut(1000);
}
if(*(bool*)summon_units_input(NULL, NULL))
@@ -167,49 +187,49 @@ main_loop(void)
summon_units();
}
- rodeo_rectangle_draw(
- &(rodeo_rectangle_t){ 100, 100, 50, 50 },
- &red
+ rodeo_gfx_rectangle_draw(
+ (rodeo_rectangle_t){ 100, 100, 50, 50 },
+ red
);
- rodeo_rectangle_draw(
- &(rodeo_rectangle_t){ 100, 160, 50, 50 },
- &green
+ rodeo_gfx_rectangle_draw(
+ (rodeo_rectangle_t){ 100, 160, 50, 50 },
+ green
);
- rodeo_rectangle_draw(
- &(rodeo_rectangle_t){ 160, 100, 50, 50 },
- &blue
+ rodeo_gfx_rectangle_draw(
+ (rodeo_rectangle_t){ 160, 100, 50, 50 },
+ blue
);
- rodeo_rectangle_draw(
- &(rodeo_rectangle_t){ 160, 160, 50, 50 },
- &pink
+ rodeo_gfx_rectangle_draw(
+ (rodeo_rectangle_t){ 160, 160, 50, 50 },
+ pink
);
- rodeo_rectangle_draw(
- &(rodeo_rectangle_t){ 300, 300, 50, 50 },
- &red_clear
+ rodeo_gfx_rectangle_draw(
+ (rodeo_rectangle_t){ 300, 300, 50, 50 },
+ red_clear
);
- rodeo_rectangle_draw(
- &(rodeo_rectangle_t){ 310, 310, 50, 50 },
- &green_clear
+ rodeo_gfx_rectangle_draw(
+ (rodeo_rectangle_t){ 310, 310, 50, 50 },
+ green_clear
);
- rodeo_rectangle_draw(
- &(rodeo_rectangle_t){ 320, 320, 50, 50 },
- &blue_clear
+ rodeo_gfx_rectangle_draw(
+ (rodeo_rectangle_t){ 320, 320, 50, 50 },
+ blue_clear
);
- rodeo_rectangle_draw(
- &(rodeo_rectangle_t){ 330, 330, 50, 50 },
- &pink_clear
+ rodeo_gfx_rectangle_draw(
+ (rodeo_rectangle_t){ 330, 330, 50, 50 },
+ pink_clear
);
for(uint64_t i = 0; i < (sizeof(box_collision_ids) / sizeof(box_collision_ids[0])); ++i)
{
- rodeo_collision_2d_world_item_t *box = rodeo_collision_2d_world_item_get_by_id(box_collision_ids[i]);
- if(box != NULL)
+ rodeo_collision_2d_item_t box = rodeo_collision_2d_item_get_by_id(box_collision_ids[i]);
+ if(box.data_handle != NULL)
{
- rodeo_rectangle_draw(
- &(rodeo_rectangle_t){ box->x, box->y, box->width, box->height },
- &pink
+ rodeo_gfx_rectangle_draw(
+ (*box.data_handle)->rect,
+ pink
);
}
}
@@ -218,51 +238,51 @@ main_loop(void)
{
units[i][0].position.x += units[i][1].position.x;
units[i][0].position.y += units[i][1].position.y;
- if(units[i][0].position.x > rodeo_screen_width_get() - orc_size[0] || units[i][0].position.x < 0)
+ if(units[i][0].position.x > rodeo_gfx_width_get() - orc_size[0] || units[i][0].position.x < 0)
{
units[i][1].position.x = -units[i][1].position.x;
}
- if(units[i][0].position.y > rodeo_screen_height_get() - orc_size[1] || units[i][0].position.y < 0)
+ if(units[i][0].position.y > rodeo_gfx_height_get() - orc_size[1] || units[i][0].position.y < 0)
{
units[i][1].position.y = -units[i][1].position.y;
}
- rodeo_texture_2d_draw(
- &(rodeo_rectangle_t){
+ rodeo_gfx_texture_2d_draw(
+ (rodeo_rectangle_t){
.x = units[i][0].position.x,
.y = units[i][0].position.y,
.width = orc_size[0],
.height = orc_size[1],
},
- &(rodeo_rectangle_t){
+ (rodeo_rectangle_t){
.x = 5,
.y = 5,
.width = 13,
.height = 19
},
- NULL,
- &texture
+ (rodeo_color_RGBAFloat_t){ .array = {1,1,1,1} },
+ texture
);
}
- rodeo_texture_2d_draw(
- &(rodeo_rectangle_t){
+ rodeo_gfx_texture_2d_draw(
+ (rodeo_rectangle_t){
.x = (float)(int32_t)summon_position.x - (orc_size[0] / 2.0f),
.y = (float)(int32_t)summon_position.y - (orc_size[1] / 2.0f) ,
.width = orc_size[0],
.height = orc_size[1],
},
- &(rodeo_rectangle_t){
+ (rodeo_rectangle_t){
.x = 5,
.y = 5,
.width = 13,
.height = 19
},
- //&(rodeo_color_RGBAFloat_t){ .array = {1.0,1.0,1.0,1.0} },
- NULL,
- &texture
+ (rodeo_color_RGBAFloat_t){ .array = {1.0,1.0,1.0,1.0} },
+ texture
);
+ /*
rodeo_debug_text_draw(
1,
1,
@@ -276,7 +296,7 @@ main_loop(void)
2,
2,
" frame count: %"PRIu64" ",
- rodeo_frame_count_get()
+ rodeo_gfx_frame_count_get()
);
rodeo_debug_text_draw(
@@ -292,6 +312,12 @@ main_loop(void)
" orc count: %"PRIu32" ",
num_of_units
);
+ */
+ 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);
}
}
@@ -314,53 +340,65 @@ main(void)
);
mrodeo_window_do(480, 640, cstr_lit("Rodeo Window"))
{
- renderer = rodeo_renderer_name_get();
- rodeo_frame_limit_set(60);
-
- //texture = rodeo_texture_2d_create_from_RGBA8(
- // 2,
- // 2,
- // texture_memory
- //);
-
- world_orc = rodeo_collision_2d_world_create();
- world_other = rodeo_collision_2d_world_create();
-
- rodeo_collision_2d_world_item_t orc_collision_params = {
- .x = summon_position.x,
- .y = summon_position.y,
- .width = orc_size[0],
- .height = orc_size[1]
- };
- orc_collision_id = rodeo_collision_2d_world_item_create(&world_orc, orc_collision_params)->id;
-
- rodeo_collision_2d_world_item_t test_collision_params = {
- .x = 320,
- .y = 240,
- .width = orc_size[0],
- .height = orc_size[1]
- };
- box_collision_ids[0] = rodeo_collision_2d_world_item_create(&world_orc, test_collision_params)->id;
- rodeo_collision_2d_world_item_t test2_collision_params = {
- .x = 0,
- .y = 240,
- .width = orc_size[0],
- .height = orc_size[1]
- };
- box_collision_ids[1] = rodeo_collision_2d_world_item_create(&world_orc, test2_collision_params)->id;
-
- texture = rodeo_texture_2d_create_from_path(cstr_lit("assets/orc.png"));
- scratch = rodeo_audio_sound_create_from_path(cstr_lit("assets/sample.wav"));
- music = rodeo_audio_music_create_from_path(cstr_lit("assets/music.ogg"));
-
- rodeo_mainLoop_run(
- main_loop
- );
+ mrodeo_audio_do(4)
+ {
+ mrodeo_gfx_do(480, 640)
+ {
+ renderer = rodeo_gfx_renderer_name_get();
+ rodeo_gfx_frame_limit_set(60);
+
+ //texture = rodeo_texture_2d_create_from_RGBA8(
+ // 2,
+ // 2,
+ // texture_memory
+ //);
+
+ world_orc = rodeo_collision_2d_collection_create(1);
+ world_other = rodeo_collision_2d_collection_create(2);
+
+ rodeo_collision_2d_item_data_t orc_collision_params = {
+ .rect = {
+ .x = summon_position.x,
+ .y = summon_position.y,
+ .width = orc_size[0],
+ .height = orc_size[1]
+ }
+ };
+ orc_collision_id = (*rodeo_collision_2d_item_create(world_orc, orc_collision_params).data_handle)->id;
+
+ rodeo_collision_2d_item_data_t test_collision_params = {
+ .rect = {
+ .x = 320,
+ .y = 240,
+ .width = orc_size[0],
+ .height = orc_size[1]
+ }
+ };
+ box_collision_ids[0] = (*rodeo_collision_2d_item_create(world_orc, test_collision_params).data_handle)->id;
+ rodeo_collision_2d_item_data_t test2_collision_params = {
+ .rect = {
+ .x = 0,
+ .y = 240,
+ .width = orc_size[0],
+ .height = orc_size[1]
+ }
+ };
+ box_collision_ids[1] = (*rodeo_collision_2d_item_create(world_orc, test2_collision_params).data_handle)->id;
+
+ texture = rodeo_gfx_texture_2d_create_from_path(cstr_lit("assets/orc.png"));
+ //scratch = rodeo_audio_sound_create_from_path(cstr_lit("assets/sample.wav"));
+ //music = rodeo_audio_music_create_from_path(cstr_lit("assets/music.ogg"));
+
+ rodeo_mainLoop_run(
+ main_loop
+ );
- rodeo_texture_2d_destroy(&texture);
- rodeo_collision_2d_world_destroy(&world_orc);
- rodeo_collision_2d_world_destroy(&world_other);
+ rodeo_gfx_texture_2d_destroy(texture);
+ rodeo_collision_2d_collection_destroy(world_orc);
+ rodeo_collision_2d_collection_destroy(world_other);
+ }
+ }
}
unregister_inputs();