mirror of https://github.com/bgiraudr/Adoranda.git
parent
3d3361151b
commit
f71c203ae1
@ -1,4 +1,5 @@
|
||||
{
|
||||
"name":"Test1",
|
||||
"id":1
|
||||
"id":1,
|
||||
"sprite":"item"
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
{
|
||||
"name":"Obj2",
|
||||
"id":2
|
||||
"id":2,
|
||||
"sprite":"item2"
|
||||
}
|
||||
|
@ -1,3 +1,7 @@
|
||||
*.png:
|
||||
type: bopti-image
|
||||
name_regex: (.*)\.png img_\1
|
||||
|
||||
items.txt:
|
||||
custom-type: items
|
||||
name: items
|
||||
|
After Width: | Height: | Size: 150 B |
After Width: | Height: | Size: 152 B |
@ -0,0 +1,26 @@
|
||||
#pragma once
|
||||
#include "define.h"
|
||||
#include <gint/display.h>
|
||||
|
||||
struct Item {
|
||||
char *name;
|
||||
int id;
|
||||
bopti_image_t *sprite;
|
||||
char *description;
|
||||
};
|
||||
|
||||
struct Items {
|
||||
int nbItems;
|
||||
struct Item *items[];
|
||||
};
|
||||
|
||||
struct Inventory {
|
||||
int nbItems;
|
||||
struct Item *items[NB_PLAYER_ITEMS];
|
||||
};
|
||||
|
||||
struct Item *get_item_id(int id);
|
||||
bool add_item_to_inventory(struct Inventory *inventory, struct Item *item);
|
||||
int get_first_free_space(struct Inventory *inventory);
|
||||
void remove_item_pos(struct Inventory *inventory, int pos);
|
||||
void display_inventory(struct Inventory *inventory);
|
@ -0,0 +1,51 @@
|
||||
#include <gint/display.h>
|
||||
#include <gint/keyboard.h>
|
||||
#include <stdbool.h>
|
||||
|
||||
#include "inventory.h"
|
||||
#include "util.h"
|
||||
#include "define.h"
|
||||
|
||||
extern struct Items items;
|
||||
|
||||
struct Item *get_item_id(int id) {
|
||||
for(int i = 0; i < items.nbItems; i++) {
|
||||
if(items.items[i]->id == id) return items.items[i];
|
||||
}
|
||||
return items.items[0];
|
||||
}
|
||||
|
||||
int get_first_free_space(struct Inventory *inventory) {
|
||||
for(int i = 0; i < NB_PLAYER_ITEMS; i++) {
|
||||
if(inventory->items[i] == NULL) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return NB_PLAYER_ITEMS;
|
||||
}
|
||||
|
||||
bool add_item_to_inventory(struct Inventory *inventory, struct Item *item) {
|
||||
int index = get_first_free_space(inventory);
|
||||
if(index < NB_PLAYER_ITEMS) {
|
||||
inventory->items[index] = item;
|
||||
inventory->nbItems++;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void remove_item_pos(struct Inventory *inventory, int pos) {
|
||||
inventory->items[pos] = NULL;
|
||||
inventory->nbItems--;
|
||||
}
|
||||
|
||||
void display_inventory(struct Inventory *inventory) {
|
||||
dclear(C_WHITE);
|
||||
for(int i = 0 ; i < NB_PLAYER_ITEMS ; i++) {
|
||||
if(inventory->items[i] != NULL) {
|
||||
dimage(0,18*i,inventory->items[i]->sprite);
|
||||
}
|
||||
}
|
||||
dupdate();
|
||||
wait_for_input(KEY_SHIFT);
|
||||
}
|
Loading…
Reference in new issue