mirror of
https://github.com/pret/pokeplatinum.git
synced 2026-03-21 17:55:13 -05:00
128 lines
6.1 KiB
C
128 lines
6.1 KiB
C
#ifndef POKEPLATINUM_JOURNAL_H
|
|
#define POKEPLATINUM_JOURNAL_H
|
|
|
|
#include "play_time.h"
|
|
#include "savedata.h"
|
|
#include "trainer_info.h"
|
|
|
|
#define MAX_JOURNAL_ENTRIES 10
|
|
|
|
#define POKEMON_CAUGHT 1
|
|
#define POKEMON_DEFEATED 2
|
|
|
|
#define MAX_JOURNAL_LOCATION_EVENTS 4
|
|
#define MAX_JOURNAL_ONLINE_EVENTS 2
|
|
|
|
enum JournalDataType {
|
|
JOURNAL_TITLE = 0,
|
|
JOURNAL_LOCATION,
|
|
JOURNAL_MON,
|
|
JOURNAL_TRAINER,
|
|
JOURNAL_ONLINE_EVENT,
|
|
};
|
|
|
|
typedef struct JournalEntryTitle {
|
|
u32 year : 7;
|
|
u32 month : 4;
|
|
u32 week : 3;
|
|
u32 day : 5;
|
|
u32 mapID : 13;
|
|
} JournalEntryTitle;
|
|
|
|
typedef struct JournalEntryLocationEvent {
|
|
u8 eventType;
|
|
u8 padding_01;
|
|
u16 locationID; // can be a mapID, a mapLabelTextID, or an index refering to a gym
|
|
u16 trainerID;
|
|
u16 item;
|
|
} JournalEntryLocationEvent;
|
|
|
|
typedef struct JournalEntryMon {
|
|
u8 battleResult;
|
|
u8 stringVariant : 2;
|
|
u8 timeOfDay : 4;
|
|
u8 gender : 2;
|
|
u16 species;
|
|
} JournalEntryMon;
|
|
|
|
typedef struct JournalEntryTrainer {
|
|
u16 standard : 1;
|
|
u16 trainerID : 15;
|
|
u16 mapID;
|
|
} JournalEntryTrainer;
|
|
|
|
typedef struct JournalEntryOnlineEvent {
|
|
u8 eventType;
|
|
u8 result : 4; // can be a battle result, the placement in a contest, or an index refering to a plaza minigame
|
|
u8 unused1 : 1;
|
|
u8 unused2 : 1;
|
|
u8 unused3 : 2;
|
|
u16 playerName1[TRAINER_NAME_LEN + 1];
|
|
u16 playerName2[TRAINER_NAME_LEN + 1];
|
|
u16 pokemonName[12];
|
|
} JournalEntryOnlineEvent;
|
|
|
|
typedef struct JournalEntry {
|
|
JournalEntryTitle title;
|
|
u32 locationEvents[MAX_JOURNAL_LOCATION_EVENTS];
|
|
JournalEntryMon mon;
|
|
JournalEntryTrainer trainer;
|
|
u8 onlineEvents[MAX_JOURNAL_ONLINE_EVENTS][42];
|
|
} JournalEntry;
|
|
|
|
int Journal_SaveSize(void);
|
|
void Journal_Init10(JournalEntry *journalEntry);
|
|
JournalEntry *SaveData_GetJournal(SaveData *saveData);
|
|
JournalEntry *Journal_GetSavedPage(JournalEntry *journalEntry, BOOL journalAcquired);
|
|
BOOL Journal_CheckOpenOnContinue(JournalEntry *journalEntry, BOOL journalAcquired);
|
|
void JournalEntry_SaveData(JournalEntry *journalEntry, void *data, u8 dataType);
|
|
void *JournalEntry_CreateTitle(u16 mapID, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventRestedAtHome(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventLeftResearchLab(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventUsedPCBox(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventShoppedAtMart(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventLotsOfShopping(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventSoldALittle(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventSoldALot(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventBusinessAtMart(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventGymTooTough(u16 defeatedGym, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventGymLeader(u16 trainerType, u16 trainerID, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventEliteFour(u16 trainerID, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventChampion(u16 trainerID, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventArrivedInLocation(u16 mapID, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventLeftCave(u16 mapLabelTextID, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventLeftBuilding(u16 mapLabelTextID, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventGameCorner(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventSafariGame(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventObtainedItem(u16 item, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventUsedMove(u8 moveIndex, u16 mapID, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventDugUnderground(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventBuiltSecretBase(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventBattleFacility(enum HeapID heapID, u32 eventType);
|
|
void *JournalEntry_CreateEventMonCaught(const PlayTime *playTime, u16 species, u8 gender, u8 timeOfDay, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventMonDefeated(const PlayTime *playTime, u16 species, u8 gender, u8 timeOfDay, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventStandardTrainer(u16 mapID, u16 trainerID, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventSingleBattle(u16 *opponentName, u8 opponentGender, u8 battleResult, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventDoubleBattle(u16 *opponentName, u8 opponentGender, u8 battleResult, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventMultiBattle(u16 *opponentName1, u16 *opponentName2, u8 opponentGender1, u8 opponentGender2, u8 battleResult, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventMixSingleBattle(u16 *opponentName, u8 opponentGender, u8 battleResult, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventGreetedInUnionRoom(u16 *trainerName, u8 trainerGender, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventGotPokemonFromTrade(u16 *otName, u8 otGender, u16 *pokemonName, u8 pokemonGender, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventDrewPictures(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventUnionBattle(u16 *opponentName, u8 opponentGender, u8 battleResult, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventMixedRecords(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventPlacedInContest(u8 placement, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventMadePoffins(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventGotPokemonGTS(u16 *otName, u8 otGender, u16 *pokemonName, u8 pokemonGender, enum HeapID heapID);
|
|
void *JournalEntry_CreateEventBattleRoom(enum HeapID heapID);
|
|
void *JournalEntry_CreateEventMisc(enum HeapID heapID, u32 eventType);
|
|
void *JournalEntry_CreateEventInteraction(const u16 *playerName, u8 playerGender, enum HeapID heapID, u32 eventType);
|
|
void *JournalEntry_CreateEventPlazaMinigame(int minigame, enum HeapID heapID, u32 eventType);
|
|
void JournalEntry_GetData(JournalEntry *journalEntry, void *dest, u8 dataType, u8 page);
|
|
void JournalEntry_CreateAndSaveEventMapTransition(TrainerInfo *trainerInfo, JournalEntry *journalEntry, u32 currMapID, u32 prevMapID, enum HeapID heapID);
|
|
u32 Journal_DoesBuildingUseExitedMessage(u32 mapLabelTextID);
|
|
void JournalEntry_CreateAndSaveEventArrivedInLocation(JournalEntry *journalEntry, u32 mapID, enum HeapID heapID);
|
|
void JournalEntry_CreateAndSaveEventTrainer(JournalEntry *journalEntry, u16 mapID, u16 trainerID, enum HeapID heapID);
|
|
|
|
#endif // POKEPLATINUM_JOURNAL_H
|