Compare commits

..

No commits in common. "bda335fd6a150b09d7df7bf4e5a6cd2fcca9a4bf" and "e1afdf696a3cd2c998a231e59ccf3a0ede36e804" have entirely different histories.

5 changed files with 38 additions and 74 deletions

View File

@ -38,8 +38,6 @@
#define GROUND_X_FRICTION 5.8 #define GROUND_X_FRICTION 5.8
#define GROUND_Y_FRICTION 1.0 #define GROUND_Y_FRICTION 1.0
#define ARROW_SPEED 350
#define MAX_WATER_LEVEL 4 #define MAX_WATER_LEVEL 4
#define WATER_BBOX_STEP (TILE_SIZE / MAX_WATER_LEVEL) #define WATER_BBOX_STEP (TILE_SIZE / MAX_WATER_LEVEL)

View File

@ -4,8 +4,6 @@
void remove_entity_from_tilemap(EntityManager_t *p_manager, TileGrid_t* tilemap, Entity_t* p_ent) void remove_entity_from_tilemap(EntityManager_t *p_manager, TileGrid_t* tilemap, Entity_t* p_ent)
{ {
CTileCoord_t* p_tilecoord = get_component(p_ent, CTILECOORD_COMP_T); CTileCoord_t* p_tilecoord = get_component(p_ent, CTILECOORD_COMP_T);
if (p_tilecoord != NULL)
{
for (size_t i = 0;i < p_tilecoord->n_tiles; ++i) for (size_t i = 0;i < p_tilecoord->n_tiles; ++i)
{ {
// Use previously store tile position // Use previously store tile position
@ -13,7 +11,6 @@ void remove_entity_from_tilemap(EntityManager_t *p_manager, TileGrid_t* tilemap,
unsigned int tile_idx = p_tilecoord->tiles[i]; unsigned int tile_idx = p_tilecoord->tiles[i];
sc_map_del_64v(&(tilemap->tiles[tile_idx].entities_set), p_ent->m_id); sc_map_del_64v(&(tilemap->tiles[tile_idx].entities_set), p_ent->m_id);
} }
}
remove_entity(p_manager, p_ent->m_id); remove_entity(p_manager, p_ent->m_id);
} }

View File

@ -1305,7 +1305,6 @@ void update_tilemap_system(Scene_t* scene)
sc_map_foreach(&scene->ent_manager.component_map[CTILECOORD_COMP_T], ent_idx, p_tilecoord) sc_map_foreach(&scene->ent_manager.component_map[CTILECOORD_COMP_T], ent_idx, p_tilecoord)
{ {
Entity_t* p_ent = get_entity(&scene->ent_manager, ent_idx); Entity_t* p_ent = get_entity(&scene->ent_manager, ent_idx);
if (!p_ent->m_alive) continue;
CTransform_t* p_ctransform = get_component(p_ent, CTRANSFORM_COMP_T); CTransform_t* p_ctransform = get_component(p_ent, CTRANSFORM_COMP_T);
if (p_ctransform == NULL) continue; if (p_ctransform == NULL) continue;
CBBox_t* p_bbox = get_component(p_ent, CBBOX_COMP_T); CBBox_t* p_bbox = get_component(p_ent, CBBOX_COMP_T);
@ -1331,8 +1330,6 @@ void update_tilemap_system(Scene_t* scene)
tile_x2 = (p_ctransform->position.x + p_bbox->size.x - 1) / TILE_SIZE; tile_x2 = (p_ctransform->position.x + p_bbox->size.x - 1) / TILE_SIZE;
tile_y2 = (p_ctransform->position.y + p_bbox->size.y - 1) / TILE_SIZE; tile_y2 = (p_ctransform->position.y + p_bbox->size.y - 1) / TILE_SIZE;
} }
tile_x2 = (tile_x2 >= tilemap.width) ? tilemap.width - 1 : tile_x2;
tile_y2 = (tile_y2 >= tilemap.height) ? tilemap.width - 1 : tile_y2;
for (unsigned int tile_y = tile_y1; tile_y <= tile_y2; tile_y++) for (unsigned int tile_y = tile_y1; tile_y <= tile_y2; tile_y++)
{ {
@ -1374,8 +1371,6 @@ void hitbox_update_system(Scene_t* scene)
unsigned int tile_y1 = (hitbox_pos.y) / TILE_SIZE; unsigned int tile_y1 = (hitbox_pos.y) / TILE_SIZE;
unsigned int tile_x2 = (hitbox_pos.x + p_hitbox->boxes[i].width - 1) / TILE_SIZE; unsigned int tile_x2 = (hitbox_pos.x + p_hitbox->boxes[i].width - 1) / TILE_SIZE;
unsigned int tile_y2 = (hitbox_pos.y + p_hitbox->boxes[i].height - 1) / TILE_SIZE; unsigned int tile_y2 = (hitbox_pos.y + p_hitbox->boxes[i].height - 1) / TILE_SIZE;
tile_x2 = (tile_x2 >= tilemap.width) ? tilemap.width - 1 : tile_x2;
tile_y2 = (tile_y2 >= tilemap.height) ? tilemap.width - 1 : tile_y2;
for (unsigned int tile_y = tile_y1; tile_y <= tile_y2; tile_y++) for (unsigned int tile_y = tile_y1; tile_y <= tile_y2; tile_y++)
{ {

View File

@ -2,29 +2,14 @@
#include "constants.h" #include "constants.h"
#include "raymath.h" #include "raymath.h"
static SpriteRenderInfo_t item_sprite_map[17] = {0}; static SpriteRenderInfo_t item_sprite_map[3] = {0};
bool init_item_creation(Assets_t* assets) bool init_item_creation(Assets_t* assets)
{ {
item_sprite_map[0].sprite = get_sprite(assets, "w_crate"); item_sprite_map[0].sprite = get_sprite(assets, "w_crate");
item_sprite_map[1].sprite = get_sprite(assets, "m_crate"); item_sprite_map[1].sprite = get_sprite(assets, "m_crate");
item_sprite_map[2].sprite = get_sprite(assets, "r_arrow"); item_sprite_map[2].sprite = get_sprite(assets, "arrow");
item_sprite_map[2].offset = (Vector2){-8, 4}; item_sprite_map[2].offset = (Vector2){-8, 4};
item_sprite_map[3].sprite = get_sprite(assets, "u_arrow");
item_sprite_map[4].sprite = get_sprite(assets, "l_arrow");
item_sprite_map[5].sprite = get_sprite(assets, "d_arrow");
item_sprite_map[6].sprite = get_sprite(assets, "bomb");
item_sprite_map[6].offset = (Vector2){0, -4};
item_sprite_map[7].sprite = get_sprite(assets, "w_ra_crate");
item_sprite_map[8].sprite = get_sprite(assets, "m_ra_crate");
item_sprite_map[9].sprite = get_sprite(assets, "w_ua_crate");
item_sprite_map[10].sprite = get_sprite(assets, "m_ua_crate");
item_sprite_map[11].sprite = get_sprite(assets, "w_la_crate");
item_sprite_map[12].sprite = get_sprite(assets, "m_la_crate");
item_sprite_map[13].sprite = get_sprite(assets, "w_da_crate");
item_sprite_map[14].sprite = get_sprite(assets, "m_da_crate");
item_sprite_map[15].sprite = get_sprite(assets, "w_b_crate");
item_sprite_map[16].sprite = get_sprite(assets, "m_b_crate");
return true; return true;
} }
@ -38,6 +23,13 @@ Entity_t* create_crate(EntityManager_t* ent_manager, Assets_t* assets, bool meta
p_bbox->solid = true; p_bbox->solid = true;
p_bbox->fragile = !metal; p_bbox->fragile = !metal;
if (item == CONTAINER_EMPTY)
{
CSprite_t* p_cspr = add_component(p_crate, CSPRITE_T);
p_cspr->sprites = item_sprite_map;
p_cspr->current_idx = metal? 1 : 0;
}
CTransform_t* p_ctransform = add_component(p_crate, CTRANSFORM_COMP_T); CTransform_t* p_ctransform = add_component(p_crate, CTRANSFORM_COMP_T);
p_ctransform->grav_delay = 7; p_ctransform->grav_delay = 7;
p_ctransform->shape_factor = metal ? (Vector2){0.7,0.7} : (Vector2){0.8,0.8} ; p_ctransform->shape_factor = metal ? (Vector2){0.7,0.7} : (Vector2){0.8,0.8} ;
@ -48,24 +40,11 @@ Entity_t* create_crate(EntityManager_t* ent_manager, Assets_t* assets, bool meta
p_hurtbox->def = metal ? 2 : 1; p_hurtbox->def = metal ? 2 : 1;
p_hurtbox->damage_src = -1; p_hurtbox->damage_src = -1;
CSprite_t* p_cspr = add_component(p_crate, CSPRITE_T);
p_cspr->sprites = item_sprite_map;
if (item != CONTAINER_EMPTY) if (item != CONTAINER_EMPTY)
{ {
CContainer_t* p_container = add_component(p_crate, CCONTAINER_T); CContainer_t* p_container = add_component(p_crate, CCONTAINER_T);
p_container->item = item; p_container->item = item;
} }
switch(item)
{
case CONTAINER_RIGHT_ARROW: p_cspr->current_idx = 7; break;
case CONTAINER_UP_ARROW: p_cspr->current_idx = 9; break;
case CONTAINER_LEFT_ARROW: p_cspr->current_idx = 11; break;
case CONTAINER_DOWN_ARROW: p_cspr->current_idx = 13; break;
case CONTAINER_BOMB: p_cspr->current_idx = 15; break;
default: p_cspr->current_idx = 0; break;
}
if (metal) p_cspr->current_idx++;
return p_crate; return p_crate;
} }
@ -116,22 +95,19 @@ Entity_t* create_arrow(EntityManager_t* ent_manager, Assets_t* assets, uint8_t d
{ {
case 0: case 0:
p_hitbox->boxes[0] = (Rectangle){10, TILE_SIZE / 2 - 5, 10, 5}; p_hitbox->boxes[0] = (Rectangle){10, TILE_SIZE / 2 - 5, 10, 5};
p_ctransform->velocity.x = -ARROW_SPEED; p_ctransform->velocity.x = -250;
p_cspr->current_idx += 2;
break; break;
case 2: case 2:
p_hitbox->boxes[0] = (Rectangle){TILE_SIZE / 2 - 5, 10, 5, 10}; p_hitbox->boxes[0] = (Rectangle){TILE_SIZE / 2 - 5, 10, 5, 10};
p_ctransform->velocity.y = -ARROW_SPEED; p_ctransform->velocity.y = -250;
p_cspr->current_idx += 1;
break; break;
case 3: case 3:
p_hitbox->boxes[0] = (Rectangle){TILE_SIZE / 2 - 5, 10, 5, 10}; p_hitbox->boxes[0] = (Rectangle){TILE_SIZE / 2 - 5, 10, 5, 10};
p_ctransform->velocity.y = ARROW_SPEED; p_ctransform->velocity.y = 250;
p_cspr->current_idx += 3;
break; break;
default: default:
p_hitbox->boxes[0] = (Rectangle){10, TILE_SIZE / 2 - 5, 10, 5}; p_hitbox->boxes[0] = (Rectangle){10, TILE_SIZE / 2 - 5, 10, 5};
p_ctransform->velocity.x = ARROW_SPEED; p_ctransform->velocity.x = 250;
break; break;
} }
@ -153,10 +129,6 @@ Entity_t* create_bomb(EntityManager_t* ent_manager, Assets_t* assets, Vector2 la
CContainer_t* p_container = add_component(p_bomb, CCONTAINER_T); CContainer_t* p_container = add_component(p_bomb, CCONTAINER_T);
p_container->item = CONTAINER_EXPLOSION; p_container->item = CONTAINER_EXPLOSION;
CSprite_t* p_cspr = add_component(p_bomb, CSPRITE_T);
p_cspr->sprites = item_sprite_map;
p_cspr->current_idx = 6;
CTransform_t* p_ctransform = add_component(p_bomb, CTRANSFORM_COMP_T); CTransform_t* p_ctransform = add_component(p_bomb, CTRANSFORM_COMP_T);
p_ctransform->active = true; p_ctransform->active = true;
p_ctransform->shape_factor = (Vector2){0.1, 0.1}; p_ctransform->shape_factor = (Vector2){0.1, 0.1};

View File

@ -16,21 +16,6 @@ static void menu_scene_render_func(Scene_t* scene)
EndDrawing(); EndDrawing();
} }
static void exec_component_function(Scene_t* scene, int sel)
{
switch(sel)
{
case 0:
change_scene(scene->engine, 1);
break;
case 1:
change_scene(scene->engine, 2);
break;
default:
break;
}
}
static void menu_do_action(Scene_t* scene, ActionType_t action, bool pressed) static void menu_do_action(Scene_t* scene, ActionType_t action, bool pressed)
{ {
MenuSceneData_t* data = &(CONTAINER_OF(scene, MenuScene_t, scene)->data); MenuSceneData_t* data = &(CONTAINER_OF(scene, MenuScene_t, scene)->data);
@ -68,7 +53,17 @@ static void menu_do_action(Scene_t* scene, ActionType_t action, bool pressed)
data->selected_comp = new_selection; data->selected_comp = new_selection;
if (action == ACTION_CONFIRM && scene->engine != NULL) if (action == ACTION_CONFIRM && scene->engine != NULL)
{ {
exec_component_function(scene, data->selected_comp); switch(data->selected_comp)
{
case 0:
change_scene(scene->engine, 1);
break;
case 1:
change_scene(scene->engine, 2);
break;
default:
break;
}
} }
} }
} }
@ -108,7 +103,14 @@ static void gui_loop(Scene_t* scene)
data->buttons[i].pressed = true; data->buttons[i].pressed = true;
if (scene->engine != NULL) if (scene->engine != NULL)
{ {
exec_component_function(scene, i); switch(i)
{
case 0:
change_scene(scene->engine, 1);
break;
default:
break;
}
} }
} }
data->selected_comp = i; data->selected_comp = i;
@ -147,7 +149,7 @@ void init_menu_scene(MenuScene_t* scene)
}; };
scene->data.max_comp = 4; scene->data.max_comp = 4;
scene->data.selected_comp = 0; scene->data.selected_comp = 0;
scene->data.mode = MOUSE_MODE; scene->data.mode = KEYBOARD_MODE;
sc_map_put_64(&scene->scene.action_map, KEY_UP, ACTION_UP); sc_map_put_64(&scene->scene.action_map, KEY_UP, ACTION_UP);
sc_map_put_64(&scene->scene.action_map, KEY_DOWN, ACTION_DOWN); sc_map_put_64(&scene->scene.action_map, KEY_DOWN, ACTION_DOWN);