summaryrefslogtreecommitdiff
path: root/include/mystery_gift_client.h
blob: 8214d69eff982bf40cff7f4d88adafa2599c77ed (plain)
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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#ifndef GUARD_MYSTERY_GIFT_CLIENT_H
#define GUARD_MYSTERY_GIFT_CLIENT_H

#include "mystery_gift_link.h"

// Return values for client functions called by MysteryGiftClient_Run
enum {
    CLI_RET_INIT,
    CLI_RET_ACTIVE,
    CLI_RET_YES_NO,
    CLI_RET_PRINT_MSG,
    CLI_RET_ASK_TOSS,
    CLI_RET_COPY_MSG,
    CLI_RET_END,
};

// IDs for client script instructions
enum {
    CLI_NONE,
    CLI_RETURN,
    CLI_RECV,
    CLI_SEND_LOADED,
    CLI_COPY_RECV,
    CLI_YES_NO,
    CLI_COPY_RECV_IF_N,
    CLI_COPY_RECV_IF,
    CLI_LOAD_GAME_DATA,
    CLI_SAVE_NEWS,
    CLI_SAVE_CARD,
    CLI_PRINT_MSG,
    CLI_COPY_MSG,
    CLI_ASK_TOSS,
    CLI_LOAD_TOSS_RESPONSE,
    CLI_RUN_MEVENT_SCRIPT,
    CLI_SAVE_STAMP,
    CLI_SAVE_RAM_SCRIPT,
    CLI_RECV_EREADER_TRAINER,
    CLI_SEND_STAT,
    CLI_SEND_READY_END,
    CLI_RUN_BUFFER_SCRIPT,
};

// IDs for client messages when ending a script.
// Given as the parameter to CLI_RETURN, and resolved to text in GetClientResultMessage
enum {
    CLI_MSG_NOTHING_SENT,
    CLI_MSG_RECORD_UPLOADED,
    CLI_MSG_CARD_RECEIVED,
    CLI_MSG_NEWS_RECEIVED,
    CLI_MSG_STAMP_RECEIVED,
    CLI_MSG_HAD_CARD,
    CLI_MSG_HAD_STAMP,
    CLI_MSG_HAD_NEWS,
    CLI_MSG_NO_ROOM_STAMPS,
    CLI_MSG_COMM_CANCELED,
    CLI_MSG_CANT_ACCEPT,
    CLI_MSG_COMM_ERROR,
    CLI_MSG_TRAINER_RECEIVED,
    CLI_MSG_BUFFER_SUCCESS,
    CLI_MSG_BUFFER_FAILURE,
};

#define CLIENT_MAX_MSG_SIZE 64

struct MysteryGiftClientCmd
{
    u32 instr;
    u32 parameter;
};

struct MysteryGiftClient
{
    u32 unused;
    u32 param;
    u32 funcId;
    u32 funcState;
    u32 cmdidx;
    void * sendBuffer;
    void * recvBuffer;
    struct MysteryGiftClientCmd * script;
    void * msg;
    struct MysteryGiftLink link;
    bool32 isWonderNews;
};

void MysteryGiftClient_Create(bool32 isWonderNews);
u32 MysteryGiftClient_Run(u16 * endVal);
void MysteryGiftClient_AdvanceState(void);
void * MysteryGiftClient_GetMsg(void);
void MysteryGiftClient_SetParam(u32 value);

#endif //GUARD_MYSTERY_GIFT_CLIENT_H