adding bools into player components to enable items in inventory

This commit is contained in:
Clément Le Bihan
2020-04-29 00:32:22 +02:00
parent 0818f3abc4
commit 5d4501902c
10 changed files with 50 additions and 32 deletions
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

+1
View File
@@ -15,6 +15,7 @@ struct player_component
{
gc_component base;
int fight_rate;
bool inventory_upgrades[4];
};
extern const struct player_component player_component;
+1 -1
View File
@@ -11,7 +11,7 @@
#include "engine.h"
#include <stdbool.h>
void display_inventory_object(gc_scene *scene, struct renderer *rend, int nb);
void display_inv_slot(gc_scene *scene, struct renderer *rend, int nb);
bool toggle_inventory(gc_engine *engine);
#endif //MY_RPG_INVENTORY_H
+7 -1
View File
@@ -5,11 +5,17 @@
<sprite name="button_background" src="assets/ui/button_background.png" />
<sprite name="player_holder" src="assets/ui/player.png" />
<sprite name="enemy_holder" src="assets/ui/enemy.png" />
<sprite name="panel" src="assets/ui/panel.png" />
<sprite name="panel" src="assets/ui/sample_background.png" />
<sprite name="main_ui_game" src="assets/ui/health_and_xp.png" />
<sprite name="player" src="assets/sprites/player_spritesheet.png" />
<sprite name="fight_background" src="assets/ui/fight_background.png" />
<sprite name="empty_slot" src="assets/sprites/inventory/empty_48x48.png" />
<sprite name="slot_1" src="assets/sprites/inventory/fireball_upgrade.png" />
<sprite name="slot_2" src="assets/sprites/inventory/water_jet_upgrade.png" />
<sprite name="slot_3" src="assets/sprites/inventory/uppercut_upgrade.png" />
<sprite name="slot_4" src="assets/sprites/inventory/shield_upgrade.png" />
<sprite name="bee" src="assets/sprites/bee.png" />
</data>
<gc_entities>
+1 -1
View File
@@ -121,7 +121,7 @@
<sprite name="item_rock_2" src="assets/sprites/items/generic-rpg-rock05.png" />
<sprite name="empty_slot" src="assets/sprites/inventory/empty.png" />
<sprite name="empty_slot" src="assets/sprites/inventory/empty_48x48.png" />
<sprite name="slot_1" src="assets/sprites/inventory/fireball_upgrade.png" />
<sprite name="slot_2" src="assets/sprites/inventory/water_jet_upgrade.png" />
<sprite name="slot_3" src="assets/sprites/inventory/uppercut_upgrade.png" />
+4 -4
View File
@@ -2,16 +2,16 @@
<panel src="panel" x="50%" y="50%" width="40%" height="60%" tag="inventory" />
<text text="Inventory" x="50%" y="30%" tag="inventory" />
<button text="Go back" x="50%" y="71%" click="toggle_inventory" color="black" width="200" resize="false" tag="inventory" />
<button sprite="texture" x="40%" y="40%" width="%" height="10%" tooltip="Fireball upgrade" tooltip_y="-7" size="15" tag="inventory">
<button sprite="slot_1" x="40%" y="40%" width="%" height="10%" tooltip="Fireball upgrade" tooltip_y="-7" size="15" tag="inventory">
<game_display stats="inventory_1" />
</button>
<button sprite="texture" x="60%" y="40%" width="%" height="10%" tooltip="Water Jet upgrade" tooltip_y="-7" size="15" tag="inventory">
<button sprite="slot_2" x="60%" y="40%" width="%" height="10%" tooltip="Water Jet upgrade" tooltip_y="-7" size="15" tag="inventory">
<game_display stats="inventory_2" />
</button>
<button sprite="texture" x="40%" y="60%" width="%" height="10%" tooltip="Uppercut upgrade" tooltip_y="-7" size="15" tag="inventory">
<button sprite="slot_3" x="40%" y="60%" width="%" height="10%" tooltip="Uppercut upgrade" tooltip_y="-7" size="15" tag="inventory">
<game_display stats="inventory_3" />
</button>
<button sprite="texture" x="60%" y="60%" width="%" height="10%" tooltip="Shield upgrade" tooltip_y="-7" size="15" tag="inventory">
<button sprite="slot_4" x="60%" y="60%" width="%" height="10%" tooltip="Shield upgrade" tooltip_y="-7" size="15" tag="inventory">
<game_display stats="inventory_4" />
</button>
</gc_entities>
+3 -3
View File
@@ -43,11 +43,11 @@ static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
rend->destroy = &text_safe_destroy;
} if (!my_strcmp(display_type, "inventory_1")) {
cmp->type = INVENTORY_SLOT_1;
}if (!my_strcmp(display_type, "inventory_2")) {
} if (!my_strcmp(display_type, "inventory_2")) {
cmp->type = INVENTORY_SLOT_2;
}if (!my_strcmp(display_type, "inventory_3")) {
} if (!my_strcmp(display_type, "inventory_3")) {
cmp->type = INVENTORY_SLOT_3;
}if (!my_strcmp(display_type, "inventory_4")) {
} if (!my_strcmp(display_type, "inventory_4")) {
cmp->type = INVENTORY_SLOT_4;
}
}
+4
View File
@@ -13,6 +13,8 @@ static void ctr(void *component, va_list args)
struct player_component *cmp = (struct player_component *)component;
cmp->fight_rate = va_arg(args, int);
for (int i = 0; i < 4; i++)
cmp->inventory_upgrades[i] = false;
}
static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
@@ -20,6 +22,8 @@ static void fdctr(gc_entity *entity, gc_scene *scene, void *component, node *n)
struct player_component *cmp = (struct player_component *)component;
cmp->fight_rate = xml_getintprop(n, "fight_rate");
for (int i = 0; i < 4; i++)
cmp->inventory_upgrades[i] = false;
}
static void dtr(void *component)
+16 -19
View File
@@ -74,26 +74,23 @@ float dtime)
struct renderer *rend = GETCMP(entity, renderer);
gc_scene *scene = engine->scene;
if (disp->type == SELECT_TILE_DISPLAY && rend->type == GC_TEXTUREREND) {
display_current_texture(scene, rend);
return;
}
if (disp->type >= INVENTORY_SLOT_1 && disp->type <= INVENTORY_SLOT_4 && rend->type == GC_TEXTUREREND) {
display_inventory_object(scene, rend, disp->type - INVENTORY_SLOT_1 + 1);
return;
switch (rend->type) {
case GC_TEXTUREREND:
if (disp->type == SELECT_TILE_DISPLAY)
display_current_texture(scene, rend);
if (disp->type >= INVENTORY_SLOT_1 && disp->type <= INVENTORY_SLOT_4)
display_inv_slot(scene, rend, disp->type - INVENTORY_SLOT_1 + 1);
break;
case GC_TXTREND:
if (disp->type == XP_DISPLAY)
display_current_xp(scene, rend);
if (disp->type == HEALTH_DISPLAY)
display_current_health(scene, rend, true);
if (disp->type == HEALTH_DISPLAY_ENNEMY)
display_current_health(scene, rend, false);
default:
break;
}
if (disp->type == XP_DISPLAY && rend->type == GC_TXTREND) {
display_current_xp(scene, rend);
return;
}
if (disp->type == HEALTH_DISPLAY && rend->type == GC_TXTREND) {
display_current_health(scene, rend, true);
return;
}
if (disp->type == HEALTH_DISPLAY_ENNEMY && rend->type == GC_TXTREND) {
display_current_health(scene, rend, false);
return;
}
}
static void destroy(void *system, gc_engine *engine)
+13 -3
View File
@@ -9,16 +9,26 @@
#include "scene.h"
#include "sprite.h"
#include "prefab.h"
#include "components/player_component.h"
#include "components/renderer.h"
#include "components/tag_component.h"
#include "my.h"
void display_inventory_object(gc_scene *scene, struct renderer *rend, int nb)
void display_inv_slot(gc_scene *scene, struct renderer *rend, int nb)
{
gc_sprite *sprite = NULL;
char *textures[5] = {"empty_slot", "slot_1", "slot_2", "slot_3", "slot_4"};
if (false)
gc_list *li = scene->get_entity_by_cmp(scene, "player_component");
struct player_component *cmp;
if (!li)
return;
cmp = GETCMP(li->data, player_component);
if (!cmp->inventory_upgrades[nb - 1])
nb = 0;
((gc_sprite *)rend->data)->texture = scene->get_data(scene, "sprite", textures[nb]);
sprite = scene->get_data(scene, "sprite", textures[nb]);
if (sprite)
((gc_sprite *)rend->data)->texture = sprite;
}
bool toggle_inventory(gc_engine *engine)