storage.hpp 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Copyright (c) rAthena Dev Teams - Licensed under GNU GPL
  2. // For more information, see LICENCE in the main folder
  3. #ifndef STORAGE_HPP
  4. #define STORAGE_HPP
  5. #include <memory>
  6. #include <unordered_map>
  7. #include <vector>
  8. #include "../common/cbasetypes.hpp"
  9. #include "../common/mmo.hpp"
  10. struct s_storage;
  11. struct item;
  12. class map_session_data;
  13. extern std::unordered_map<uint16, std::shared_ptr<struct s_storage_table>> storage_db;
  14. enum e_storage_add {
  15. STORAGE_ADD_OK,
  16. STORAGE_ADD_NOROOM,
  17. STORAGE_ADD_NOACCESS,
  18. STORAGE_ADD_INVALID,
  19. };
  20. /// Guild storage flags
  21. enum e_guild_storage_flags : uint8 {
  22. GSTORAGE_OPEN = 0,
  23. GSTORAGE_STORAGE_ALREADY_OPEN,
  24. GSTORAGE_ALREADY_OPEN,
  25. GSTORAGE_NO_GUILD,
  26. GSTORAGE_NO_STORAGE,
  27. GSTORAGE_NO_PERMISSION
  28. };
  29. enum e_guild_storage_log : uint16 {
  30. GUILDSTORAGE_LOG_SUCCESS,
  31. GUILDSTORAGE_LOG_FINAL_SUCCESS,
  32. GUILDSTORAGE_LOG_EMPTY,
  33. GUILDSTORAGE_LOG_FAILED,
  34. };
  35. struct guild_log_entry{
  36. uint32 id;
  37. char name[NAME_LENGTH];
  38. char time[NAME_LENGTH];
  39. struct item item;
  40. int16 amount;
  41. };
  42. const char *storage_getName(uint8 id);
  43. bool storage_exists(uint8 id);
  44. int storage_delitem(map_session_data* sd, struct s_storage *stor, int index, int amount);
  45. int storage_storageopen(map_session_data *sd);
  46. void storage_storageadd(map_session_data *sd, struct s_storage *stor, int index, int amount);
  47. void storage_storageget(map_session_data *sd, struct s_storage *stor, int index, int amount);
  48. void storage_storageaddfromcart(map_session_data *sd, struct s_storage *stor, int index, int amount);
  49. void storage_storagegettocart(map_session_data *sd, struct s_storage *stor, int index, int amount);
  50. void storage_storagesave(map_session_data *sd);
  51. void storage_storageclose(map_session_data *sd);
  52. void storage_sortitem(struct item* items, unsigned int size);
  53. void do_init_storage(void);
  54. void do_final_storage(void);
  55. void do_reconnect_storage(void);
  56. void storage_storage_quit(map_session_data *sd, int flag);
  57. struct s_storage* guild2storage(int guild_id);
  58. struct s_storage* guild2storage2(int guild_id);
  59. void storage_guild_delete(int guild_id);
  60. char storage_guild_storageopen(map_session_data *sd);
  61. enum e_guild_storage_log storage_guild_log_read( map_session_data* sd );
  62. bool storage_guild_additem(map_session_data *sd,struct s_storage *stor,struct item *item_data,int amount);
  63. bool storage_guild_additem2(struct s_storage* stor, struct item* item, int amount);
  64. bool storage_guild_delitem(map_session_data *sd,struct s_storage *stor,int n,int amount);
  65. void storage_guild_storageadd(map_session_data *sd,int index,int amount);
  66. void storage_guild_storageget(map_session_data *sd,int index,int amount);
  67. void storage_guild_storageaddfromcart(map_session_data *sd,int index,int amount);
  68. void storage_guild_storagegettocart(map_session_data *sd,int index,int amount);
  69. void storage_guild_storageclose(map_session_data *sd);
  70. void storage_guild_storage_quit(map_session_data *sd,int flag);
  71. bool storage_guild_storagesave(uint32 account_id, int guild_id, int flag);
  72. void storage_guild_storagesaved(int guild_id); //Ack from char server that guild store was saved.
  73. // Premium Storage [Cydh]
  74. void storage_premiumStorage_open(map_session_data *sd);
  75. bool storage_premiumStorage_load(map_session_data *sd, uint8 num, uint8 mode);
  76. void storage_premiumStorage_save(map_session_data *sd);
  77. void storage_premiumStorage_close(map_session_data *sd);
  78. void storage_premiumStorage_quit(map_session_data *sd);
  79. int compare_item(struct item *a, struct item *b);
  80. #endif /* STORAGE_HPP */