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

84 lines
2.8 KiB
C++

#pragma once
#ifndef PROGRAMCOMMON_SOCKETSYSTEM_ZARDCOMPOSEINFOPARSER_H_
#define PROGRAMCOMMON_SOCKETSYSTEM_ZARDCOMPOSEINFOPARSER_H_
#include <Singleton.h>
#include <ScriptCode.IParser.h>
#include <ItemOptionHeader.h>
class SCItemSlotContainer;
struct MSG_CG_ITEM_COMPOSE_OR_DECOMPOSE_SYN;
// _NA_000251_20100727_SOCKET_SYSTEM
struct ZardComposeInfo
{
enum { kSuccessRatioCount = 4 };
enum { kMaxRatio = 1000 };
typedef int ZardGrade;
typedef WORD ZardRatio;
ZardGrade zard_grade_; // 쟈드 등급
ZardRatio success_ratio_[kSuccessRatioCount]; // 성공 확률
};
class ZardComposeInfoParser : public util::Singleton<ZardComposeInfoParser>, public IParser
{
////////////////////////////////////////////////////////////////////////////////////////////////
// REGION : Define
////////////////////////////////////////////////////////////////////////////////////////////////
public:
enum { kMaterialSize = 3 }; // 합성에 사용할 재료 개수
////////////////////////////////////////////////////////////////////////////////////////////////
// REGION : Constructor & Destructor
////////////////////////////////////////////////////////////////////////////////////////////////
public:
ZardComposeInfoParser();
~ZardComposeInfoParser();
////////////////////////////////////////////////////////////////////////////////////////////////
// REGION : Public
////////////////////////////////////////////////////////////////////////////////////////////////
public:
virtual void Release() {}
virtual BOOL LoadScript(eSCRIPT_CODE script_code, BOOL is_reload);
public:
const ZardComposeInfo* FindZardCompose(const ZardComposeInfo::ZardGrade zard_grade) const;
public:
// 쟈드 합성 성공 확률을 얻는다.
// 리턴값 : 0이면 성공 확률을 얻는데 실패
ZardComposeInfo::ZardRatio GetZardCompositionSuccessRatio(
SCItemSlotContainer& inventory,
const POSTYPE zard_position_list[kMaterialSize],
const POSTYPE additive_position,
int fail_number) const;
// 쟈드 합성 요청을 얻는다.
bool GetZardCompositionRequest(
SCItemSlotContainer& inventory,
const POSTYPE zard_position_list[kMaterialSize],
const POSTYPE additive_position,
MSG_CG_ITEM_COMPOSE_OR_DECOMPOSE_SYN& OUT request) const;
////////////////////////////////////////////////////////////////////////////////////////////////
// REGION : Private
////////////////////////////////////////////////////////////////////////////////////////////////
private:
bool IsValid(const ZardComposeInfo& zard_compose) const;
bool LoadZardCompose(const bool is_reload);
private:
ZardComposeInfo zard_compose_list_[kZardGradeMax-1];
__DISABLE_COPY(ZardComposeInfoParser);
};
#endif // PROGRAMCOMMON_SOCKETSYSTEM_ZARDCOMPOSEINFOPARSER_H_