mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
* rewritten to be able to dynamicly load it's components
- CLISetup -> checks for UtilityScripts (config, setup, dbc reader, etc.) -> checks for SetupScripts (individual sql/file generators)
- each step may now have a help prompt attached. If none are provided, the containing script may provide it's help.
- all Scripts are self contained modules. No more editing of 3+ files if some component is added/removed
* removed intermediaries FileGen & SqlGen
* functional changes
- allow providing CLI arguments to siteconfig and account UtilityScript and skip the interactive prompts
- set slot for consumable enchantment items so they are filtrable
- zones dataset is now localized and generated from GlobalStrings.lua and DungeonMap.dbc. Related data dumps removed.
- 'aowow' and 'prQueue' executables now have shebangs
WARNING - command line options have been renamed!
72 lines
2.4 KiB
PHP
72 lines
2.4 KiB
PHP
<?php
|
|
|
|
if (!defined('AOWOW_REVISION'))
|
|
die('illegal access');
|
|
|
|
if (!CLI)
|
|
die('not in cli mode');
|
|
|
|
|
|
CLISetup::registerSetup("build", new class extends SetupScript
|
|
{
|
|
protected $info = array(
|
|
'soundfiles' => [[], CLISetup::ARGV_PARAM, 'Links converted sound files to database and moves them to destination.']
|
|
);
|
|
|
|
protected $requiredDirs = ['static/wowsounds/'];
|
|
protected $setupAfter = [['sounds'], []];
|
|
|
|
public function generate() : bool
|
|
{
|
|
// ALL files
|
|
$files = DB::Aowow()->selectCol('SELECT ABS(id) AS ARRAY_KEY, CONCAT(path, "/", `file`) FROM ?_sounds_files');
|
|
$nFiles = count($files);
|
|
$qtLen = strlen($nFiles);
|
|
$sum = 0;
|
|
$time = new Timer(500);
|
|
|
|
foreach ($files as $fileId => $filePath)
|
|
{
|
|
$sum++;
|
|
if ($time->update())
|
|
{
|
|
CLI::write(sprintf('[soundfiles] * %'.$qtLen.'d / %d (%4.1f%%)', $sum, $nFiles, round(100 * $sum / $nFiles, 1)), CLI::LOG_BLANK, true, true);
|
|
DB::Aowow()->selectCell('SELECT 1'); // keep mysql busy or it may go away
|
|
}
|
|
|
|
// expect converted files as file.wav_ or file.mp3_
|
|
$filePath .= '_';
|
|
|
|
// just use the first locale available .. there is no support for multiple audio files anyway
|
|
foreach (CLISetup::$expectedPaths as $locStr => $__)
|
|
{
|
|
// get your paths straight!
|
|
$p = CLI::nicePath($filePath, CLISetup::$srcDir, $locStr);
|
|
|
|
if (CLISetup::fileExists($p))
|
|
{
|
|
// copy over to static/wowsounds/
|
|
if (!copy($p, 'static/wowsounds/'.$fileId))
|
|
{
|
|
$this->success = false;
|
|
CLI::write('[soundfiles] - could not copy '.CLI::bold($p).' into '.CLI::bold('static/wowsounds/'.$fileId), CLI::LOG_ERROR);
|
|
$time->reset();
|
|
break 2;
|
|
}
|
|
|
|
continue 2;
|
|
}
|
|
}
|
|
|
|
CLI::write('[soundfiles] - did not find file: '.CLI::bold(CLI::nicePath($filePath, CLISetup::$srcDir, '['.implode(',', CLISetup::$locales).']')), CLI::LOG_WARN);
|
|
$time->reset();
|
|
// flag as unusable in DB
|
|
DB::Aowow()->query('UPDATE ?_sounds_files SET id = ?d WHERE ABS(id) = ?d', -$fileId, $fileId);
|
|
}
|
|
|
|
return $this->success;
|
|
}
|
|
});
|
|
|
|
?>
|