Search in sources :

Example 1 with UISkin

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());
        }
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) JsonElement(com.google.gson.JsonElement) UISkin(org.terasology.rendering.nui.skin.UISkin) JsonReader(com.google.gson.stream.JsonReader) JsonParser(com.google.gson.JsonParser)

Example 2 with UISkin

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);
        }
    }
}
Also used : Rect2i(org.terasology.math.geom.Rect2i) UISkin(org.terasology.rendering.nui.skin.UISkin) UIStyle(org.terasology.rendering.nui.skin.UIStyle) SubRegion(org.terasology.rendering.nui.SubRegion)

Example 3 with UISkin

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);
        }
    }
}
Also used : InputStreamReader(java.io.InputStreamReader) JsonTree(org.terasology.rendering.nui.widgets.treeView.JsonTree) UISkin(org.terasology.rendering.nui.skin.UISkin) AssetDataFile(org.terasology.assets.format.AssetDataFile) JsonReader(com.google.gson.stream.JsonReader) IOException(java.io.IOException) JsonParser(com.google.gson.JsonParser)

Example 4 with UISkin

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);
    }
}
Also used : UISkin(org.terasology.rendering.nui.skin.UISkin) AssetDataFile(org.terasology.assets.format.AssetDataFile)

Example 5 with UISkin

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);
    }
}
Also used : Rect2i(org.terasology.math.geom.Rect2i) UISkin(org.terasology.rendering.nui.skin.UISkin) UIStyle(org.terasology.rendering.nui.skin.UIStyle) Vector2i(org.terasology.math.geom.Vector2i) BaseVector2i(org.terasology.math.geom.BaseVector2i) SubRegion(org.terasology.rendering.nui.SubRegion)

Aggregations

UISkin (org.terasology.rendering.nui.skin.UISkin)7 JsonParser (com.google.gson.JsonParser)2 JsonReader (com.google.gson.stream.JsonReader)2 IOException (java.io.IOException)2 InputStreamReader (java.io.InputStreamReader)2 AssetDataFile (org.terasology.assets.format.AssetDataFile)2 Prefab (org.terasology.entitySystem.prefab.Prefab)2 PrefabData (org.terasology.entitySystem.prefab.PrefabData)2 PojoPrefab (org.terasology.entitySystem.prefab.internal.PojoPrefab)2 BehaviorTree (org.terasology.logic.behavior.asset.BehaviorTree)2 BehaviorTreeData (org.terasology.logic.behavior.asset.BehaviorTreeData)2 UIData (org.terasology.rendering.nui.asset.UIData)2 UIElement (org.terasology.rendering.nui.asset.UIElement)2 UISkinData (org.terasology.rendering.nui.skin.UISkinData)2 DefaultBlockFamilyFactoryRegistry (org.terasology.world.block.family.DefaultBlockFamilyFactoryRegistry)2 BlockFamilyDefinition (org.terasology.world.block.loader.BlockFamilyDefinition)2 BlockFamilyDefinitionData (org.terasology.world.block.loader.BlockFamilyDefinitionData)2 BlockFamilyDefinitionFormat (org.terasology.world.block.loader.BlockFamilyDefinitionFormat)2 BlockShape (org.terasology.world.block.shapes.BlockShape)2 BlockShapeData (org.terasology.world.block.shapes.BlockShapeData)2