rodecomp/Source/Contents/Items/NeoPackageItemMgr.h
ragnarok-clanker 2c00ff614f Decompile 2 functions in Source/Contents/Items/NeoPackageItemMgr.cpp, Source/Contents/Items/NeoPackageItemMgr.h
Batch #7078 by aDw: 0 byte-identical, 2 confirmed by peer review.

- fn_24376 Singleton<NEO_PACKAGEITEM::CNeoPackageItemMgr>::GetInstance: logic confirmed by peer review
- fn_24377 Singleton<NEO_PACKAGEITEM::CPaidPackageItemMgr>::GetInstance: logic confirmed by peer review

Peer-reviewed-by: eAthena, Lumen
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
2026-10-31 03:52:02 +00:00

83 lines
2.1 KiB
C++

#ifndef RAGNAROK_SOURCE_CONTENTS_ITEMS_NEOPACKAGEITEMMGR_H
#define RAGNAROK_SOURCE_CONTENTS_ITEMS_NEOPACKAGEITEMMGR_H
#include "Utility/Singleton.h"
#include <cstddef>
#include <list>
#include <map>
#include <new>
#include <optional>
#include <set>
#include <string>
struct lua_State;
namespace NEO_PACKAGEITEM {
struct PackageEntry {
// INLINED
PackageEntry(int itemId, const std::string& name, int probability) : itemId(itemId), name(name), probability(probability) {
}
/* 0000 */ int itemId;
/* 0004 */ std::string name;
/* 001C */ int probability;
};
struct PackageGroup {
/* 0000 */ int totalProbability;
/* 0004 */ std::list<PackageEntry> items;
};
class CNeoPackageItemMgr : public Singleton<CNeoPackageItemMgr> {
public:
static int LuaInsertPackage(lua_State* state);
static bool LoadScript();
CNeoPackageItemMgr();
void Init();
void InsertPackage(int packageId, int groupId, int itemId, const std::string& name, int probability);
std::optional<std::map<int, PackageGroup>*> FindPackage(int itemId);
bool HasPackage(int itemId);
/* 0004 */ std::map<int, std::map<int, PackageGroup>> m_packages;
};
class CPaidPackageItemMgr : public Singleton<CPaidPackageItemMgr> {
public:
static int LuaAddItemSold(lua_State* L);
static bool LoadScript();
CPaidPackageItemMgr();
void Init();
void AddItem(int itemId);
bool IsPaidItem(int itemId);
/* 0004 */ std::set<int> m_items;
};
#if defined(_WIN32) && !defined(_WIN64)
static_assert(sizeof(PackageEntry) == 0x20);
static_assert(sizeof(PackageGroup) == 0xC);
static_assert(sizeof(CNeoPackageItemMgr) == 0xC);
static_assert(sizeof(CPaidPackageItemMgr) == 0xC);
#endif
}
template <>
NEO_PACKAGEITEM::CNeoPackageItemMgr* Singleton<NEO_PACKAGEITEM::CNeoPackageItemMgr>::s_instance;
template <>
NEO_PACKAGEITEM::CPaidPackageItemMgr* Singleton<NEO_PACKAGEITEM::CPaidPackageItemMgr>::s_instance;
template <>
NEO_PACKAGEITEM::CNeoPackageItemMgr* Singleton<NEO_PACKAGEITEM::CNeoPackageItemMgr>::GetInstance();
template <>
NEO_PACKAGEITEM::CPaidPackageItemMgr* Singleton<NEO_PACKAGEITEM::CPaidPackageItemMgr>::GetInstance();
#endif