update button, add boombox demo
All checks were successful
/ Auto-Build-App (push) Successful in 1m32s
All checks were successful
/ Auto-Build-App (push) Successful in 1m32s
This commit is contained in:
parent
795204e41b
commit
76fdb4130f
10 changed files with 264 additions and 35 deletions
|
@ -7,6 +7,7 @@ import finalforeach.cosmicreach.GameAssetLoader;
|
||||||
import finalforeach.cosmicreach.blockevents.BlockEvents;
|
import finalforeach.cosmicreach.blockevents.BlockEvents;
|
||||||
import finalforeach.cosmicreach.blocks.Block;
|
import finalforeach.cosmicreach.blocks.Block;
|
||||||
import finalforeach.cosmicreach.items.ItemThing;
|
import finalforeach.cosmicreach.items.ItemThing;
|
||||||
|
import net.pietru.omni_power.blockevents.OpenCustomUI;
|
||||||
import net.pietru.omni_power.blockevents.Power;
|
import net.pietru.omni_power.blockevents.Power;
|
||||||
import dev.crmodders.cosmicquilt.api.entrypoint.ModInitializer;
|
import dev.crmodders.cosmicquilt.api.entrypoint.ModInitializer;
|
||||||
import net.pietru.omni_power.blocks.CustomUIBlockEntity;
|
import net.pietru.omni_power.blocks.CustomUIBlockEntity;
|
||||||
|
@ -31,7 +32,8 @@ public class OmniPower implements ModInitializer {
|
||||||
"door_cube",
|
"door_cube",
|
||||||
"cable_merger",
|
"cable_merger",
|
||||||
"cable_adapter",
|
"cable_adapter",
|
||||||
"custom_crate"
|
"custom_crate",
|
||||||
|
"custom_boombox"
|
||||||
};
|
};
|
||||||
|
|
||||||
public static Map<String,JsonValue> uis = new HashMap<>();
|
public static Map<String,JsonValue> uis = new HashMap<>();
|
||||||
|
@ -69,11 +71,13 @@ public class OmniPower implements ModInitializer {
|
||||||
|
|
||||||
load_custom_ui("omni_power:gui/example.json");
|
load_custom_ui("omni_power:gui/example.json");
|
||||||
load_custom_ui("omni_power:gui/example2.json");
|
load_custom_ui("omni_power:gui/example2.json");
|
||||||
|
load_custom_ui("omni_power:gui/example-boombox.json");
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void load_power_event(){
|
public static void load_power_event(){
|
||||||
try {
|
try {
|
||||||
BlockEvents.registerBlockEventAction(Power.class);
|
BlockEvents.registerBlockEventAction(Power.class);
|
||||||
|
BlockEvents.registerBlockEventAction(OpenCustomUI.class);
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
System.out.println(e);
|
System.out.println(e);
|
||||||
System.out.println("If msg above says something Duplicate block event action key it might be intended behaviour...");
|
System.out.println("If msg above says something Duplicate block event action key it might be intended behaviour...");
|
||||||
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
package net.pietru.omni_power.blockevents;
|
||||||
|
|
||||||
|
import com.badlogic.gdx.utils.Array;
|
||||||
|
import finalforeach.cosmicreach.blockentities.BlockEntity;
|
||||||
|
import finalforeach.cosmicreach.blockevents.BlockEventArgs;
|
||||||
|
import finalforeach.cosmicreach.blockevents.BlockEventTrigger;
|
||||||
|
import finalforeach.cosmicreach.blockevents.actions.ActionId;
|
||||||
|
import finalforeach.cosmicreach.blockevents.actions.IBlockAction;
|
||||||
|
import finalforeach.cosmicreach.blocks.BlockPosition;
|
||||||
|
import finalforeach.cosmicreach.blocks.BlockState;
|
||||||
|
import finalforeach.cosmicreach.items.containers.SlotContainer;
|
||||||
|
import finalforeach.cosmicreach.world.Zone;
|
||||||
|
import net.pietru.omni_power.OmniPower;
|
||||||
|
import net.pietru.omni_power.api.IPowerClient;
|
||||||
|
import net.pietru.omni_power.api.IPowerProducer;
|
||||||
|
import net.pietru.omni_power.ui.CustomScreen;
|
||||||
|
import net.pietru.omni_power.ui.DummyObject;
|
||||||
|
|
||||||
|
@ActionId(id = OmniPower.MOD_ID+":open_ui")
|
||||||
|
public class OpenCustomUI implements IBlockAction {
|
||||||
|
public static boolean block_entities = false;
|
||||||
|
|
||||||
|
public String ui_id;
|
||||||
|
public int slots;
|
||||||
|
|
||||||
|
public OpenCustomUI(){
|
||||||
|
block_entities=OmniPower.block_entities;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void act(BlockEventArgs args) {
|
||||||
|
DummyObject tmp = new DummyObject();
|
||||||
|
tmp.srcBlockState=args.srcBlockState;
|
||||||
|
tmp.blockEventTrigger=args.blockEventTrigger;
|
||||||
|
tmp.zone=args.zone;
|
||||||
|
tmp.blockPos=args.blockPos;
|
||||||
|
tmp.srcIdentity=args.srcIdentity;
|
||||||
|
tmp.ui_id=ui_id;
|
||||||
|
tmp.container=new SlotContainer(slots);
|
||||||
|
CustomScreen.addOpenContainer(tmp,tmp.container);
|
||||||
|
}
|
||||||
|
}
|
|
@ -6,6 +6,10 @@ import com.badlogic.gdx.scenes.scene2d.ui.*;
|
||||||
import com.badlogic.gdx.scenes.scene2d.utils.NinePatchDrawable;
|
import com.badlogic.gdx.scenes.scene2d.utils.NinePatchDrawable;
|
||||||
import com.badlogic.gdx.utils.JsonValue;
|
import com.badlogic.gdx.utils.JsonValue;
|
||||||
import finalforeach.cosmicreach.GameAssetLoader;
|
import finalforeach.cosmicreach.GameAssetLoader;
|
||||||
|
import finalforeach.cosmicreach.blockevents.BlockEventArgs;
|
||||||
|
import finalforeach.cosmicreach.blockevents.BlockEventTrigger;
|
||||||
|
import finalforeach.cosmicreach.blocks.BlockPosition;
|
||||||
|
import finalforeach.cosmicreach.blocks.BlockState;
|
||||||
import finalforeach.cosmicreach.gamestates.InGame;
|
import finalforeach.cosmicreach.gamestates.InGame;
|
||||||
import finalforeach.cosmicreach.items.ISlotContainerParent;
|
import finalforeach.cosmicreach.items.ISlotContainerParent;
|
||||||
import finalforeach.cosmicreach.items.ItemSlot;
|
import finalforeach.cosmicreach.items.ItemSlot;
|
||||||
|
@ -14,6 +18,7 @@ import finalforeach.cosmicreach.items.screens.BaseItemScreen;
|
||||||
import finalforeach.cosmicreach.savelib.utils.TriConsumer;
|
import finalforeach.cosmicreach.savelib.utils.TriConsumer;
|
||||||
import finalforeach.cosmicreach.ui.UI;
|
import finalforeach.cosmicreach.ui.UI;
|
||||||
import finalforeach.cosmicreach.ui.widgets.ItemSlotWidget;
|
import finalforeach.cosmicreach.ui.widgets.ItemSlotWidget;
|
||||||
|
import finalforeach.cosmicreach.world.Zone;
|
||||||
import net.pietru.omni_power.OmniPower;
|
import net.pietru.omni_power.OmniPower;
|
||||||
import net.pietru.omni_power.blocks.CustomUIBlockEntity;
|
import net.pietru.omni_power.blocks.CustomUIBlockEntity;
|
||||||
|
|
||||||
|
@ -25,11 +30,11 @@ import static net.pietru.omni_power.OmniPower.MOD_ID;
|
||||||
|
|
||||||
public class CustomScreen extends BaseItemScreen {
|
public class CustomScreen extends BaseItemScreen {
|
||||||
public static final Map<String,TriConsumer<Table, CustomScreen,JsonValue>> components = new HashMap<>();
|
public static final Map<String,TriConsumer<Table, CustomScreen,JsonValue>> components = new HashMap<>();
|
||||||
|
public static final Map<String,TriConsumer<TextButtonWidget, CustomScreen,JsonValue>> button_events = new HashMap<>();
|
||||||
|
|
||||||
SlotContainer container;
|
SlotContainer container;
|
||||||
CustomUIBlockEntity blockEntity;
|
|
||||||
|
|
||||||
public CustomScreen(ISlotContainerParent parent,final CustomUIBlockEntity be, final String ui_id) {
|
public CustomScreen(ISlotContainerParent parent, final String ui_id) {
|
||||||
super(parent);
|
super(parent);
|
||||||
|
|
||||||
if (!OmniPower.uis.containsKey(ui_id)) {
|
if (!OmniPower.uis.containsKey(ui_id)) {
|
||||||
|
@ -40,8 +45,11 @@ public class CustomScreen extends BaseItemScreen {
|
||||||
JsonValue dataJson = OmniPower.uis.get(ui_id);
|
JsonValue dataJson = OmniPower.uis.get(ui_id);
|
||||||
JsonValue ui_layout = dataJson.get("layout");
|
JsonValue ui_layout = dataJson.get("layout");
|
||||||
|
|
||||||
container = be.slotContainer;
|
|
||||||
blockEntity = be;
|
if (parent instanceof CustomUIBlockEntity)
|
||||||
|
container=((CustomUIBlockEntity) parent).slotContainer;
|
||||||
|
else if (parent instanceof DummyObject)
|
||||||
|
container=((DummyObject) parent).container;
|
||||||
|
|
||||||
Stack stack = new Stack();
|
Stack stack = new Stack();
|
||||||
Actor background = new Image(UI.container9Patch);
|
Actor background = new Image(UI.container9Patch);
|
||||||
|
@ -98,14 +106,19 @@ public class CustomScreen extends BaseItemScreen {
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public static void addOpenContainer(final CustomUIBlockEntity be, final SlotContainer container){
|
public static void addOpenContainer(final ISlotContainerParent be, final SlotContainer container){
|
||||||
addOpenContainer(be,container,be.ui_id);
|
String ui_id = "";
|
||||||
|
if (be instanceof CustomUIBlockEntity)
|
||||||
|
ui_id=((CustomUIBlockEntity) be).ui_id;
|
||||||
|
else if (be instanceof DummyObject)
|
||||||
|
ui_id= ((DummyObject) be).ui_id;
|
||||||
|
addOpenContainer(be,container,ui_id);
|
||||||
}
|
}
|
||||||
public static void addOpenContainer(final CustomUIBlockEntity be, final SlotContainer container, final String ui_id) {
|
public static void addOpenContainer(final ISlotContainerParent be, final SlotContainer container, final String ui_id) {
|
||||||
if (!UI.openContainers.contains(container, true)) {
|
if (!UI.openContainers.contains(container, true)) {
|
||||||
UI.itemCatalog.show();
|
UI.itemCatalog.show();
|
||||||
UI.openContainers.add(container);
|
UI.openContainers.add(container);
|
||||||
final CustomScreen screen = new CustomScreen(be, be, ui_id);
|
final CustomScreen screen = new CustomScreen(be, ui_id);
|
||||||
InGame.IN_GAME.openedMainItemScreen = screen;
|
InGame.IN_GAME.openedMainItemScreen = screen;
|
||||||
InGame.IN_GAME.addBaseItemScreen(screen);
|
InGame.IN_GAME.addBaseItemScreen(screen);
|
||||||
Action perFrameAct = new Action() {
|
Action perFrameAct = new Action() {
|
||||||
|
@ -126,6 +139,66 @@ public class CustomScreen extends BaseItemScreen {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void load_base_button_events(){
|
||||||
|
button_events.put("change_ui",(button,screen,data)->{
|
||||||
|
String ui_id = data.getString("gui_id","");
|
||||||
|
button.addListener(event -> {
|
||||||
|
if (!button.isPressed())
|
||||||
|
return false;
|
||||||
|
UI.openContainers.removeValue(screen.container, true);
|
||||||
|
InGame.IN_GAME.removeBaseItemScreen(screen);
|
||||||
|
addOpenContainer(screen.parent,screen.container,ui_id);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
button_events.put("run_trigger",(button,screen,data)->{
|
||||||
|
String trigger_id = data.getString("trigger_id","");
|
||||||
|
button.addListener(event -> {
|
||||||
|
if (!button.isPressed())
|
||||||
|
return false;
|
||||||
|
if (screen.parent instanceof DummyObject)
|
||||||
|
runTrigger(trigger_id,((DummyObject) screen.parent).blockPos, (BlockEventArgs) screen.parent);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
button_events.put("close_ui",(button,screen,data)->{
|
||||||
|
String trigger_id = data.getString("trigger_id","");
|
||||||
|
button.addListener(event -> {
|
||||||
|
if (!button.isPressed())
|
||||||
|
return false;
|
||||||
|
UI.openContainers.removeValue(screen.container, true);
|
||||||
|
InGame.IN_GAME.removeBaseItemScreen(screen);
|
||||||
|
return true;
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void runTrigger(String triggerId, BlockPosition triggerPos, BlockEventArgs args) {
|
||||||
|
|
||||||
|
Zone zone = args.zone;
|
||||||
|
if (triggerPos != null) {
|
||||||
|
BlockState targetBlockState = triggerPos.getBlockState();
|
||||||
|
if (targetBlockState == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BlockEventTrigger[] customTrigger = targetBlockState.getTrigger(triggerId);
|
||||||
|
if (customTrigger == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
BlockEventArgs newArgs = new BlockEventArgs();
|
||||||
|
newArgs.blockPos = triggerPos;
|
||||||
|
newArgs.zone = zone;
|
||||||
|
newArgs.srcBlockState = targetBlockState;
|
||||||
|
newArgs.srcIdentity = args.srcIdentity;
|
||||||
|
|
||||||
|
for (BlockEventTrigger t : customTrigger) {
|
||||||
|
t.act(newArgs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static void load_base_ui_components() {
|
public static void load_base_ui_components() {
|
||||||
//Table table, CustomScreen screen
|
//Table table, CustomScreen screen
|
||||||
components.put("row",(table,screen,data)->{
|
components.put("row",(table,screen,data)->{
|
||||||
|
@ -144,32 +217,19 @@ public class CustomScreen extends BaseItemScreen {
|
||||||
);
|
);
|
||||||
table.add(lbl);
|
table.add(lbl);
|
||||||
});
|
});
|
||||||
components.put("change_ui_text_button",(table,screen,data)->{
|
components.put("text_button",(table,screen,data)->{
|
||||||
//Button button = new TextButton(data.getString("text",""),skin);
|
//Button button = new TextButton(data.getString("text",""),skin);
|
||||||
TextButtonWidget button = new TextButtonWidget(data.getString("text",""));
|
TextButtonWidget button = new TextButtonWidget(data.getString("text",""));
|
||||||
String ui_id = data.getString("gui_id","");
|
JsonValue events = data.get("events");
|
||||||
button.addListener(event -> {
|
for (JsonValue event : events) {
|
||||||
if (!button.isPressed())
|
String type = event.getString("type", "");
|
||||||
return false;
|
if (type.isEmpty())
|
||||||
UI.openContainers.removeValue(screen.container, true);
|
continue;
|
||||||
InGame.IN_GAME.removeBaseItemScreen(screen);
|
if (!button_events.containsKey(type.toLowerCase()))
|
||||||
addOpenContainer(screen.blockEntity,screen.blockEntity.slotContainer,ui_id);
|
continue;
|
||||||
return true;
|
TriConsumer<TextButtonWidget, CustomScreen, JsonValue> component = button_events.get(type.toLowerCase());
|
||||||
});
|
component.accept(button, screen, event);
|
||||||
table.add(button);
|
}
|
||||||
});
|
|
||||||
components.put("trigger_block_event_text_button",(table,screen,data)->{
|
|
||||||
//Button button = new TextButton(data.getString("text", ""), skin);
|
|
||||||
TextButtonWidget button = new TextButtonWidget(data.getString("text",""));
|
|
||||||
String trigger_id = data.getString("trigger_id","");
|
|
||||||
button.addListener(event -> {
|
|
||||||
if (!button.isPressed())
|
|
||||||
return false;
|
|
||||||
UI.openContainers.removeValue(screen.container, true);
|
|
||||||
InGame.IN_GAME.removeBaseItemScreen(screen);
|
|
||||||
//INSERT CODE TO RUN BE TRIGGER
|
|
||||||
return true;
|
|
||||||
});
|
|
||||||
table.add(button);
|
table.add(button);
|
||||||
});
|
});
|
||||||
components.put("item_slot",(table,screen,data)->{
|
components.put("item_slot",(table,screen,data)->{
|
||||||
|
@ -190,6 +250,7 @@ public class CustomScreen extends BaseItemScreen {
|
||||||
}
|
}
|
||||||
|
|
||||||
static {
|
static {
|
||||||
|
load_base_button_events();
|
||||||
load_base_ui_components();
|
load_base_ui_components();
|
||||||
}
|
}
|
||||||
}
|
}
|
11
src/main/java/net/pietru/omni_power/ui/DummyObject.java
Normal file
11
src/main/java/net/pietru/omni_power/ui/DummyObject.java
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
package net.pietru.omni_power.ui;
|
||||||
|
|
||||||
|
import finalforeach.cosmicreach.blockevents.BlockEventArgs;
|
||||||
|
import finalforeach.cosmicreach.blocks.BlockPosition;
|
||||||
|
import finalforeach.cosmicreach.items.ISlotContainerParent;
|
||||||
|
import finalforeach.cosmicreach.items.containers.SlotContainer;
|
||||||
|
|
||||||
|
public class DummyObject extends BlockEventArgs implements ISlotContainerParent {
|
||||||
|
public String ui_id;
|
||||||
|
public SlotContainer container;
|
||||||
|
}
|
|
@ -90,6 +90,7 @@ public class TextButtonWidget extends Table implements Disableable {
|
||||||
|
|
||||||
protected boolean onInputEvent(InputEvent inputEvent) {
|
protected boolean onInputEvent(InputEvent inputEvent) {
|
||||||
if (Gdx.input.isCursorCatched()) {
|
if (Gdx.input.isCursorCatched()) {
|
||||||
|
this.pressed = false;
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
InputEvent.Type inputType = inputEvent.getType();
|
InputEvent.Type inputType = inputEvent.getType();
|
||||||
|
@ -111,6 +112,7 @@ public class TextButtonWidget extends Table implements Disableable {
|
||||||
if (inputType == InputEvent.Type.exit) {
|
if (inputType == InputEvent.Type.exit) {
|
||||||
this.canSpreadItemTo = true;
|
this.canSpreadItemTo = true;
|
||||||
this.hoveredOver = false;
|
this.hoveredOver = false;
|
||||||
|
this.pressed = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -2,9 +2,11 @@ omni_power:assets.txt
|
||||||
omni_power:blocks\cable.json
|
omni_power:blocks\cable.json
|
||||||
omni_power:blocks\cable_adapter.json
|
omni_power:blocks\cable_adapter.json
|
||||||
omni_power:blocks\cable_merger.json
|
omni_power:blocks\cable_merger.json
|
||||||
|
omni_power:blocks\custom_boombox.json
|
||||||
omni_power:blocks\custom_crate.json
|
omni_power:blocks\custom_crate.json
|
||||||
omni_power:blocks\door_cube.json
|
omni_power:blocks\door_cube.json
|
||||||
omni_power:blocks\lever.json
|
omni_power:blocks\lever.json
|
||||||
|
omni_power:block_events\block_events_boombox.json
|
||||||
omni_power:block_events\block_events_cable_merger_off.json
|
omni_power:block_events\block_events_cable_merger_off.json
|
||||||
omni_power:block_events\block_events_cable_merger_on.json
|
omni_power:block_events\block_events_cable_merger_on.json
|
||||||
omni_power:block_events\block_events_cable_merger_slim_off.json
|
omni_power:block_events\block_events_cable_merger_slim_off.json
|
||||||
|
@ -15,6 +17,7 @@ omni_power:block_events\block_events_lever_blue_off.json
|
||||||
omni_power:block_events\block_events_lever_blue_on.json
|
omni_power:block_events\block_events_lever_blue_on.json
|
||||||
omni_power:block_events\block_events_lever_red_off.json
|
omni_power:block_events\block_events_lever_red_off.json
|
||||||
omni_power:block_events\block_events_lever_red_on.json
|
omni_power:block_events\block_events_lever_red_on.json
|
||||||
|
omni_power:gui\example-boombox.json
|
||||||
omni_power:gui\example.json
|
omni_power:gui\example.json
|
||||||
omni_power:gui\example2.json
|
omni_power:gui\example2.json
|
||||||
omni_power:block_events\adapter\cable_adapter_blue_off.json
|
omni_power:block_events\adapter\cable_adapter_blue_off.json
|
||||||
|
|
|
@ -0,0 +1,44 @@
|
||||||
|
{
|
||||||
|
"parent":"base:block_events_default",
|
||||||
|
"stringId": "omni_power:block_events_boombox",
|
||||||
|
"triggers":
|
||||||
|
{
|
||||||
|
"onInteract":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"actionId": "omni_power:open_ui",
|
||||||
|
"parameters":
|
||||||
|
{
|
||||||
|
"ui_id": "example_boombox",
|
||||||
|
"slots": 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sound1":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"actionId": "base:play_sound_3d",
|
||||||
|
"parameters":
|
||||||
|
{
|
||||||
|
"sound": "base:sounds/blocks/e-piano_A.ogg",
|
||||||
|
"volume": 1,
|
||||||
|
"pitch": 1,
|
||||||
|
"position": [0, 0, 0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"sound2":
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"actionId": "base:play_sound_3d",
|
||||||
|
"parameters":
|
||||||
|
{
|
||||||
|
"sound": "base:sounds/blocks/e-piano_A.ogg",
|
||||||
|
"volume": 1,
|
||||||
|
"pitch": 2,
|
||||||
|
"position": [0, 0, 0]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
14
src/main/resources/omni_power/blocks/custom_boombox.json
Normal file
14
src/main/resources/omni_power/blocks/custom_boombox.json
Normal file
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"stringId": "omni_power:boombox",
|
||||||
|
"blockStates":
|
||||||
|
{
|
||||||
|
"pitch=A4":
|
||||||
|
{
|
||||||
|
"modelName": "base:models/blocks/model_boombox.json",
|
||||||
|
"blockEventsId": "omni_power:block_events_boombox",
|
||||||
|
"tags": [
|
||||||
|
"tool_pickaxe_effective"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
43
src/main/resources/omni_power/gui/example-boombox.json
Normal file
43
src/main/resources/omni_power/gui/example-boombox.json
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
{
|
||||||
|
"id": "example_boombox",
|
||||||
|
"width": 250,
|
||||||
|
"height": 200,
|
||||||
|
"layout": [
|
||||||
|
{
|
||||||
|
"type": "label",
|
||||||
|
"text": "BoomBox",
|
||||||
|
"x_off": 0,
|
||||||
|
"y_off": -2
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "row"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "space",
|
||||||
|
"height": 10
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "row"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "text_button",
|
||||||
|
"text": "Sound1",
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"type": "run_trigger",
|
||||||
|
"trigger_id": "sound1"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "text_button",
|
||||||
|
"text": "Sound2",
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"type": "run_trigger",
|
||||||
|
"trigger_id": "sound2"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
|
@ -41,9 +41,14 @@
|
||||||
"output": true
|
"output": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"type": "change_ui_text_button",
|
"type": "text_button",
|
||||||
"text": "Second UI",
|
"text": "Second UI",
|
||||||
"gui_id": "example_ui_2"
|
"events": [
|
||||||
|
{
|
||||||
|
"type": "change_ui",
|
||||||
|
"gui_id": "example_ui_2"
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
Loading…
Reference in a new issue