1package com.osroyale.fs.cache.decoder;
3import com.osroyale.fs.cache.FileSystem;
4import com.osroyale.fs.cache.archive.Archive;
5import com.osroyale.game.world.region.RegionDefinition;
6import org.apache.logging.log4j.LogManager;
7import org.apache.logging.log4j.Logger;
9import java.nio.ByteBuffer;
39* A
class which parses {@link RegionDefinition}s
41 * @author Ryley Kimmel <ryley.kimmel@live.com>
42 * @author Artem Batutin <artembatutin@gmail.com>
44public final class MapDefinitionDecoder
implements Runnable {
47 private final static Logger LOGGER = LogManager.getLogger(MapDefinitionDecoder.class);
50 private final FileSystem fs;
57 public MapDefinitionDecoder(FileSystem fs) {
63 LOGGER.info(
"Loading region definitions.");
64 Archive archive = fs.getArchive(FileSystem.MANIFEST_ARCHIVE);
65 ByteBuffer buffer = archive.getData(
"map_index");
66 int count = (buffer.getShort() & 0xFFFF);
67 for (
int i = 0; i < count; i++) {
68 int hash = buffer.getShort() & 0xFFFF;
69 int terrainFile = buffer.getShort() & 0xFFFF;
70 int objectFile = buffer.getShort() & 0xFFFF;
71 RegionDefinition.set(
new RegionDefinition(hash, terrainFile, objectFile));
73 LOGGER.info(
"Loaded " + count +
" region definitions.");