add inventory paging, more elements
This commit is contained in:
parent
3baa7157dc
commit
e6a00cf17b
2 changed files with 59 additions and 3 deletions
|
@ -9,3 +9,31 @@ wildfire;fire;fire
|
|||
smoke;fire;water
|
||||
puddle;water;water
|
||||
elements;air;earth;fire;water
|
||||
dirt;dust;earth
|
||||
clay;dirt;wind
|
||||
cobble;air;lava
|
||||
stone;cobble;earth
|
||||
gravel;cobble;wind
|
||||
blue;fire;heat
|
||||
steam;heat;water
|
||||
energy;steam;steam
|
||||
sky;air;wind
|
||||
sky;air;cloud
|
||||
space;sky;air
|
||||
space;sky;sky
|
||||
void;space;space
|
||||
zero;energy;void
|
||||
numbers;elements;zero
|
||||
one;numbers;numbers
|
||||
color;blue;numbers
|
||||
spectrum;color;numbers
|
||||
pond;puddle;earth
|
||||
pond;puddle;puddle
|
||||
lake;pond;water
|
||||
lake;pond;pond
|
||||
sea;lake;lake
|
||||
sea;lake;water
|
||||
ocean;sea;sea
|
||||
ocean;sea;land
|
||||
planet;ocean;earth
|
||||
planet;ocean;land
|
||||
|
|
|
@ -7,6 +7,20 @@
|
|||
|
||||
#define MAX_BUF_LENGTH 1024
|
||||
#define MAX_COMBO_LENGTH 1024
|
||||
struct pager {
|
||||
int page;
|
||||
int i;
|
||||
};
|
||||
|
||||
long stoi(const char *s) {
|
||||
long i;
|
||||
i = 0;
|
||||
while (*s >= '0' && *s <= '9') {
|
||||
i = i * 10 + (*s - '0');
|
||||
s++;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
|
||||
int fix_delim(char *command, char *needle) {
|
||||
char *delim = strstr(command, needle);
|
||||
|
@ -33,6 +47,11 @@ int inv_handler(const void *key, unsigned long long size,
|
|||
unsigned long long val, void *usr)
|
||||
#endif
|
||||
{
|
||||
struct pager *i = usr;
|
||||
i->i++;
|
||||
if (i->i < i->page * 10 || i->i >= (i->page + 1) * 10) {
|
||||
return 0;
|
||||
}
|
||||
if (val == 0)
|
||||
return 0;
|
||||
char *key2 = (char *)key;
|
||||
|
@ -53,9 +72,18 @@ int slash_command(char *command, hashmap *inv) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
if (strcmp(command, "inv\n") == 0) {
|
||||
printf("Your inventory:\n");
|
||||
hashmap_iterate(inv, inv_handler, "inv");
|
||||
char *invs = "inv ";
|
||||
|
||||
if (strncmp(command, invs, strlen(invs)) == 0) {
|
||||
int page = stoi(&command[strlen(invs)]);
|
||||
printf("Your inventory (page %i):\n", page);
|
||||
struct pager i = {.page = page - 1, .i = -1};
|
||||
hashmap_iterate(inv, inv_handler, &i);
|
||||
} else if (strncmp(command, invs, strlen(invs) - 1) == 0) {
|
||||
int page = 1;
|
||||
printf("Your inventory (page %i):\n", page);
|
||||
struct pager i = {.page = page - 1, .i = -1};
|
||||
hashmap_iterate(inv, inv_handler, &i);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue