Files
wx_wherigo/main/include/lua/wherigo_completion.h
2026-02-14 09:47:26 +01:00

67 lines
1.5 KiB
C++

#ifndef WHERIGO_COMPLETION_H
#define WHERIGO_COMPLETION_H
#include <string>
#include <vector>
#include <ctime>
extern "C" {
struct lua_State;
}
namespace wherigo {
struct CompletionData {
std::string cartridgeName;
std::string cartridgeGUID;
std::string playerName;
std::string completionCode;
time_t startTime;
time_t endTime;
int duration; // seconds
struct TaskCompletion {
std::string name;
bool completed;
time_t completionTime;
};
std::vector<TaskCompletion> tasks;
struct ItemFound {
std::string name;
time_t foundTime;
};
std::vector<ItemFound> items;
struct ZoneVisited {
std::string name;
time_t visitTime;
};
std::vector<ZoneVisited> zones;
};
class WherigoCompletion {
public:
// Generate completion log from current Lua state
static bool generateCompletionLog(lua_State* L, const std::string& filePath,
const std::string& playerName = "Player");
// Extract completion data from Lua state
static CompletionData extractCompletionData(lua_State* L, const std::string& playerName);
// Generate .gwl XML file
static bool writeGWLFile(const CompletionData& data, const std::string& filePath);
// Generate completion code (hash/signature)
static std::string generateCompletionCode(const CompletionData& data);
private:
static std::string escapeXML(const std::string& str);
static std::string formatTime(time_t t);
};
} // namespace wherigo
#endif // WHERIGO_COMPLETION_H