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
|
smoke;fire;water
|
||||||
puddle;water;water
|
puddle;water;water
|
||||||
elements;air;earth;fire;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_BUF_LENGTH 1024
|
||||||
#define MAX_COMBO_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) {
|
int fix_delim(char *command, char *needle) {
|
||||||
char *delim = strstr(command, 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)
|
unsigned long long val, void *usr)
|
||||||
#endif
|
#endif
|
||||||
{
|
{
|
||||||
|
struct pager *i = usr;
|
||||||
|
i->i++;
|
||||||
|
if (i->i < i->page * 10 || i->i >= (i->page + 1) * 10) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
if (val == 0)
|
if (val == 0)
|
||||||
return 0;
|
return 0;
|
||||||
char *key2 = (char *)key;
|
char *key2 = (char *)key;
|
||||||
|
@ -53,9 +72,18 @@ int slash_command(char *command, hashmap *inv) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (strcmp(command, "inv\n") == 0) {
|
char *invs = "inv ";
|
||||||
printf("Your inventory:\n");
|
|
||||||
hashmap_iterate(inv, inv_handler, "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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue