Files
2022-10-26 12:25:11 +08:00

84 lines
1.8 KiB
C++

#ifndef SERVER_GAMESERVER_MINIGAME_H
#define SERVER_GAMESERVER_MINIGAME_H
#ifdef _NA_008404_20150712_MINIGAME_SYSTEM
class Player;
bool CompareIndex(MiniGameBingoInfos* minigame_bingo_infos);
struct MiniGameParam
{
public:
MiniGameParam(eMINIGAME_TYPE type){ minigame_type = type; };
eMINIGAME_TYPE minigame_type;
private:
MiniGameParam(){};
};
struct MiniGameBingoParam : public MiniGameParam
{
MiniGameBingoParam(eMINIGAME_TYPE type)
:MiniGameParam(type)
{
minigame_bingo_infos = NULL;
}
MiniGameBingoInfos* minigame_bingo_infos;
};
struct MiniGameBingoActionParam : public MiniGameBingoParam
{
MiniGameBingoActionParam(eMINIGAME_TYPE type, int number)
:MiniGameBingoParam(type)
{
bingo_number = number;
}
int bingo_number;
};
struct MiniGameBingoRewardParam : public MiniGameBingoParam
{
MiniGameBingoRewardParam(eMINIGAME_TYPE type, Player* player_)
:MiniGameBingoParam(type)
{
player = player_;
}
Player* player;
};
class MiniGame
{
public:
MiniGame()
{
m_minigame_type = eMINIGAME_TYPE_NONE;
}
virtual RC::eMINIGAME_RESULT DoAction(MiniGameParam& minigame_param) = 0;
virtual RC::eMINIGAME_RESULT GetReward(MiniGameParam& minigame_param) = 0;
protected:
bool ObtainReward( Player* player, CODETYPE reward_code );
eMINIGAME_TYPE m_minigame_type;
};
class MiniGameBingo : public MiniGame
{
public:
MiniGameBingo()
{
m_minigame_type = eMINIGAME_TYPE_BINGO;
}
RC::eMINIGAME_RESULT DoAction(MiniGameParam& minigame_param);
RC::eMINIGAME_RESULT GetReward(MiniGameParam& minigame_param);
private:
int CalculateBingo(MiniGameBingoInfos* minigame_bingo_infos);
};
#endif // _NA_008404_20150712_MINIGAME_SYSTEM
#endif // SERVER_GAMESERVER_MINIGAME_H