Core Rules
WoTC AD&D 2nd Edition -- Drakein API Reference
Loading...
Searching...
No Matches
IDatabase.h File Reference

Load, save, release, and dirty-query for the CoreRules in-memory data. More...

#include "API.h"

Namespaces

namespace  CoreRules

Functions

bool CoreRules::AnyDatabaseDirty ()
 Cross-table dirty query.
void CoreRules::ReleaseDatabases ()
 Free all in-memory CoreRules data.
Load (headless / silent overloads)
bool CoreRules::LoadDatabases ()
 Load all CoreRules databases using auto-resolved paths.
bool CoreRules::LoadDatabases (const char *pINI)
 Load all databases using paths from an explicit INI file.
bool CoreRules::LoadDatabases (const char *pCD, const char *pBase)
 Load all databases from explicit CD-ROM root + writable base.
Save (headless / silent overloads)
bool CoreRules::SaveDatabases ()
 Save every dirty database back to auto-resolved paths.
bool CoreRules::SaveDatabases (const char *pINI)
 Save every dirty database using paths from an INI file.
bool CoreRules::SaveDatabases (const char *pCD, const char *pBase)
 Save every dirty database to the explicit pBase path tree.
Load / Save (progress-aware overloads)

Pass an IProgress* implementation to receive per-phase callbacks (suitable for driving a splash-screen gauge or status text) and to support cancellation.

Pass nullptr to behave identically to the headless overloads above.

bool CoreRules::LoadDatabases (IProgress *progress)
bool CoreRules::LoadDatabases (const char *pINI, IProgress *progress)
bool CoreRules::LoadDatabases (const char *pCD, const char *pBase, IProgress *progress)
bool CoreRules::SaveDatabases (IProgress *progress)
bool CoreRules::SaveDatabases (const char *pINI, IProgress *progress)
bool CoreRules::SaveDatabases (const char *pCD, const char *pBase, IProgress *progress)

Detailed Description

Load, save, release, and dirty-query for the CoreRules in-memory data.

Three load / save overloads, mirroring the pattern from the original CoreRules.dll:

  • LoadDatabases() – registry-based on Windows; falls back to ~/.config/corerules.cfg on Linux.
  • LoadDatabases(const char* pINI) – explicit INI path, same key layout as the registry.
  • LoadDatabases(const char* pCD, const char* pBase) – explicit pCD (read-only, e.g. CD-ROM root) and pBase (writable user data root). Per-subdir fallback: pBase/<dir> first; pCD/<dir> if missing.

After a successful Load, the per-type Record globals are populated (CoreRules::Class_Record, CoreRules::Monster_Record, ... etc.). Consumers read/mutate via those globals. SaveDatabases writes back to the user-side paths; never touches base files. ReleaseDatabases frees all in-memory data and nulls the globals.

Canonical work-unit
LoadDatabases(...);
// ... do work, optional intermediate SaveDatabases() ...
SaveDatabases(...); // final flush
ReleaseDatabases(); // free everything

Returns true on success, false on failure (missing required dirs, parse errors, etc.).