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

89 lines
2.8 KiB
C++

#ifndef _NA_0_20110613_GAME_SHOP_RENEWAL
#pragma once
#ifndef SOLAR_SHOP_PACKAGE_ITEM_H
#define SOLAR_SHOP_PACKAGE_ITEM_H
#include "ShopDefine.h"
#include "ShopItem.h"
#include "ShopItemPrice.h"
class ShopManager;
class PackageItem : public ShopItem
{
__DECL_CUSTOMPOOL_PTR(PackageItem)
public:
struct ItemPiece
{
WORD ItemCode;
BYTE Amount;
DWORD UseTime;
BYTE Enchant;
BYTE Rank;
DWORD ItemGuid;
};
//
PackageItem();
virtual ~PackageItem();
virtual eTYPE GetType() const { return ShopItem::PACKAGE; }
virtual void Release();
virtual void Display();
// for server side
#ifdef _NA_0_20101015_SOLAR_SHOP_TEMP_REFACTORING
virtual void Set(const tblSellItemContainer& container, ShopManager& mgr);
#endif
void Set(const tblSellPackage& rPack, ShopManager& mgr);
// 패키지 가격정보 {
DWORD GetImageCode() const { return package_item_data_.image_code_; }
BYTE GetPieceCount() const { return package_item_data_.number_of_item_pieces_; }
// }
ShopItemPrice* GetShopItemPrice() const { return package_item_data_.shop_item_price_; };
// NOTE, f100905.3L, the getter of data block will replace getters by an index.
const ItemPiece* GetItemPiece(uint8_t piece_index) const;
// {
WORD GetItemCode(BYTE piece_idx) const { return item_pieces_[piece_idx].ItemCode; }
BYTE GetAmount(BYTE piece_idx) const { return item_pieces_[piece_idx].Amount; }
DWORD GetUseTime(BYTE piece_idx) const { return item_pieces_[piece_idx].UseTime; }
BYTE GetEnchant(BYTE piece_idx) const { return item_pieces_[piece_idx].Enchant; }
BYTE GetRank(BYTE piece_idx) const { return item_pieces_[piece_idx].Rank; }
//DWORD GetItemGuid(BYTE piece_idx) const { return item_pieces_[piece_idx].ItemGuid; }
//
void SetEnchant(BYTE piece_idx, BYTE Enchant) { item_pieces_[piece_idx].Enchant = Enchant; }
void SetRank(BYTE piece_idx, BYTE Rank) { item_pieces_[piece_idx].Rank = Rank; }
// }
protected:
virtual void vSerialize(ShopManager& mgr IN, ArchiveOfStream& ar, eSHOP_SERIALIZE se);
private:
struct PackageItemData {
DWORD image_code_;
uint8_t number_of_item_pieces_;
ShopItemPrice* shop_item_price_; //< 항목 사용안함 UseTime, Amount
} package_item_data_;
//
ItemPiece item_pieces_[MAX_PACKAGE_ITEM_SIZE];
};
//==================================================================================================
inline const PackageItem::ItemPiece* PackageItem::GetItemPiece(uint8_t piece_index) const
{
if (FlowControl::FCAssert(piece_index < package_item_data_.number_of_item_pieces_)) {
return &item_pieces_[piece_index];
}
return NULL;
}
#endif //SOLAR_SHOP_PACKAGE_ITEM_H
#endif // not defined _NA_0_20110613_GAME_SHOP_RENEWAL