Enable font deserialization
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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> {
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user