Files
Sun1602/ProgramCommon/ExchangeRewardInfo.h
T
2022-10-26 12:25:11 +08:00

66 lines
2.0 KiB
C++

#pragma once
#ifndef PROGRAMCOMMON_EXCHANGE_REWARD_INFO_H
#define PROGRAMCOMMON_EXCHANGE_REWARD_INFO_H
#include <SolarHashTable.h>
#include <Singleton.h>
#include <ScriptCode.IParser.h>
//==================================================================================================
// NOTE: this class is used by __NA_001027_20080423_RANDOM_REWARD_EVENT_, default exposed
struct EXCHANGE_REWARDINFO
{
DWORD m_Index;
SLOTCODE m_ItemCode;
WORD m_ItemCount;
DWORD m_RewardIndex;
};
// CHANGES: f110603.6L, changes the key specification
typedef util::SolarHashTable<EXCHANGE_REWARDINFO*, DWORD> EXCHANGE_REWARDINFO_HASH;
//==================================================================================================
class ExchangeRewardInfoParser : public util::Singleton<ExchangeRewardInfoParser>, public IParser
{
public:
ExchangeRewardInfoParser();
virtual ~ExchangeRewardInfoParser();
VOID Init( DWORD dwPoolSize );
VOID Init( DWORD dwPoolSize, char * pszPackFileName );
VOID Release();
VOID Reload();
VOID Unload();
EXCHANGE_REWARDINFO * GetRewardInfo( SLOTCODE ItemCode, WORD ItemCount );
EXCHANGE_REWARDINFO_HASH * GetHashTable() {return m_pRewardInfoHash;}
BOOL _Load( BOOL bReload );
public:
virtual BOOL LoadScript( eSCRIPT_CODE ScriptCode, BOOL bReload );
private:
BOOL _Load( util::SolarFileReader& sr, BOOL bReload );
DWORD MakeRewardKey(SLOTCODE item_code, WORD number_of_items);
private:
EXCHANGE_REWARDINFO_HASH * m_pRewardInfoHash;
char m_pszFileName[MAX_PATH];
};
//==================================================================================================
// CHANGES: f110603.6L, changes the key specification
inline DWORD ExchangeRewardInfoParser::MakeRewardKey(SLOTCODE item_code, WORD number_of_items)
{
DWORD composed = number_of_items;
; composed <<= 16;
; composed |= item_code;
return composed;
}
//==================================================================================================
#endif //PROGRAMCOMMON_EXCHANGE_REWARD_INFO_H