public class InventoryScreen extends CoreScreenLayer { @In private LocalPlayer localPlayer; @Override public void initialise() { InventoryGrid inventory = find("inventory", InventoryGrid.class); inventory.bindTargetEntity(new ReadOnlyBinding<EntityRef>() { @Override public EntityRef get() { return localPlayer.getCharacterEntity(); } }); inventory.setCellOffset(10); } @Override public boolean isModal() { return false; } }
/** * A base screen to help create screens with less plumbing. * This will use the InteractionTarget system to get the entity that the character activated. * Every time the screen is opened, it ensures that the correct entity has been initialized in the UI. */ public abstract class BaseInteractionScreen extends CoreScreenLayer { @In private LocalPlayer localPlayer; protected EntityRef getInteractionTarget() { EntityRef characterEntity = localPlayer.getCharacterEntity(); CharacterComponent characterComponent = characterEntity.getComponent(CharacterComponent.class); return characterComponent.predictedInteractionTarget; } @Override public void onOpened() { super.onOpened(); initializeWithInteractionTarget(getInteractionTarget()); } protected abstract void initializeWithInteractionTarget(EntityRef interactionTarget); }
/** * */ public class DevToolsMenuScreen extends CoreScreenLayer { public static final ResourceUrn ASSET_URI = new ResourceUrn("engine:devToolsMenuScreen"); @In private NUIEditorSystem nuiEditorSystem; @In private NUISkinEditorSystem nuiSkinEditorSystem; @Override public void initialise() { WidgetUtil.trySubscribe(this, "nuiEditor", button -> nuiEditorSystem.toggleEditor()); WidgetUtil.trySubscribe(this, "nuiSkinEditor", button -> nuiSkinEditorSystem.toggleEditor()); WidgetUtil.trySubscribe(this, "btEditor", button -> getManager().toggleScreen("engine:behaviorEditorScreen")); WidgetUtil.trySubscribe(this, "close", button -> getManager().closeScreen(ASSET_URI)); } @Override public boolean isLowerLayerVisible() { return false; } }
public class ConfirmChangePopup extends CoreScreenLayer { public static final ResourceUrn ASSET_URI = new ResourceUrn("engine:confirmChangePopup"); @In private TranslationSystem translationSystem; private UIInputBind bindButton; @Override public void initialise() { WidgetUtil.trySubscribe(this, "ok", button -> { bindButton.saveInput(); getManager().popScreen(); getManager().popScreen(); }); WidgetUtil.trySubscribe(this, "cancel", button -> getManager().popScreen()); } public void setButtonData(UIInputBind button) { this.bindButton = button; String messageText = button.getNewInput().getDisplayName() + " " + translationSystem.translate("${engine:menu#change-keybind-popup-message}"); find("message", UILabel.class).setText(messageText); } }
/** */ public class SettingsMenuScreen extends CoreScreenLayer { public static final ResourceUrn ASSET_URI = new ResourceUrn("engine:settingsMenuScreen"); @In private Config config; @Override public void initialise() { setAnimationSystem(MenuAnimationSystems.createDefaultSwipeAnimation()); WidgetUtil.trySubscribe(this, "player", button -> triggerForwardAnimation(PlayerSettingsScreen.ASSET_URI)); WidgetUtil.trySubscribe(this, "video", button -> triggerForwardAnimation(VideoSettingsScreen.ASSET_URI)); WidgetUtil.trySubscribe(this, "audio", button -> triggerForwardAnimation(AudioSettingsScreen.ASSET_URI)); WidgetUtil.trySubscribe(this, "input", button -> triggerForwardAnimation(InputSettingsScreen.ASSET_URI)); WidgetUtil.trySubscribe(this, "close", button -> { config.save(); triggerBackAnimation(); }); } @Override public boolean isLowerLayerVisible() { return false; } }
public class HealthHud extends CoreHudWidget { @In private LocalPlayer localPlayer;
private UILoadBar fillBar; @In private TranslationSystem translationSystem;
@In private LocalPlayer localPlayer;
@In private Config config;
/** */ @RegisterSystem(RegisterMode.AUTHORITY) public class BlockRegionSystem extends BaseComponentSystem { @In private WorldProvider worldProvider; @In private BlockManager blockManager; // trivial priority so that all other logic can happen to the region before erasing the blocks in the region @ReceiveEvent(priority = EventPriority.PRIORITY_TRIVIAL) public void onDestroyed(DoDestroyEvent event, EntityRef entity, BlockRegionComponent blockRegion) { for (Vector3i blockPosition : blockRegion.region) { worldProvider.setBlock(blockPosition, blockManager.getBlock(BlockManager.AIR_ID)); } } }
/** * Handles view distance changes on the server */ @RegisterSystem(RegisterMode.AUTHORITY) public class ServerViewDistanceSystem extends BaseComponentSystem { @In private NetworkSystem networkSystem; @In private ChunkProvider chunkProvider; @ReceiveEvent(components = ClientComponent.class) public void onChangeViewDistanceChanged(ViewDistanceChangedEvent request, EntityRef entity) { Client client = networkSystem.getOwner(entity); if (client != null) { client.setViewDistanceMode(request.getNewViewRange()); chunkProvider.updateRelevanceEntity(entity, client.getViewDistance().getChunkDistance()); } } }
@RegisterSystem(RegisterMode.CLIENT) public class HealthClientSystem extends BaseComponentSystem { @In private NUIManager nuiManager; @Override public void initialise() { nuiManager.getHUD().addHUDElement("healthHud"); } }
/** */ @RegisterSystem(RegisterMode.AUTHORITY) public class BlockPlacingSystem extends BaseComponentSystem { @In private WorldProvider worldProvider; @ReceiveEvent(components = {WorldComponent.class}, priority = EventPriority.PRIORITY_TRIVIAL) public void placeBlockInWorld(PlaceBlocks event, EntityRef world) { worldProvider.setBlocks(event.getBlocks()); } }
@RegisterSystem(RegisterMode.CLIENT) public class TimeClientSystem extends BaseComponentSystem { @In private Time time; @ReceiveEvent(netFilter = RegisterMode.REMOTE_CLIENT) public void resynchTime(TimeResynchEvent event, EntityRef entityRef) { time.setGameTimeDilation(event.getGameTimeDilation()); } }