You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
60 lines
1.8 KiB
60 lines
1.8 KiB
/** |
|
* @file pfile.h |
|
* |
|
* Interface of the save game encoding functionality. |
|
*/ |
|
#pragma once |
|
|
|
#include "DiabloUI/diabloui.h" |
|
#include "player.h" |
|
|
|
namespace devilution { |
|
|
|
#define MAX_CHARACTERS 99 |
|
|
|
extern bool gbValidSaveFile; |
|
|
|
/** |
|
* @brief Comparsion result of pfile_compare_hero_demo |
|
*/ |
|
struct HeroCompareResult { |
|
enum Status { |
|
ReferenceNotFound, |
|
Same, |
|
Difference, |
|
}; |
|
Status status; |
|
std::string message; |
|
}; |
|
|
|
std::optional<MpqArchive> OpenSaveArchive(uint32_t saveNum); |
|
std::optional<MpqArchive> OpenStashArchive(); |
|
const char *pfile_get_password(); |
|
std::unique_ptr<byte[]> ReadArchive(MpqArchive &archive, const char *pszName, size_t *pdwLen = nullptr); |
|
void pfile_write_hero(bool writeGameData = false); |
|
/** |
|
* @brief Save a reference game-state (save game) for the demo recording |
|
* @param demo that is recorded |
|
*/ |
|
void pfile_write_hero_demo(int demo); |
|
/** |
|
* @brief Compares the actual game-state (savegame) with a reference game-state (save game from demo recording) |
|
* @param demo for the comparsion |
|
* @param logDetails in case of a difference log details |
|
* @return The comparsion result. |
|
*/ |
|
HeroCompareResult pfile_compare_hero_demo(int demo, bool logDetails); |
|
void sfile_write_stash(); |
|
bool pfile_ui_set_hero_infos(bool (*uiAddHeroInfo)(_uiheroinfo *)); |
|
void pfile_ui_set_class_stats(unsigned int playerClass, _uidefaultstats *classStats); |
|
uint32_t pfile_ui_get_first_unused_save_num(); |
|
bool pfile_ui_save_create(_uiheroinfo *heroinfo); |
|
bool pfile_delete_save(_uiheroinfo *heroInfo); |
|
void pfile_read_player_from_save(uint32_t saveNum, Player &player); |
|
void pfile_save_level(); |
|
void pfile_convert_levels(); |
|
void pfile_remove_temp_files(); |
|
std::unique_ptr<byte[]> pfile_read(const char *pszName, size_t *pdwLen); |
|
void pfile_update(bool forceSave); |
|
|
|
} // namespace devilution
|
|
|