mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
132 lines
3.6 KiB
C
132 lines
3.6 KiB
C
#ifndef M_MAIL_H
|
|
#define M_MAIL_H
|
|
|
|
#include "types.h"
|
|
#include "m_personal_id.h"
|
|
#include "m_npc_personal_id.h"
|
|
#include "m_actor_type.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define MAIL_HEADER_LEN (32 - PLAYER_NAME_LEN)
|
|
#define MAIL_FOOTER_LEN 32
|
|
#define MAIL_BODY_LEN 192
|
|
|
|
#define MAIL_FOOTER2_LEN 48
|
|
#define MAIL_HEADER2_LEN (MAIL_FOOTER2_LEN - PLAYER_NAME_LEN)
|
|
|
|
#define mMl_POSTOFFICE_GIFT_NUM 4
|
|
|
|
#define mMl_MUSEUM_INFO_MAIL_NO 189 // TODO: enum?
|
|
|
|
enum {
|
|
mMl_NAME_TYPE_PLAYER,
|
|
mMl_NAME_TYPE_NPC,
|
|
mMl_NAME_TYPE_MUSEUM,
|
|
|
|
mMl_NAME_TYPE_NUM,
|
|
mMl_NAME_TYPE_CLEAR = 0xFF
|
|
};
|
|
|
|
enum {
|
|
mMl_FONT_0,
|
|
mMl_FONT_SEND,
|
|
mMl_FONT_2,
|
|
mMl_FONT_3,
|
|
mMl_FONT_4,
|
|
|
|
mMl_FONT_NUM
|
|
};
|
|
|
|
enum {
|
|
mMl_DATA,
|
|
mMl_DATA2,
|
|
|
|
mMl_DATA_NUM
|
|
};
|
|
|
|
enum {
|
|
mMl_TYPE_MAIL = 0,
|
|
mMl_TYPE_XMAS = 1,
|
|
mMl_TYPE_SHOP_SALE_LEAFLET = 2,
|
|
mMl_TYPE_BROKER_SALE_LEAFLET = 3,
|
|
mMl_TYPE_4 = 4,
|
|
mMl_TYPE_5 = 5,
|
|
mMl_TYPE_HRA = 6,
|
|
|
|
mMl_TYPE_FISHING_CONTENST = 9,
|
|
|
|
mMl_TYPE_SPNPC_PASSWORD = 11,
|
|
mMl_TYPE_12 = 12
|
|
};
|
|
|
|
/* sizeof(Mail_nm_c) == 0x16 */
|
|
typedef struct mail_nm_s {
|
|
/* 0x00 */ PersonalID_c personalID;
|
|
/* 0x14 */ u8 type;
|
|
} Mail_nm_c;
|
|
|
|
/* sizeof(mail_header_save_s) == 0x3A */
|
|
typedef struct mail_header_save_s {
|
|
/* 0x00 */ s8 header_back_start;
|
|
/* 0x01 */ u8 unknown;
|
|
/* 0x02 */ u8 header[MAIL_HEADER_LEN];
|
|
/* 0x1A */ u8 footer[MAIL_FOOTER_LEN];
|
|
} Mail_hs_c;
|
|
|
|
/* sizeof(Mail_hdr_c) == 0x2C */
|
|
typedef struct mail_header_s {
|
|
/* 0x00 */ Mail_nm_c recipient;
|
|
/* 0x16 */ Mail_nm_c sender;
|
|
} Mail_hdr_c;
|
|
|
|
/* sizeof(Mail_ct_c) == 0xFC */
|
|
typedef struct mail_content_s {
|
|
/* 0x00 */ u8 font;
|
|
/* 0x01 */ u8 header_back_start;
|
|
/* 0x02 */ u8 mail_type;
|
|
/* 0x03 */ u8 paper_type;
|
|
/* 0x04 */ u8 header[MAIL_HEADER_LEN];
|
|
/* 0x1C */ u8 body[MAIL_BODY_LEN];
|
|
/* 0xDC */ u8 footer[MAIL_FOOTER_LEN];
|
|
} Mail_ct_c;
|
|
|
|
/* sizeof(Mail_c) == 0x12A */
|
|
typedef struct mail_s {
|
|
/* 0x000 */ Mail_hdr_c header;
|
|
/* 0x02C */ mActor_name_t present;
|
|
/* 0x02E */ Mail_ct_c content;
|
|
} Mail_c;
|
|
|
|
extern int mMl_strlen(u8* str, int size, u8 end_char);
|
|
extern int mMl_strlen2(int* found, u8* str, int size, u8 end_char);
|
|
extern void mMl_clear_mail_header(Mail_hdr_c* header);
|
|
extern void mMl_clear_mail(Mail_c* mail);
|
|
extern void mMl_clear_mail_box(Mail_c* mail, int num);
|
|
extern int mMl_check_not_used_mail(Mail_c* mail);
|
|
extern void mMl_copy_header_name(Mail_c* dst, Mail_c* src);
|
|
extern void mMl_set_to_plname(Mail_c* mail, PersonalID_c* pid);
|
|
extern void mMl_set_playername(Mail_c* mail, PersonalID_c* pid);
|
|
extern void mMl_init_mail(Mail_c* mail, PersonalID_c* pid);
|
|
extern int mMl_chk_mail_free_space(Mail_c* mail, int num);
|
|
extern int mMl_count_use_mail_space(Mail_c* mail, int num);
|
|
extern void mMl_copy_mail(Mail_c* dst, Mail_c* src);
|
|
extern void mMl_clear_mail_header_common(Mail_hs_c* header);
|
|
extern void mMl_set_mail_name_npcinfo(Mail_nm_c* name, AnmPersonalID_c* anm_pid);
|
|
extern int mMl_get_npcinfo_from_mail_name(AnmPersonalID_c* anm_pid, Mail_nm_c* name);
|
|
extern int mMl_hunt_for_send_address(Mail_c* mail);
|
|
extern int mMl_check_send_mail(Mail_c* mail);
|
|
extern int mMl_check_set_present_myself(Mail_c* mail);
|
|
extern int mMl_send_mail_box(PersonalID_c* recipient_pid, int player_no, Mail_c* mail, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type);
|
|
extern int mMl_send_mail_postoffice(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type, u8 mail_type);
|
|
extern int mMl_send_mail(PersonalID_c* recipient_pid, int player_no, mActor_name_t present, mActor_name_t paper, int mail_no, u8* sender_name, u32 proc_type);
|
|
extern void mMl_start_send_mail();
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|