summaryrefslogtreecommitdiff
path: root/include/m_mail.h
blob: b42392a0cd00ad13feee17d49bde7b19a206c827 (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
#ifndef M_MAIL_H
#define M_MAIL_H

#include "ultra64.h"
#include "unk.h"
#include "m_private_internals.h"
#include "m_npc_base.h"

#define MAIL_HEADER_LEN (16 - PLAYER_NAME_LEN)
#define MAIL_FOOTER_LEN 16 
#define MAIL_BODY_LEN 96

#define MAIL_FOOTER2_LEN 26  
#define MAIL_HEADER2_LEN (MAIL_FOOTER2_LEN - PLAYER_NAME_LEN)

struct struct_func_8085CE18_jp_arg4;
struct AnmPersonalID_c;

// MailName?
typedef struct mMl_unk_00 {
    /* 0x00 */ PersonalID_c personalID;
    /* 0x10 */ u8 type;
} mMl_unk_00; // size = 0x12

typedef struct mMl_unk_2A {
    /* 0x00 */ UNK_TYPE1 unk_00[0x7A];
} mMl_unk_2A; // size = 0x7A

typedef struct MailHeaderCommon {
    /* 0x00 */ s8 unk_00;
    /* 0x00 */ u8 unk_01;
    /* 0x02 */ u8 unk_02[10];
    /* 0x0C */ u8 unk_0C[16];
} MailHeaderCommon; //size = 0x1C

typedef struct MailHeader {
    /* 0x00 */ mMl_unk_00 recipient;
    /* 0x12 */ mMl_unk_00 sender;
} MailHeader; // size = 0x24

typedef struct MailContent {
    /* 0x00 */ u8 font;
    /* 0x01 */ u8 headerBackStart;
    /* 0x02 */ u8 mailType;
    /* 0x03 */ u8 paperType;
    /* 0x04 */ u8 header[MAIL_HEADER_LEN];
    /* 0x1C */ u8 body[MAIL_BODY_LEN];
    /* 0xDC */ u8 footer[MAIL_FOOTER_LEN];
} MailContent; // size = 0x7F

typedef struct Mail_c {
    /* 0x000 */ MailHeader header;
    /* 0x024 */ u16 present;
    /* 0x026 */ MailContent content;
} Mail_c; //size = 0xA4

typedef enum MailNameType {
    /*   0 */ MAIL_NAME_TYPE_PLAYER,
    /*   1 */ MAIL_NAME_TYPE_NPC,
    /*   2 */ MAIL_NAME_NUM,
    /* 255 */ MAIL_NAME_TYPE_CLEAR = 0xFF
} MailNameType;

s32 mMl_strlen(const char* arg0, s32 size, char c);
s32 mMl_strlen2(s32* arg0, const char* arg1, s32 size, char c);
void mMl_strcpy_back(char* dst, const char* src, s32 size);
void mMl_clear_mail_header(Mail_c* mail);
void mMl_clear_mail(Mail_c* mail);
void mMl_clear_mail_box(Mail_c* mail, s32 arg1);
s32 mMl_check_not_used_mail(Mail_c* mail);
void mMl_copy_header_name(mMl_unk_00* arg0, mMl_unk_00* arg1);
void mMl_set_from_name(Mail_c* arg0, Mail_c* arg1);
void mMl_set_to_name(Mail_c* arg0, Mail_c* arg1);
void mMl_set_to_plname(Mail_c* arg0, PersonalID_c* arg1);
void mMl_set_playername(Mail_c* mail, PersonalID_c* arg1);
void mMl_init_mail(Mail_c* mail, PersonalID_c* arg1);
s32 mMl_chk_mail_free_space(Mail_c mail[], s32 arg1);
s32 mMl_use_mail_space(Mail_c mail[], s32 arg1, PersonalID_c* arg2);
s32 mMl_count_use_mail_space(Mail_c mail[], s32 arg1);
void mMl_copy_mail(Mail_c* dst, Mail_c* src);
void mMl_clear_mail_header_common(MailHeaderCommon* arg0);
void mMl_copy_mail_header_common(MailHeaderCommon* arg0, MailHeaderCommon* arg1);
void mMl_set_mail_name_npcinfo(mMl_unk_00* arg0, AnmPersonalID_c* arg1);
s32 mMl_get_npcinfo_from_mail_name(AnmPersonalID_c* arg0, mMl_unk_00* arg1);
s32 mMl_hunt_for_send_address(Mail_c* mail);
s32 mMl_check_send_mail(struct struct_func_8085CE18_jp_arg4* arg0);
s32 mMl_check_set_present_myself(Mail_c* mail);

#endif