aboutsummaryrefslogtreecommitdiffstats
path: root/src/ft_find_item.c
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/ft_find_item.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/ft_find_item.c b/src/ft_find_item.c
new file mode 100644
index 0000000..d00b62d
--- /dev/null
+++ b/src/ft_find_item.c
@@ -0,0 +1,53 @@
+/* ************************************************************************** */
+/* */
+/* ::: :::::::: */
+/* ft_find_item.c :+: :+: :+: */
+/* +:+ +:+ +:+ */
+/* By: rbousset <marvin@42.fr> +#+ +:+ +#+ */
+/* +#+#+#+#+#+ +#+ */
+/* Created: 2020/02/17 20:06:26 by rbousset #+# #+# */
+/* Updated: 2020/02/17 20:06:29 by rbousset ### ########lyon.fr */
+/* */
+/* ************************************************************************** */
+
+#include <libft.h>
+#include <cub3d.h>
+#include <stdint.h>
+
+static uint16_t
+ ft_fetch_heals_id(uint64_t pos_y, uint64_t pos_x, t_cub *cl)
+{
+ uint16_t id;
+
+ id = 0;
+ while (id <= 64)
+ {
+ if (cl->heals[id].s_pos_y == pos_y && cl->heals[id].s_pos_x == pos_x)
+ return (id);
+ id++;
+ }
+ return (0);
+}
+
+void
+ ft_find_item(t_player *pl, t_map *ml, t_cub *cl)
+{
+ uint16_t id;
+
+ if (ft_ischarset(FT_CHRST_ITEM,
+ ml->map[(uint64_t)pl->pos_y][(uint64_t)pl->pos_x]))
+ {
+ if (ml->map[(uint64_t)pl->pos_y][(uint64_t)pl->pos_x] == '+'
+ && pl->life < 100)
+ {
+ pl->life += FT_HEAL_PACK_AMOUNT;
+ pl->life = (pl->life > 100) ? (100) : (pl->life);
+ ml->map[(uint64_t)pl->pos_y][(uint64_t)pl->pos_x] = '0';
+ id = ft_fetch_heals_id((uint64_t)pl->pos_y,
+ (uint64_t)pl->pos_x, cl);
+ cl->heals[id].s_pos_x = 0;
+ cl->heals[id].s_pos_y = 0;
+ /* TODO: ft_sfx_heal(3) */
+ }
+ }
+}