use of org.terasology.rendering.nui.skin.UISkin in project Terasology by MovingBlocks.
the class UIDeltaFormat method apply.
@Override
public void apply(AssetDataFile input, UIData assetData) throws IOException {
try (JsonReader reader = new JsonReader(new InputStreamReader(input.openStream(), Charsets.UTF_8))) {
JsonElement jsonElement = new JsonParser().parse(reader);
String skinUri = jsonElement.getAsJsonObject().get("skin").getAsString();
String filePath = input.toString();
String moduleName = filePath.substring(1, filePath.indexOf('/', 1));
Optional<UISkin> skin = Assets.getSkin(moduleName + ":" + skinUri);
if (skin.isPresent()) {
assetData.getRootWidget().setSkin(skin.get());
} else {
logger.warn("Failed to load skin " + skinUri + " for the delta file " + input.getFilename());
}
}
}
use of org.terasology.rendering.nui.skin.UISkin in project Terasology by MovingBlocks.
the class CanvasImpl method drawWidget.
@Override
public void drawWidget(UIWidget element, Rect2i region) {
if (element == null || !element.isVisible()) {
return;
}
if (nuiManager.getFocus() == element) {
focusDrawn = true;
}
String family = (element.getFamily() != null) ? element.getFamily() : state.family;
UISkin skin = (element.getSkin() != null) ? element.getSkin() : state.skin;
UIStyle newStyle = skin.getStyleFor(family, element.getClass(), UIWidget.BASE_PART, element.getMode());
Rect2i regionArea;
try (SubRegion ignored = subRegionForWidget(element, region, false)) {
regionArea = applyStyleToSize(region, newStyle, calculateMaximumSize(element));
}
try (SubRegion ignored = subRegionForWidget(element, regionArea, false)) {
if (element.isSkinAppliedByCanvas()) {
drawBackground();
try (SubRegion withMargin = subRegionForWidget(element, newStyle.getMargin().shrink(Rect2i.createFromMinAndSize(Vector2i.zero(), regionArea.size())), false)) {
drawStyledWidget(element);
}
} else {
drawStyledWidget(element);
}
}
}
use of org.terasology.rendering.nui.skin.UISkin in project Terasology by MovingBlocks.
the class NUISkinEditorScreen method selectAsset.
/**
* {@inheritDoc}
*/
@Override
public void selectAsset(ResourceUrn urn) {
boolean isLoaded = assetManager.isLoaded(urn, UISkin.class);
Optional<UISkin> asset = assetManager.getAsset(urn, UISkin.class);
if (asset.isPresent()) {
UISkin skin = asset.get();
if (!isLoaded) {
asset.get().dispose();
}
AssetDataFile source = skin.getSource();
String content = null;
try (JsonReader reader = new JsonReader(new InputStreamReader(source.openStream(), Charsets.UTF_8))) {
reader.setLenient(true);
content = new JsonParser().parse(reader).toString();
} catch (IOException e) {
logger.error(String.format("Could not load asset source file for %s", urn.toString()), e);
}
if (content != null) {
JsonTree node = JsonTreeConverter.serialize(new JsonParser().parse(content));
selectedAssetPending = urn.toString();
resetState(node);
}
}
}
use of org.terasology.rendering.nui.skin.UISkin in project Terasology by MovingBlocks.
the class NUISkinEditorScreen method setSelectedAssetPath.
/**
* {@inheritDoc}
*/
@Override
protected void setSelectedAssetPath(ResourceUrn urn) {
boolean isLoaded = assetManager.isLoaded(urn, UISkin.class);
Optional<UISkin> asset = assetManager.getAsset(urn, UISkin.class);
if (asset.isPresent()) {
UISkin skin = asset.get();
if (!isLoaded) {
asset.get().dispose();
}
AssetDataFile source = skin.getSource();
selectedAssetPath = getPath(source);
}
}
use of org.terasology.rendering.nui.skin.UISkin in project Terasology by MovingBlocks.
the class CanvasImpl method calculateRestrictedSize.
@Override
public Vector2i calculateRestrictedSize(UIWidget widget, Vector2i sizeRestrictions) {
if (widget == null) {
return sizeRestrictions;
}
String family = (widget.getFamily() != null) ? widget.getFamily() : state.family;
UISkin skin = (widget.getSkin() != null) ? widget.getSkin() : state.skin;
UIStyle elementStyle = skin.getStyleFor(family, widget.getClass(), UIWidget.BASE_PART, widget.getMode());
Rect2i region = applyStyleToSize(Rect2i.createFromMinAndSize(Vector2i.zero(), sizeRestrictions), elementStyle);
try (SubRegion ignored = subRegionForWidget(widget, region, false)) {
Vector2i preferredSize = widget.getPreferredContentSize(this, elementStyle.getMargin().shrink(sizeRestrictions));
preferredSize = elementStyle.getMargin().grow(preferredSize);
return applyStyleToSize(preferredSize, elementStyle);
}
}
Aggregations