summaryrefslogtreecommitdiff
path: root/src/map/storage.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/map/storage.h')
-rw-r--r--src/map/storage.h35
1 files changed, 27 insertions, 8 deletions
diff --git a/src/map/storage.h b/src/map/storage.h
index 5c6152894..ec1ce4fe5 100644
--- a/src/map/storage.h
+++ b/src/map/storage.h
@@ -24,9 +24,12 @@
#include "common/hercules.h"
#include "common/db.h"
+struct config_setting_t;
struct guild_storage;
struct item;
struct map_session_data;
+struct storage_settings;
+struct storage_data;
/**
* Acceptable values for map_session_data.state.storage_flag
@@ -37,21 +40,37 @@ enum storage_flag {
STORAGE_FLAG_GUILD = 2, // Guild Storage open
};
+// Storage Access Modes [Smokexyz/Hercules]
+enum storage_access_modes {
+ STORAGE_ACCESS_VIEW = 0x0,
+ STORAGE_ACCESS_GET = 0x1,
+ STORAGE_ACCESS_PUT = 0x2,
+ STORAGE_ACCESS_ALL = STORAGE_ACCESS_VIEW | STORAGE_ACCESS_GET | STORAGE_ACCESS_PUT
+};
+
struct storage_interface {
+ VECTOR_DECL(struct storage_settings) configuration;
+ void (*init) (bool minimal);
+ void (*final) (void);
/* */
void (*reconnect) (void);
+ bool (*config_read) (const char *filename, bool imported);
+ void (*config_read_additional_fields) (struct config_setting_t *t, struct storage_settings *s_conf, const char *filename);
/* */
- int (*delitem) (struct map_session_data* sd, int n, int amount);
- int (*open) (struct map_session_data *sd);
- int (*add) (struct map_session_data *sd,int index,int amount);
- int (*get) (struct map_session_data *sd,int index,int amount);
- int (*additem) (struct map_session_data* sd, struct item* item_data, int amount);
- int (*addfromcart) (struct map_session_data *sd,int index,int amount);
- int (*gettocart) (struct map_session_data *sd,int index,int amount);
+ int (*get_id_by_name) (const char *storage_name);
+ struct storage_data *(*ensure) (struct map_session_data *sd, int storage_id);
+ const struct storage_settings *(*get_settings) (int storage_id);
+ int (*delitem) (struct map_session_data *sd, struct storage_data *stor, int n, int amount);
+ int (*open) (struct map_session_data *sd, struct storage_data *stor);
+ int (*add) (struct map_session_data *sd, struct storage_data *stor, int index, int amount);
+ int (*get) (struct map_session_data *sd, struct storage_data *stor, int index, int amount);
+ int (*additem) (struct map_session_data *sd, struct storage_data *stor, struct item* item_data, int amount);
+ int (*addfromcart) (struct map_session_data *sd, struct storage_data *stor, int index,int amount);
+ int (*gettocart) (struct map_session_data *sd, struct storage_data *stor, int index,int amount);
void (*close) (struct map_session_data *sd);
void (*pc_quit) (struct map_session_data *sd, int flag);
int (*comp_item) (const void *i1_, const void *i2_);
- void (*sortitem) (struct item* items, unsigned int size);
+ void (*sortitem) (struct item *items, unsigned int size);
int (*reconnect_sub) (union DBKey key, struct DBData *data, va_list ap);
};