Created GUI, not rendered yet

This commit is contained in:
Allexit 2015-05-11 13:44:43 +03:00
parent 48402a31a9
commit a06d8beffc
7 changed files with 169 additions and 0 deletions

View File

@ -5,11 +5,14 @@ import com.badlogic.ashley.core.Entity;
import com.badlogic.ashley.core.EntityListener;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.math.Vector2;
import com.saltosion.gladiator.components.CCombat;
import com.saltosion.gladiator.components.CPhysics;
import com.saltosion.gladiator.components.CRenderedObject;
import com.saltosion.gladiator.gui.ButtonNode;
import com.saltosion.gladiator.gui.GUIManager;
import com.saltosion.gladiator.input.InputHandler;
import com.saltosion.gladiator.listeners.CombatListener;
import com.saltosion.gladiator.systems.CombatSystem;
@ -19,6 +22,7 @@ import com.saltosion.gladiator.systems.RenderingSystem;
import com.saltosion.gladiator.util.AppUtil;
import com.saltosion.gladiator.util.Direction;
import com.saltosion.gladiator.util.Global;
import com.saltosion.gladiator.util.Log;
import com.saltosion.gladiator.util.Name;
import com.saltosion.gladiator.util.SpriteLoader;
import com.saltosion.gladiator.util.SpriteSequence;
@ -26,6 +30,7 @@ import com.saltosion.gladiator.util.SpriteSequence;
public class GladiatorBrawler extends ApplicationAdapter {
private Engine engine;
private GUIManager guiManager;
private InputHandler inputHandler;
private Entity player;
@ -66,6 +71,11 @@ public class GladiatorBrawler extends ApplicationAdapter {
}
});
// Initialize GUI
guiManager = new GUIManager();
AppUtil.guiManager = this.guiManager;
initializeTestGUI();
// Initialize stuff in the world
initializePlayer();
initializeTestDummy();
@ -161,6 +171,17 @@ public class GladiatorBrawler extends ApplicationAdapter {
engine.addEntity(wall0);
engine.addEntity(wall1);
}
public void initializeTestGUI() {
Sprite img = SpriteLoader.loadSprite(Name.GROUNDIMG);
ButtonNode button = new ButtonNode("test-button", img, img) {
@Override
public void click(float x, float y, Input.Buttons mouseButton) {
Log.info("I should never be pressed!");
}
};
guiManager.getRootNode().addChild(button);
}
@Override
public void resize(int width, int height) {

View File

@ -0,0 +1,33 @@
package com.saltosion.gladiator.gui;
import com.badlogic.gdx.graphics.g2d.Sprite;
public abstract class ButtonNode extends GUINode implements InteractiveNode, ImageNode {
private final Sprite onHover;
private final Sprite normal;
private boolean hovered = false;
public ButtonNode(String ID, Sprite onHover, Sprite normal) {
super(ID);
this.onHover = onHover;
this.normal = normal;
}
@Override
public void mouseEnter(float x, float y) {
hovered = true;
}
@Override
public void mouseLeave(float x, float y){
hovered = false;
}
@Override
public Sprite getImage() {
if (hovered) {
return onHover;
}
return normal;
}
}

View File

@ -0,0 +1,14 @@
package com.saltosion.gladiator.gui;
public class GUIManager {
private final GUINode rootNode;
public GUIManager() {
this.rootNode = new GUINode("root");
}
public GUINode getRootNode() {
return this.rootNode;
}
}

View File

@ -0,0 +1,64 @@
package com.saltosion.gladiator.gui;
import com.badlogic.gdx.math.Vector2;
import java.util.ArrayList;
public class GUINode {
private final Vector2 position;
private final ArrayList<GUINode> children;
private String ID = "";
public GUINode(String ID) {
this.ID = ID;
this.position = new Vector2();
this.children = new ArrayList<GUINode>();
}
public GUINode setPosition(float x, float y) {
this.position.set(x, y);
return this;
}
public GUINode setPosition(Vector2 pos) {
this.position.set(pos);
return this;
}
public GUINode setID(String ID) {
this.ID = ID;
return this;
}
public GUINode addChild(GUINode node) {
this.children.add(node);
return this;
}
public GUINode removeChild(String id) {
for (GUINode child : this.children) {
if (child.ID.equals(id)) {
this.children.remove(child);
break;
}
}
return this;
}
public GUINode removeChild(GUINode node) {
this.children.remove(node);
return this;
}
public GUINode clearChildren() {
this.children.clear();
return this;
}
public Vector2 getPosition() {
return this.position;
}
public String getID() {
return this.ID;
}
}

View File

@ -0,0 +1,8 @@
package com.saltosion.gladiator.gui;
import com.badlogic.gdx.graphics.g2d.Sprite;
public interface ImageNode {
public Sprite getImage();
}

View File

@ -0,0 +1,27 @@
package com.saltosion.gladiator.gui;
import com.badlogic.gdx.Input.Buttons;
public interface InteractiveNode {
/**
* Called when the mouse enters the node's elements.
* @param x position of the mouse.
* @param y position of the mouse.
*/
public void mouseEnter(float x, float y);
/**
* Called when the mouse leaves the node's elements.
* @param x position of the mouse.
* @param y position of the mouse.
*/
public void mouseLeave(float x, float y);
/**
* Called when someone presses a mouse button on the node's elements.
* @param x position of the mouse.
* @param y position of the mouse.
* @param mouseButton button pressed.
*/
public void click(float x, float y, Buttons mouseButton);
}

View File

@ -3,11 +3,13 @@ package com.saltosion.gladiator.util;
import com.badlogic.ashley.core.Engine;
import com.badlogic.ashley.core.Entity;
import com.badlogic.gdx.math.Vector2;
import com.saltosion.gladiator.gui.GUIManager;
public class AppUtil {
public static Entity player;
public static Engine engine;
public static GUIManager guiManager;
public static final int VPHEIGHT_CONST = 24;