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;
|
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.config.ProjectConfiguration;
|
||||||
import com.bartlomiejpluta.base.engine.project.model.Project;
|
import com.bartlomiejpluta.base.engine.project.model.Project;
|
||||||
import com.bartlomiejpluta.base.engine.project.serial.ProjectDeserializer;
|
import com.bartlomiejpluta.base.engine.project.serial.ProjectDeserializer;
|
||||||
@@ -20,6 +21,7 @@ public class DefaultProjectLoader implements ProjectLoader {
|
|||||||
private final MapManager mapManager;
|
private final MapManager mapManager;
|
||||||
private final ImageManager imageManager;
|
private final ImageManager imageManager;
|
||||||
private final EntitySetManager entitySetManager;
|
private final EntitySetManager entitySetManager;
|
||||||
|
private final FontManager fontManager;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Project loadProject() {
|
public Project loadProject() {
|
||||||
@@ -29,6 +31,7 @@ public class DefaultProjectLoader implements ProjectLoader {
|
|||||||
project.getMapAssets().forEach(mapManager::registerAsset);
|
project.getMapAssets().forEach(mapManager::registerAsset);
|
||||||
project.getImageAssets().forEach(imageManager::registerAsset);
|
project.getImageAssets().forEach(imageManager::registerAsset);
|
||||||
project.getEntitySetAssets().forEach(entitySetManager::registerAsset);
|
project.getEntitySetAssets().forEach(entitySetManager::registerAsset);
|
||||||
|
project.getFontAssets().forEach(fontManager::registerAsset);
|
||||||
|
|
||||||
return project;
|
return project;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.bartlomiejpluta.base.engine.project.model;
|
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.entity.asset.EntitySetAsset;
|
||||||
import com.bartlomiejpluta.base.engine.world.image.asset.ImageAsset;
|
import com.bartlomiejpluta.base.engine.world.image.asset.ImageAsset;
|
||||||
import com.bartlomiejpluta.base.engine.world.map.asset.GameMapAsset;
|
import com.bartlomiejpluta.base.engine.world.map.asset.GameMapAsset;
|
||||||
@@ -31,4 +32,7 @@ public class Project {
|
|||||||
|
|
||||||
@NonNull
|
@NonNull
|
||||||
private final List<EntitySetAsset> entitySetAssets;
|
private final List<EntitySetAsset> entitySetAssets;
|
||||||
|
|
||||||
|
@NonNull
|
||||||
|
private final List<FontAsset> fontAssets;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package com.bartlomiejpluta.base.engine.project.serial;
|
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.project.model.Project;
|
||||||
import com.bartlomiejpluta.base.engine.world.entity.asset.EntitySetAsset;
|
import com.bartlomiejpluta.base.engine.world.entity.asset.EntitySetAsset;
|
||||||
import com.bartlomiejpluta.base.engine.world.image.asset.ImageAsset;
|
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 mapAssets = proto.getMapsList().stream().map(this::parseGameMapAsset).collect(toList());
|
||||||
var imageAssets = proto.getImagesList().stream().map(this::parseImageAsset).collect(toList());
|
var imageAssets = proto.getImagesList().stream().map(this::parseImageAsset).collect(toList());
|
||||||
var entitySetAssets = proto.getEntitySetsList().stream().map(this::parseEntitySetAsset).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) {
|
private TileSetAsset parseTileSetAsset(ProjectProto.TileSetAsset proto) {
|
||||||
@@ -43,4 +45,8 @@ public class ProtobufProjectDeserializer extends ProjectDeserializer {
|
|||||||
private EntitySetAsset parseEntitySetAsset(ProjectProto.EntitySetAsset proto) {
|
private EntitySetAsset parseEntitySetAsset(ProjectProto.EntitySetAsset proto) {
|
||||||
return new EntitySetAsset(proto.getUid(), proto.getSource(), proto.getRows(), proto.getColumns());
|
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