Create ScreenWidget - a screen aware parent of root widget
This commit is contained in:
@@ -5,6 +5,8 @@ import com.bartlomiejpluta.base.api.game.screen.Screen;
|
||||
public interface Widget {
|
||||
Widget getParent();
|
||||
|
||||
void setParent(Widget parent);
|
||||
|
||||
float getX();
|
||||
|
||||
float getY();
|
||||
|
||||
@@ -98,6 +98,7 @@ public abstract class Component implements Widget {
|
||||
return parent;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setParent(Widget parent) {
|
||||
this.parent = parent;
|
||||
}
|
||||
|
||||
@@ -9,8 +9,8 @@ import com.bartlomiejpluta.base.api.game.screen.Screen;
|
||||
import com.bartlomiejpluta.base.api.internal.render.ShaderManager;
|
||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||
import com.bartlomiejpluta.base.engine.gui.manager.FontManager;
|
||||
import com.bartlomiejpluta.base.engine.gui.widget.ScreenWidget;
|
||||
import lombok.Getter;
|
||||
import lombok.Setter;
|
||||
import org.lwjgl.nanovg.NVGColor;
|
||||
|
||||
import java.util.HashSet;
|
||||
@@ -24,8 +24,7 @@ import static org.lwjgl.system.MemoryUtil.NULL;
|
||||
public class NanoVGGUI implements GUI {
|
||||
private long context;
|
||||
|
||||
@Setter
|
||||
private Widget root;
|
||||
private ScreenWidget screenWidget;
|
||||
|
||||
private NVGColor fillColor;
|
||||
private NVGColor strokeColor;
|
||||
@@ -41,25 +40,36 @@ public class NanoVGGUI implements GUI {
|
||||
public void init(Screen screen) {
|
||||
context = nvgCreate(NVG_ANTIALIAS | NVG_STENCIL_STROKES);
|
||||
|
||||
if (context == NULL) {
|
||||
throw new AppException("Could not init NanoVG");
|
||||
}
|
||||
|
||||
screenWidget = new ScreenWidget(screen);
|
||||
|
||||
fillColor = NVGColor.create();
|
||||
strokeColor = NVGColor.create();
|
||||
|
||||
if (context == NULL) {
|
||||
throw new AppException("Could not onCreate NanoVG");
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void render(Screen screen, Camera camera, ShaderManager shaderManager) {
|
||||
nvgBeginFrame(context, screen.getWidth(), screen.getHeight(), 1);
|
||||
|
||||
if (root != null) {
|
||||
root.draw(screen, this);
|
||||
}
|
||||
screenWidget.draw(screen, this);
|
||||
|
||||
nvgEndFrame(context);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Widget getRoot() {
|
||||
return screenWidget.getRoot();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setRoot(Widget root) {
|
||||
screenWidget.setRoot(root);
|
||||
root.setParent(screenWidget);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beginPath() {
|
||||
nvgBeginPath(context);
|
||||
|
||||
@@ -0,0 +1,230 @@
|
||||
package com.bartlomiejpluta.base.engine.gui.widget;
|
||||
|
||||
import com.bartlomiejpluta.base.api.game.gui.base.GUI;
|
||||
import com.bartlomiejpluta.base.api.game.gui.base.SizeMode;
|
||||
import com.bartlomiejpluta.base.api.game.gui.base.Widget;
|
||||
import com.bartlomiejpluta.base.api.game.screen.Screen;
|
||||
import lombok.Getter;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.Setter;
|
||||
|
||||
@Setter
|
||||
@Getter
|
||||
@RequiredArgsConstructor
|
||||
public class ScreenWidget implements Widget {
|
||||
private final Screen screen;
|
||||
|
||||
private Widget root;
|
||||
|
||||
@Override
|
||||
public float getWidth() {
|
||||
return screen.getWidth();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getHeight() {
|
||||
return screen.getHeight();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Widget getParent() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setParent(Widget parent) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getX() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getY() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setX(float x) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setY(float y) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPosition(float x, float y) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWidth(float width) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHeight(float height) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSize(float width, float height) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SizeMode getWidthMode() {
|
||||
return SizeMode.MATCH_PARENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setWidthMode(SizeMode mode) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public SizeMode getHeightMode() {
|
||||
return SizeMode.MATCH_PARENT;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setHeightMode(SizeMode mode) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setSizeMode(SizeMode widthMode, SizeMode heightMode) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMargin(float top, float right, float bottom, float left) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMargin(float top, float rightLeft, float bottom) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMargin(float topBottom, float rightLeft) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMargin(float all) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginTop(float margin) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginRight(float margin) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginBottom(float margin) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setMarginLeft(float margin) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginTop() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginRight() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginBottom() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getMarginLeft() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPadding(float top, float right, float bottom, float left) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPadding(float top, float rightLeft, float bottom) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPadding(float topBottom, float rightLeft) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPadding(float all) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingTop(float padding) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingRight(float padding) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingBottom(float padding) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setPaddingLeft(float padding) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingTop() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingRight() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingBottom() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public float getPaddingLeft() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void draw(Screen screen, GUI gui) {
|
||||
if (root != null) {
|
||||
root.draw(screen, gui);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user