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 {
|
public interface Widget {
|
||||||
Widget getParent();
|
Widget getParent();
|
||||||
|
|
||||||
|
void setParent(Widget parent);
|
||||||
|
|
||||||
float getX();
|
float getX();
|
||||||
|
|
||||||
float getY();
|
float getY();
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ public abstract class Component implements Widget {
|
|||||||
return parent;
|
return parent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void setParent(Widget parent) {
|
public void setParent(Widget parent) {
|
||||||
this.parent = 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.api.internal.render.ShaderManager;
|
||||||
import com.bartlomiejpluta.base.engine.error.AppException;
|
import com.bartlomiejpluta.base.engine.error.AppException;
|
||||||
import com.bartlomiejpluta.base.engine.gui.manager.FontManager;
|
import com.bartlomiejpluta.base.engine.gui.manager.FontManager;
|
||||||
|
import com.bartlomiejpluta.base.engine.gui.widget.ScreenWidget;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.Setter;
|
|
||||||
import org.lwjgl.nanovg.NVGColor;
|
import org.lwjgl.nanovg.NVGColor;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@@ -24,8 +24,7 @@ import static org.lwjgl.system.MemoryUtil.NULL;
|
|||||||
public class NanoVGGUI implements GUI {
|
public class NanoVGGUI implements GUI {
|
||||||
private long context;
|
private long context;
|
||||||
|
|
||||||
@Setter
|
private ScreenWidget screenWidget;
|
||||||
private Widget root;
|
|
||||||
|
|
||||||
private NVGColor fillColor;
|
private NVGColor fillColor;
|
||||||
private NVGColor strokeColor;
|
private NVGColor strokeColor;
|
||||||
@@ -41,25 +40,36 @@ public class NanoVGGUI implements GUI {
|
|||||||
public void init(Screen screen) {
|
public void init(Screen screen) {
|
||||||
context = nvgCreate(NVG_ANTIALIAS | NVG_STENCIL_STROKES);
|
context = nvgCreate(NVG_ANTIALIAS | NVG_STENCIL_STROKES);
|
||||||
|
|
||||||
|
if (context == NULL) {
|
||||||
|
throw new AppException("Could not init NanoVG");
|
||||||
|
}
|
||||||
|
|
||||||
|
screenWidget = new ScreenWidget(screen);
|
||||||
|
|
||||||
fillColor = NVGColor.create();
|
fillColor = NVGColor.create();
|
||||||
strokeColor = NVGColor.create();
|
strokeColor = NVGColor.create();
|
||||||
|
|
||||||
if (context == NULL) {
|
|
||||||
throw new AppException("Could not onCreate NanoVG");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void render(Screen screen, Camera camera, ShaderManager shaderManager) {
|
public void render(Screen screen, Camera camera, ShaderManager shaderManager) {
|
||||||
nvgBeginFrame(context, screen.getWidth(), screen.getHeight(), 1);
|
nvgBeginFrame(context, screen.getWidth(), screen.getHeight(), 1);
|
||||||
|
|
||||||
if (root != null) {
|
screenWidget.draw(screen, this);
|
||||||
root.draw(screen, this);
|
|
||||||
}
|
|
||||||
|
|
||||||
nvgEndFrame(context);
|
nvgEndFrame(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Widget getRoot() {
|
||||||
|
return screenWidget.getRoot();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setRoot(Widget root) {
|
||||||
|
screenWidget.setRoot(root);
|
||||||
|
root.setParent(screenWidget);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void beginPath() {
|
public void beginPath() {
|
||||||
nvgBeginPath(context);
|
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