/** * @param CContinent[] $continents * @param StringsManager $sm * @param string $outFile */ protected function buildLabels(array $continents, StringsManager $sm, $outFile) { $strings = $sm->getStrings('place'); $json = array(); foreach ($continents as $cont) { $labels = array(); $result = $this->filterContLabel($cont, $strings); if ($result) { list($key, $label) = $result; $labels[$key] = $label; } foreach ($cont->ContLandMarks as $lm) { $result = $this->filterLabel($lm, $strings); if ($result) { list($key, $label) = $result; if (in_array($key, array('region_matis_island_1', 'region_matis_island_2'))) { // there is no 'continent' text for Almati and Dantes, so make one up // also move region text up a bit or it conflicts other text $label['pos'][1] += 100; $contlabel = $label; $contlabel['lmtype'] = -1; $contlabel['regionforce'] = 0; $labels[$key . '_cont'] = $contlabel; } $labels[$key] = $label; } } $json[$cont->Name] = $labels; } file_put_contents($outFile, json_encode($json, JSON_UNESCAPED_UNICODE | JSON_PRETTY_PRINT)); }
<?php use Nel\Misc\BnpFile; use Ryzom\Sheets\PackedSheetsLoader; use Ryzom\Translation\Loader\UxtLoader; use Ryzom\Translation\Loader\WordsLoader; use Ryzom\Translation\StringsManager; require __DIR__ . '/../vendor/autoload.php'; $sm = new StringsManager(); $sm->register(new UxtLoader()); $sm->register(new WordsLoader()); $leveldesign = new BnpFile('/srv/home2/ryzom/data/gamedev.bnp'); // loading en.uxt file $buffer = $leveldesign->readFile('en.uxt'); $sm->load('uxt', $buffer, 'en'); $strings = $sm->getStrings('uxt', 'en'); // all keys are in lowercase $key = 'languagename'; $value = $strings[$key]; printf("%s = [%s]\n", $key, $value['name']); // loading outpost_words_en.txt $buffer = $leveldesign->readFile('outpost_words_en.txt'); $sm->load('outpost', $buffer, 'en'); $strings = $sm->getStrings('outpost', 'en'); $key = 'fyros_outpost_04'; $value = $strings[$key]; printf("%s\n name = %s\n description = %s\n", $key, $value['name'], $value['description']); /*****************************************************************************/ echo "\n"; $psLoader = new PackedSheetsLoader('/srv/home2/ryzom/data'); printf("+ loading sitem.packed_sheets file...\n");