Add basic support for creature dialogs

This commit is contained in:
2022-08-31 11:59:02 +02:00
parent 3cdec6b303
commit bf19c7bcf4
5 changed files with 72 additions and 0 deletions

Binary file not shown.

Binary file not shown.

View File

@@ -0,0 +1,51 @@
package com.bartlomiejpluta.demo.gui;
import com.bartlomiejpluta.base.api.context.Context;
import com.bartlomiejpluta.base.api.gui.*;
import com.bartlomiejpluta.base.api.input.Key;
import com.bartlomiejpluta.base.api.input.KeyAction;
import com.bartlomiejpluta.base.api.input.KeyEvent;
import com.bartlomiejpluta.base.lib.gui.TextView;
import java.util.Map;
public class DialogWindow extends DecoratedWindow {
@Ref("message")
private TextView text;
public DialogWindow(Context context, GUI gui, Map<String, Component> refs) {
super(context, gui, refs);
addEventListener(KeyEvent.TYPE, this::handleKey);
}
private void handleKey(KeyEvent event) {
if (event.getKey() == Key.KEY_ESCAPE) {
event.consume();
return;
}
if (event.getKey() == Key.KEY_ENTER && event.getAction() == KeyAction.PRESS) {
manager.close();
event.consume();
}
}
@Override
public void onOpen(WindowManager manager, Object[] args) {
super.onOpen(manager, args);
text.setText((String) args[0]);
if (args.length > 1) {
setWindowPosition((WindowPosition) args[1]);
}
}
@Override
public void onClose(WindowManager manager) {
super.onClose(manager);
text.setText("");
}
}

View File

@@ -98,6 +98,14 @@ public abstract class BaseMapHandler implements MapHandler {
cameraController.update();
}
public CompletableFuture<Window> dialog(String message, WindowPosition position) {
return guiManager.showDialog(message, position);
}
public CompletableFuture<Window> dialog(String message) {
return guiManager.showDialog(message, WindowPosition.BOTTOM);
}
public Enemy enemy(@NonNull String id) {
return new Enemy(id);
}

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<demo:DialogWindow
xmlns:base="com.bartlomiejpluta.base.lib.gui"
xmlns:demo="com.bartlomiejpluta.demo.gui"
windowPosition="bottom"
padding="20f"
margin="20f"
width="900f"
height="auto">
<base:TextView ref="message" alignment="top|left" font="A.fonts.roboto_regular.uid" fontSize="40f" width="relative"
rows="4" color="0xFFFFFF"/>
</demo:DialogWindow>