add inventory paging, more elements
This commit is contained in:
parent
3baa7157dc
commit
e6a00cf17b
2 changed files with 59 additions and 3 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue