Initial commit: Complete open-source Decal rebuild
All 5 phases of the open-source Decal rebuild: Phase 1: 14 decompiled .NET projects (Interop.*, Adapter, FileService, DecalUtil) Phase 2: 10 native DLLs rewritten as C# COM servers with matching GUIDs - DecalDat, DHS, SpellFilter, DecalInput, DecalNet, DecalFilters - Decal.Core, DecalControls, DecalRender, D3DService Phase 3: C++ shims for Inject.DLL (D3D9 hooking) and LauncherHook.DLL Phase 4: DenAgent WinForms tray application Phase 5: WiX installer and build script 25 C# projects building with 0 errors. Native C++ projects require VS 2022 + Windows SDK (x86). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
commit
d1442e3747
1382 changed files with 170725 additions and 0 deletions
70
Native/DenAgent/AutoUpdate.h
Normal file
70
Native/DenAgent/AutoUpdate.h
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
#ifndef __AUTOUPDATE_H__
|
||||
#define __AUTOUPDATE_H__
|
||||
|
||||
class DownloadAgent {
|
||||
public:
|
||||
static bool downloadFile(std::string remoteFile, std::string localFile);
|
||||
|
||||
DownloadAgent();
|
||||
|
||||
void scheduleDownload(std::string remoteFile, std::string localFile);
|
||||
bool runDownloads();
|
||||
|
||||
private:
|
||||
struct DownloadSlot {
|
||||
std::string remoteFile, localFile;
|
||||
};
|
||||
|
||||
std::list<DownloadSlot> m_ScheduledDownloads;
|
||||
};
|
||||
|
||||
enum AutoUpdateType {
|
||||
AU_TYPE_XML,
|
||||
AU_TYPE_DLL,
|
||||
AU_TYPE_BETADLL
|
||||
};
|
||||
|
||||
class UpdateRequirement
|
||||
{
|
||||
public:
|
||||
UpdateRequirement(std::string File, std::string Version):
|
||||
sFile(File), sVers(Version) { }
|
||||
std::string sFile;
|
||||
std::string sVers;
|
||||
};
|
||||
|
||||
class AutoUpdateSource {
|
||||
public:
|
||||
AutoUpdateSource(std::string decalPath, AutoUpdateType type, std::string localTarget, std::string remoteSource, std::string requiredVersion);
|
||||
|
||||
bool needsUpdating();
|
||||
std::string getSource();
|
||||
std::string getDestination();
|
||||
AutoUpdateType getType();
|
||||
bool isOutDatedVersion(std::string sFile, int nMajor, int nMinor, int nPatch, int nBuild);
|
||||
void AddRequirement(UpdateRequirement reqUpdate);
|
||||
|
||||
private:
|
||||
std::string m_LocalTarget;
|
||||
std::string m_RemoteSource;
|
||||
std::string m_RequiredVersion;
|
||||
std::string m_DecalDir;
|
||||
AutoUpdateType m_Type;
|
||||
std::vector<UpdateRequirement> m_Requirements;
|
||||
};
|
||||
|
||||
class AutoUpdate {
|
||||
public:
|
||||
AutoUpdate(std::string decalDir);
|
||||
|
||||
bool initialiseFromXML(std::string remoteXML);
|
||||
bool needsUpdate();
|
||||
bool performUpdate();
|
||||
|
||||
private:
|
||||
std::string m_LocalXML, m_RemoteXML;
|
||||
std::string m_DecalDir;
|
||||
std::list<AutoUpdateSource> m_RemoteSources;
|
||||
};
|
||||
|
||||
#endif
|
||||
Loading…
Add table
Add a link
Reference in a new issue