mirror of https://github.com/pret/pokeemerald.git
140 lines
2.9 KiB
C
140 lines
2.9 KiB
C
#ifndef GUARD_EASYCHAT_H
|
|
#define GUARD_EASYCHAT_H
|
|
|
|
#include "main.h"
|
|
#include "constants/easy_chat.h"
|
|
|
|
struct EasyChatScreenTemplate
|
|
{
|
|
u8 type;
|
|
u8 numColumns;
|
|
u8 numRows;
|
|
u8 frameId:7;
|
|
u8 fourFooterOptions:1;
|
|
const u8 *titleText;
|
|
const u8 *instructionsText1;
|
|
const u8 *instructionsText2;
|
|
const u8 *confirmText1;
|
|
const u8 *confirmText2;
|
|
};
|
|
|
|
struct EasyChatScreen
|
|
{
|
|
/*0x00*/ u8 type;
|
|
/*0x01*/ u8 templateId;
|
|
/*0x02*/ u8 numColumns;
|
|
/*0x03*/ u8 numRows;
|
|
/*0x04*/ u8 state;
|
|
/*0x05*/ s8 mainCursorColumn;
|
|
/*0x06*/ s8 mainCursorRow;
|
|
/*0x07*/ u8 unk_07;
|
|
/*0x08*/ u8 stateBackup;
|
|
/*0x09*/ u8 unk_09;
|
|
/*0x0A*/ s8 unk_0a;
|
|
/*0x0B*/ s8 unk_0b;
|
|
/*0x0C*/ u8 unk_0c;
|
|
/*0x0D*/ u8 unk_0d;
|
|
/*0x0E*/ u8 unk_0e;
|
|
/*0x0F*/ u8 unk_0f;
|
|
/*0x10*/ s8 unk_10;
|
|
/*0x11*/ s8 unk_11;
|
|
/*0x12*/ u8 displayedPersonType;
|
|
/*0x13*/ u8 unk_13;
|
|
/*0x14*/ u8 unk_14[0x20];
|
|
/*0x34*/ const u8 *titleText;
|
|
/*0x38*/ u16 *words;
|
|
/*0x3C*/ u16 ecWordBuffer[9];
|
|
};
|
|
|
|
struct Unk203A11C
|
|
{
|
|
u16 unk0;
|
|
u16 windowId;
|
|
u16 unk4;
|
|
u8 unk6;
|
|
u8 unk7;
|
|
s8 unk8;
|
|
u8 unk9;
|
|
u8 unkA;
|
|
u8 unkB[0xC1];
|
|
u8 unkCC[0x202];
|
|
u16 unk2CE;
|
|
int unk2D0;
|
|
int unk2D4;
|
|
struct Sprite *unk2D8;
|
|
struct Sprite *unk2DC;
|
|
struct Sprite *unk2E0;
|
|
struct Sprite *unk2E4;
|
|
struct Sprite *unk2E8;
|
|
struct Sprite *unk2EC;
|
|
struct Sprite *unk2F0;
|
|
struct Sprite *unk2F4;
|
|
struct Sprite *unk2F8;
|
|
struct Sprite *unk2FC;
|
|
u16 unk300[BG_SCREEN_SIZE / 2];
|
|
u16 unkB00[BG_SCREEN_SIZE / 2];
|
|
};
|
|
|
|
struct EasyChatPhraseFrameDimensions
|
|
{
|
|
u8 left:5;
|
|
u8 top:3;
|
|
u8 width;
|
|
u8 height;
|
|
u8 footerId;
|
|
};
|
|
|
|
struct EasyChatWordInfo
|
|
{
|
|
const u8 *text;
|
|
int alphabeticalOrder;
|
|
int enabled;
|
|
};
|
|
|
|
typedef union
|
|
{
|
|
const u16 *valueList;
|
|
const struct EasyChatWordInfo *words;
|
|
} EasyChatGroupWordData;
|
|
|
|
struct EasyChatGroup
|
|
{
|
|
EasyChatGroupWordData wordData;
|
|
u16 numWords;
|
|
u16 numEnabledWords;
|
|
};
|
|
|
|
struct Unk203A120
|
|
{
|
|
u16 unk0;
|
|
u16 unk2[EC_NUM_GROUPS];
|
|
u16 unk2E[27];
|
|
u16 unk64[27][270];
|
|
u8 filler3958[0x2C];
|
|
u16 unk3984[0x10E];
|
|
u16 unk3BA0;
|
|
}; /*size = 0x3BA4*/
|
|
|
|
struct EasyChatWordsByLetter
|
|
{
|
|
const u16 *words;
|
|
int numWords;
|
|
};
|
|
|
|
void InitEasyChatPhrases(void);
|
|
void ShowEasyChatScreen(void);
|
|
u8 * CopyEasyChatWord(u8 *dest, u16 word);
|
|
bool32 sub_811F8D8(int word);
|
|
void InitializeEasyChatWordArray(u16 *words, u16 length);
|
|
u8 *ConvertEasyChatWordsToString(u8 *dest, const u16 *src, u16 columns, u16 rows);
|
|
bool8 ECWord_CheckIfOutsideOfValidRange(u16 word);
|
|
u16 sub_811EE38(u16 group);
|
|
u16 GetNewHipsterPhraseToTeach(void);
|
|
u16 EasyChat_GetNumWordsInGroup(u8);
|
|
u16 sub_811EE90(u16);
|
|
void DoEasyChatScreen(u8 type, u16 *words, MainCallback callback, u8 displayedPersonType);
|
|
void sub_811F8BC(void);
|
|
void UnlockAdditionalPhrase(u8 additionalPhraseId);
|
|
|
|
#endif // GUARD_EASYCHAT_H
|