forked from Fluorohydride/ygopro
-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathsingle_duel.h
More file actions
71 lines (62 loc) · 2.42 KB
/
Copy pathsingle_duel.h
File metadata and controls
71 lines (62 loc) · 2.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#ifndef SINGLE_DUEL_H
#define SINGLE_DUEL_H
#include <set>
#include "network.h"
#include "deck.h"
#include "replay.h"
namespace ygo {
class SingleDuel: public DuelMode {
public:
SingleDuel(bool is_match);
~SingleDuel() override;
void Chat(DuelPlayer* dp, unsigned char* pdata, int len) override;
void JoinGame(DuelPlayer* dp, unsigned char* pdata, bool is_creater) override;
void LeaveGame(DuelPlayer* dp) override;
void ToDuelist(DuelPlayer* dp) override;
void ToObserver(DuelPlayer* dp) override;
void PlayerReady(DuelPlayer* dp, bool is_ready) override;
void PlayerKick(DuelPlayer* dp, unsigned char pos) override;
void UpdateDeck(DuelPlayer* dp, unsigned char* pdata, unsigned int len) override;
void StartDuel(DuelPlayer* dp) override;
void HandResult(DuelPlayer* dp, unsigned char res) override;
void TPResult(DuelPlayer* dp, unsigned char tp) override;
void Process() override;
void Surrender(DuelPlayer* dp) override;
int Analyze(unsigned char* msgbuffer, unsigned int len) override;
void GetResponse(DuelPlayer* dp, unsigned char* pdata, unsigned int len) override;
void TimeConfirm(DuelPlayer* dp) override;
void EndDuel() override;
void OnPlayerDisconnected(DuelPlayer* dp) override;
void DuelEndProc();
void WaitforResponse(int playerid);
void RefreshMzone(int player, int flag = 0x881fff, int use_cache = 1);
void RefreshSzone(int player, int flag = 0x681fff, int use_cache = 1);
void RefreshHand(int player, int flag = 0x681fff, int use_cache = 1);
void RefreshGrave(int player, int flag = 0x81fff, int use_cache = 1);
void RefreshExtra(int player, int flag = 0xe81fff, int use_cache = 1);
void RefreshSingle(int player, int location, int sequence, int flag = 0xf81fff);
static uint32_t MessageHandler(intptr_t fduel, uint32_t type);
static void SingleTimer(evutil_socket_t fd, short events, void* arg);
private:
int WriteUpdateData(int player, int location, unsigned int flag, unsigned char*& qbuf, int use_cache);
protected:
DuelPlayer* players[2]{};
DuelPlayer* pplayer[2]{};
bool ready[2]{};
Deck pdeck[2];
int deck_error[2]{};
unsigned char hand_result[2]{};
unsigned char last_response{ 0 };
std::set<DuelPlayer*> observers;
Replay last_replay;
size_t last_replay_response_size{ 0 };
bool match_mode{ false };
int match_kill{ 0 };
unsigned char duel_count{ 0 };
unsigned char tp_player{ 0 };
unsigned char match_result[3]{};
short time_limit[2]{};
short time_elapsed{ 0 };
};
}
#endif //SINGLE_DUEL_H