Add gradle project
This commit is contained in:
parent
cf97742219
commit
b7bd35c153
69 changed files with 225 additions and 18 deletions
29
src/main/java/globalgamejam/gui/ActionGUI.java
Normal file
29
src/main/java/globalgamejam/gui/ActionGUI.java
Normal file
|
@ -0,0 +1,29 @@
|
|||
package globalgamejam.gui;
|
||||
|
||||
/**
|
||||
* Created by trexr on 20/01/2017.
|
||||
*/
|
||||
public class ActionGUI implements IActionGUI{
|
||||
|
||||
|
||||
@Override
|
||||
public void enter(float mouseX, float mouseY) {}
|
||||
|
||||
@Override
|
||||
public void leave(float mouseX, float mouseY) {}
|
||||
|
||||
@Override
|
||||
public void move(float mouseX, float mouseY) {}
|
||||
|
||||
@Override
|
||||
public void hover(float mouseX, float mouseY) {}
|
||||
|
||||
@Override
|
||||
public void clicked(float mouseX, float mouseY, int buttonKey, int buttonState) {}
|
||||
|
||||
@Override
|
||||
public void joystickButtonState(int idJoy,int id,int state){}
|
||||
|
||||
@Override
|
||||
public void joystickAxisState(int idJoy,int id,float value){}
|
||||
}
|
88
src/main/java/globalgamejam/gui/GUI.java
Normal file
88
src/main/java/globalgamejam/gui/GUI.java
Normal file
|
@ -0,0 +1,88 @@
|
|||
package globalgamejam.gui;
|
||||
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.FloatBuffer;
|
||||
|
||||
import globalgamejam.input.Input;
|
||||
|
||||
/**
|
||||
* Created by trexr on 20/01/2017.
|
||||
*/
|
||||
public abstract class GUI {
|
||||
private int mouseInGUI = 0;//0 = En dehors, 1 = entrer, 2 = deplacer
|
||||
|
||||
protected int x, y;
|
||||
protected int width,height;
|
||||
|
||||
protected IActionGUI action;
|
||||
|
||||
public GUI(int x,int y){
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.width = 0;
|
||||
this.height = 0;
|
||||
this.action = new ActionGUI();
|
||||
}
|
||||
|
||||
public void setAction(IActionGUI action){
|
||||
this.action = action;
|
||||
}
|
||||
|
||||
public void update(){
|
||||
float mouseX = Input.getMousePosition().x;
|
||||
float mouseY = Input.getMousePosition().y;
|
||||
float dMouseX = Input.getDMouse().x;
|
||||
float dMouseY = Input.getDMouse().y;
|
||||
if(mouseX >= this.x && mouseX <= this.x + this.width && mouseY >= this.y && mouseY <= this.y + this.height){
|
||||
for(int i = 0;i < Input.NBRE_BUTTON;i++){
|
||||
if(Input.isButton(i)){
|
||||
action.clicked(mouseX,mouseY,i,Input.getButtonState(i));
|
||||
}
|
||||
}
|
||||
if(mouseInGUI == 0){
|
||||
mouseInGUI = 1;
|
||||
action.enter(mouseX,mouseY);
|
||||
}else if(mouseInGUI == 1 || mouseInGUI == 2){
|
||||
mouseInGUI = 2;
|
||||
action.hover(mouseX,mouseY);
|
||||
if(dMouseX != 0 || dMouseY != 0)action.move(mouseX,mouseY);
|
||||
}
|
||||
}else{
|
||||
if(mouseInGUI == 1 || mouseInGUI == 2){
|
||||
mouseInGUI = 0;
|
||||
action.leave(mouseX,mouseY);
|
||||
}
|
||||
}
|
||||
for(int id : Input.getJoysticks()){
|
||||
try{
|
||||
FloatBuffer axis = Input.getJoysticksAxis(id);
|
||||
for(int i = 0;i < axis.capacity();i++){
|
||||
action.joystickAxisState(id, i, axis.get(i));
|
||||
}
|
||||
ByteBuffer buttons = Input.getJoysticksButton(id);
|
||||
for(int i = 0;i < buttons.capacity();i++){
|
||||
action.joystickButtonState(id, i, buttons.get(i));
|
||||
}
|
||||
}catch(Exception e){}
|
||||
}
|
||||
}
|
||||
|
||||
public abstract void render();
|
||||
public abstract void destroy();
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public void setX(int x) {
|
||||
this.x = x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
public void setY(int y) {
|
||||
this.y = y;
|
||||
}
|
||||
}
|
228
src/main/java/globalgamejam/gui/GUILabel.java
Normal file
228
src/main/java/globalgamejam/gui/GUILabel.java
Normal file
|
@ -0,0 +1,228 @@
|
|||
package globalgamejam.gui;
|
||||
import static org.lwjgl.opengl.GL11.*;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.awt.Font;
|
||||
import java.awt.FontMetrics;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.FloatBuffer;
|
||||
|
||||
import globalgamejam.math.Color4f;
|
||||
import globalgamejam.math.Matrix4f;
|
||||
import globalgamejam.render.Camera;
|
||||
import globalgamejam.render.DisplayManager;
|
||||
import globalgamejam.render.Shaders;
|
||||
import globalgamejam.render.Texture;
|
||||
import org.lwjgl.BufferUtils;
|
||||
import org.lwjgl.opengl.*;
|
||||
|
||||
/**
|
||||
* usefull to print 2D text in openGL LWJGL application
|
||||
* @author Jean-Baptiste Pommeret (Fiesta)
|
||||
* @version 1.0
|
||||
*/
|
||||
public class GUILabel extends GUI {
|
||||
|
||||
private Texture texture;
|
||||
private String text;
|
||||
private Color color;
|
||||
private int size;
|
||||
private String font;
|
||||
private int vbo,numberOfVertices;
|
||||
|
||||
/**
|
||||
* Full constructor of a Label
|
||||
* @param text (String) : the text to print
|
||||
* @param xC (float) : the x coordonnate of the frame where start printing the Label (upper left corner)
|
||||
* @param yC (float) : the y coordonnate of the frame where start printing the Label (upper left corner)
|
||||
* @param color (java.awt.Color) : the Color you wish for the text
|
||||
* @param font (String) : the font (i.e. "Arial" or "Times new roman")
|
||||
* @param size (int) : the font size
|
||||
*/
|
||||
public GUILabel(String text, int xC, int yC, Color color, String font, int size){
|
||||
super(xC,yC);
|
||||
this.font = font;
|
||||
this.color = color;
|
||||
this.text = text;
|
||||
this.size = size;
|
||||
if(this.texture != null)this.texture.destroy();
|
||||
this.texture = Texture.loadFont(text,color,font,size);
|
||||
super.width = this.texture.width;
|
||||
super.height = this.texture.height;
|
||||
this.vbo = GL15.glGenBuffers();
|
||||
float[] a = new float[]{
|
||||
0,0, 0.0f,0.0f,
|
||||
1,0, 1.0f,0.0f,
|
||||
1,1, 1.0f,1.0f,
|
||||
0,1, 0.0f,1.0f
|
||||
};
|
||||
FloatBuffer buff = BufferUtils.createFloatBuffer(a.length);
|
||||
buff.put(a).flip();
|
||||
this.numberOfVertices = a.length/(2+2);
|
||||
|
||||
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, this.vbo);
|
||||
GL15.glBufferData(GL15.GL_ARRAY_BUFFER, buff, GL15.GL_STATIC_DRAW);
|
||||
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
|
||||
}
|
||||
|
||||
public void render(){
|
||||
Shaders.MAIN_SHADERS.bind();
|
||||
Shaders.MAIN_SHADERS.uniform("camera", Camera.matrix);
|
||||
Matrix4f transform = new Matrix4f();
|
||||
transform.translate(super.x,super.y,0);
|
||||
transform.scale(this.getWitdh(),this.getHeight(),1);
|
||||
Shaders.MAIN_SHADERS.uniform("transform", transform);
|
||||
Shaders.MAIN_SHADERS.uniform("projection", DisplayManager.projection);
|
||||
Shaders.MAIN_SHADERS.uniform("color", Color4f.WHITE);
|
||||
|
||||
texture.bind();
|
||||
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, this.vbo);
|
||||
GL20.glEnableVertexAttribArray(Shaders.MAIN_SHADERS.getAttribLocation("vert"));
|
||||
GL20.glVertexAttribPointer(Shaders.MAIN_SHADERS.getAttribLocation("vert"), 2, GL11.GL_FLOAT, false, (2+2)*4, 0);
|
||||
|
||||
GL20.glEnableVertexAttribArray(Shaders.MAIN_SHADERS.getAttribLocation("vertTexCoord"));
|
||||
GL20.glVertexAttribPointer(Shaders.MAIN_SHADERS.getAttribLocation("vertTexCoord"), 2, GL11.GL_FLOAT, true, (2+2)*4, 2*4);
|
||||
|
||||
GL11.glDrawArrays(GL11.GL_QUADS, 0, numberOfVertices);
|
||||
GL15.glBindBuffer(GL15.GL_ARRAY_BUFFER, 0);
|
||||
texture.unbind();
|
||||
Shaders.MAIN_SHADERS.unbind();
|
||||
}
|
||||
|
||||
/**
|
||||
* Default constructor of a Label. Call the full constructor -> Label("", 100, 100, Color.white, "Arial", 30)
|
||||
*/
|
||||
public GUILabel(){
|
||||
this("");
|
||||
}
|
||||
|
||||
/**
|
||||
* Construct a Label from the text param and default statement.
|
||||
* Call the full constructor -> Label(text, 100, 100, Color.white, "Arial", 30)
|
||||
* @param text (String) : the text to print
|
||||
*/
|
||||
public GUILabel(String text){
|
||||
this(text, 100, 100, Color.white, "Arial", 30);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the actual Color of the Label
|
||||
* @return color (java.awt.Color) : the Color of the Label
|
||||
*/
|
||||
public Color getColor() {
|
||||
return color;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the Color of the Label. Automaticaly update the Label to use the new Color
|
||||
* @param color (java.awt.Color) : the new Color of the Label
|
||||
*/
|
||||
public void setColor(Color color) {
|
||||
this.color = color;
|
||||
if(this.texture != null)this.texture.destroy();
|
||||
this.texture = Texture.loadFont(text,color,font,size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the text of the Label
|
||||
* @return text (String) : the text of the Label
|
||||
*/
|
||||
public String getText() {
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the text of the Label. Automaticaly update the Label to use the new text
|
||||
* @param text (String) : the new text to display
|
||||
*/
|
||||
public void setText(String text) {
|
||||
this.text = text;
|
||||
if(this.texture != null)this.texture.destroy();
|
||||
this.texture = Texture.loadFont(text,color,font,size);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the x coordonnate of the Label (upper left corner)
|
||||
* @return x (float) : the x coordonnate of the Label
|
||||
*/
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the x coordonnate of the Label (upper left corner)
|
||||
* @param x (float) : the new x coordonnate of the Label
|
||||
*/
|
||||
public void setX(int x) {
|
||||
super.setX(x);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the y coordonnate of the Label (upper left corner)
|
||||
* @return y (float) : the y coordonnate of the Label
|
||||
*/
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the y coordonnate of the Label (upper left corner)
|
||||
* @param y (float) : the new y coordonnate of the Label
|
||||
*/
|
||||
public void setY(int y) {
|
||||
super.setY(y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Set both x and y coordonnate of the Label
|
||||
* @param x (float) : the new x coordonnate of the Label
|
||||
* @param y (float) : the new y coordonnate of the Label
|
||||
*/
|
||||
public void setPosition(int x, int y){
|
||||
this.setX(x);
|
||||
this.setY(y);
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the witdh of the Label
|
||||
* @return witdh (int) : the width
|
||||
*/
|
||||
public int getWitdh() {
|
||||
return this.texture.width;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the height of the Label
|
||||
* @return height (int) : the height
|
||||
*/
|
||||
public int getHeight() {
|
||||
return this.texture.height;
|
||||
}
|
||||
|
||||
public void destroy(){
|
||||
GL15.glDeleteBuffers(vbo);
|
||||
texture.destroy();
|
||||
}
|
||||
|
||||
/**
|
||||
* make the image transparent
|
||||
* @param obj_img (BufferedImage) : the BufferedImage to make transparent
|
||||
*/
|
||||
/* private void makeTransparent(BufferedImage obj_img){
|
||||
byte alpha = (byte)255;
|
||||
alpha %= 0xff;
|
||||
for (int cx=0;cx<obj_img.getWidth();cx++) {
|
||||
for (int cy=0;cy<obj_img.getHeight();cy++) {
|
||||
int color = obj_img.getRGB(cx, cy);
|
||||
|
||||
int mc = (alpha << 24) | 0x00ffffff;
|
||||
int newcolor = color & mc;
|
||||
obj_img.setRGB(cx, cy, newcolor);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
}*/
|
||||
}
|
14
src/main/java/globalgamejam/gui/IActionGUI.java
Normal file
14
src/main/java/globalgamejam/gui/IActionGUI.java
Normal file
|
@ -0,0 +1,14 @@
|
|||
package globalgamejam.gui;
|
||||
|
||||
/**
|
||||
* Created by trexr on 20/01/2017.
|
||||
*/
|
||||
public interface IActionGUI {
|
||||
public void enter(float mouseX,float mouseY);
|
||||
public void leave(float mouseX,float mouseY);
|
||||
public void move(float mouseX,float mouseY);
|
||||
public void hover(float mouseX,float mouseY);
|
||||
public void clicked(float mouseX,float mouseY,int buttonKey,int buttonState);
|
||||
public void joystickButtonState(int idJoy,int id,int state);
|
||||
public void joystickAxisState(int idJoy,int id,float value);
|
||||
}
|
Reference in a new issue