Enable font deserialization

This commit is contained in:
2021-03-09 23:01:43 +01:00
parent cf0e164513
commit 454c8278f3
6 changed files with 61 additions and 1 deletions

View File

@@ -0,0 +1,11 @@
package com.bartlomiejpluta.base.engine.gui.font.asset;
import com.bartlomiejpluta.base.engine.common.asset.Asset;
import lombok.NonNull;
public class FontAsset extends Asset {
public FontAsset(@NonNull String uid, @NonNull String source) {
super(uid, source);
}
}

View File

@@ -0,0 +1,29 @@
package com.bartlomiejpluta.base.engine.gui.font.manager;
import com.bartlomiejpluta.base.engine.gui.font.asset.FontAsset;
import com.bartlomiejpluta.base.engine.world.tileset.asset.TileSetAsset;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Component
public class DefaultFontManager implements FontManager {
private final Map<String, TileSetAsset> assets = new HashMap<>();
@Override
public void registerAsset(FontAsset asset) {
log.info("Registering [{}] font asset under UID: [{}]", asset.getSource(), asset.getUid());
}
@Override
public Integer loadObject(String uid) {
// TODO(Implement some kind of font object)
// The method should return useful resource associated with the font
// that can be easily consumed by NanoVG.
// Likely it will be just integer with a unique font ID.
return null;
}
}

View File

@@ -0,0 +1,7 @@
package com.bartlomiejpluta.base.engine.gui.font.manager;
import com.bartlomiejpluta.base.engine.common.manager.AssetManager;
import com.bartlomiejpluta.base.engine.gui.font.asset.FontAsset;
public interface FontManager extends AssetManager<FontAsset, Integer> {
}

View File

@@ -1,5 +1,6 @@
package com.bartlomiejpluta.base.engine.project.loader;
import com.bartlomiejpluta.base.engine.gui.font.manager.FontManager;
import com.bartlomiejpluta.base.engine.project.config.ProjectConfiguration;
import com.bartlomiejpluta.base.engine.project.model.Project;
import com.bartlomiejpluta.base.engine.project.serial.ProjectDeserializer;
@@ -20,6 +21,7 @@ public class DefaultProjectLoader implements ProjectLoader {
private final MapManager mapManager;
private final ImageManager imageManager;
private final EntitySetManager entitySetManager;
private final FontManager fontManager;
@Override
public Project loadProject() {
@@ -29,6 +31,7 @@ public class DefaultProjectLoader implements ProjectLoader {
project.getMapAssets().forEach(mapManager::registerAsset);
project.getImageAssets().forEach(imageManager::registerAsset);
project.getEntitySetAssets().forEach(entitySetManager::registerAsset);
project.getFontAssets().forEach(fontManager::registerAsset);
return project;
}

View File

@@ -1,5 +1,6 @@
package com.bartlomiejpluta.base.engine.project.model;
import com.bartlomiejpluta.base.engine.gui.font.asset.FontAsset;
import com.bartlomiejpluta.base.engine.world.entity.asset.EntitySetAsset;
import com.bartlomiejpluta.base.engine.world.image.asset.ImageAsset;
import com.bartlomiejpluta.base.engine.world.map.asset.GameMapAsset;
@@ -31,4 +32,7 @@ public class Project {
@NonNull
private final List<EntitySetAsset> entitySetAssets;
@NonNull
private final List<FontAsset> fontAssets;
}

View File

@@ -1,5 +1,6 @@
package com.bartlomiejpluta.base.engine.project.serial;
import com.bartlomiejpluta.base.engine.gui.font.asset.FontAsset;
import com.bartlomiejpluta.base.engine.project.model.Project;
import com.bartlomiejpluta.base.engine.world.entity.asset.EntitySetAsset;
import com.bartlomiejpluta.base.engine.world.image.asset.ImageAsset;
@@ -24,8 +25,9 @@ public class ProtobufProjectDeserializer extends ProjectDeserializer {
var mapAssets = proto.getMapsList().stream().map(this::parseGameMapAsset).collect(toList());
var imageAssets = proto.getImagesList().stream().map(this::parseImageAsset).collect(toList());
var entitySetAssets = proto.getEntitySetsList().stream().map(this::parseEntitySetAsset).collect(toList());
var fontAssets = proto.getFontsList().stream().map(this::parseFontAsset).collect(toList());
return new Project(name, runner, tileSetAssets, mapAssets, imageAssets, entitySetAssets);
return new Project(name, runner, tileSetAssets, mapAssets, imageAssets, entitySetAssets, fontAssets);
}
private TileSetAsset parseTileSetAsset(ProjectProto.TileSetAsset proto) {
@@ -43,4 +45,8 @@ public class ProtobufProjectDeserializer extends ProjectDeserializer {
private EntitySetAsset parseEntitySetAsset(ProjectProto.EntitySetAsset proto) {
return new EntitySetAsset(proto.getUid(), proto.getSource(), proto.getRows(), proto.getColumns());
}
private FontAsset parseFontAsset(ProjectProto.FontAsset proto) {
return new FontAsset(proto.getUid(), proto.getSource());
}
}