Introduce data packs

This commit is contained in:
Sky Johnson 2024-07-12 22:29:34 -05:00
parent 0cdb25029f
commit 2e6e492778
3 changed files with 21 additions and 6 deletions

View File

@ -1,4 +1,10 @@
## /server/database
This README is here to allow git to keep this folder present in the repo.
The SQLite database for the game is generated into this folder, and PDO
will not create the path TO the SQLite database.
## Database
This folder serves as the home for the game's database; `dragon.db` by default. This is a WAL- and foreign key-enabled SQLite database wrapped in a very thin class based on the PDO wrapper in PHP. In production, the `dragon.db` file will be created if it doesn't exist, and the installer should be used to populate the database. This file does not exist in the repo.
### Packs
New to Dragon Knight is the ability to upload "data packs" to the game! Using this feature, it is possible to upload and store `.zip` files that contain `.csv` files (spreadsheets) of data for the game. These spreadsheets must have a 1:1 structure to what's expected in Dragon Knight. This allows an admin to populate the game data quickly and easily with data they either make or get from someone else.
The `Default.zip` data pack is the default data used when doing a **Complete** install of Dragon Knight. You can edit this before running the installer to change the default data. You can also use it as a template for your own data packs!
### Installation
When performing a **Complete** install, the installer will look for and use the `Default.zip` data pack if it exists. If not, the installer will error. When performing a **Partial** install, the installer itself will insert the bare minimum data needed (at the moment this is a single class, "Adventurer") to create a user account, and data can be added in the admin panel afterwards.

Binary file not shown.

View File

@ -25,7 +25,7 @@ class InstallModule
$istart = microtime(true); // time the database setup
if (!isset($_POST['mode'])) redirect('/install'); // redirect if no mode
$complete = $_POST['mode'] == 'complete'; // complete or partial setup
$resFmt = '%s <span class="extra-data">(%fs)</span><br />';
$resFmt = '%s <span class="extra-data">(%ss)</span><br />';
$results = '';
@ -63,7 +63,7 @@ class InstallModule
start_str INT DEFAULT 0,
start_atk INT DEFAULT 0,
start_dex INT DEFAULT 0,
start_def INT DEFAULT 0
start_def INT DEFAULT 0,
growth_hp INT DEFAULT 0,
growth_mp INT DEFAULT 0,
growth_str INT DEFAULT 0,
@ -97,5 +97,14 @@ class InstallModule
);");
$results .= sprintf($resFmt, 'Babble table created', stopwatch($istart));
// @Drops
App::$db->q("CREATE TABLE IF NOT EXISTS drops (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
level INTEGER DEFAULT 1,
type INTEGER DEFAULT 1,
attr TEXT DEFAULT ''
);");
}
}