refactor(textured-object) Создание общего интерфейса TexturedObject
This commit is contained in:
@@ -8,7 +8,6 @@ import org.lwjgl.opengl.GL11;
|
|||||||
import ru.dmitriymx.game.mw.Prometheus;
|
import ru.dmitriymx.game.mw.Prometheus;
|
||||||
|
|
||||||
public class Main {
|
public class Main {
|
||||||
//private Foxy foxy;
|
|
||||||
private Prometheus mech;
|
private Prometheus mech;
|
||||||
|
|
||||||
private void init_display(int width, int height){
|
private void init_display(int width, int height){
|
||||||
@@ -36,31 +35,18 @@ public class Main {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void render(){
|
private void render(){
|
||||||
while(Keyboard.next()){
|
if(Keyboard.isKeyDown(Keyboard.KEY_LEFT)){
|
||||||
if(Keyboard.getEventKey() == Keyboard.KEY_LEFT){
|
mech.move(-mech.getSpeed(), 0);
|
||||||
if(Keyboard.getEventKeyState()){
|
mech.setRun(true);
|
||||||
mech.setState(1);
|
|
||||||
mech.setRigthRun(true);
|
|
||||||
} else {
|
|
||||||
mech.setState(0);
|
|
||||||
}
|
|
||||||
} else if (Keyboard.getEventKey() == Keyboard.KEY_RIGHT){
|
|
||||||
if(Keyboard.getEventKeyState()){
|
|
||||||
mech.setState(1);
|
|
||||||
mech.setRigthRun(false);
|
|
||||||
} else {
|
|
||||||
mech.setState(0);
|
|
||||||
}
|
}
|
||||||
|
else if(Keyboard.isKeyDown(Keyboard.KEY_RIGHT)){
|
||||||
|
mech.move(mech.getSpeed(), 0);
|
||||||
|
mech.setRun(true);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
|
mech.setRun(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(mech.getState() == 1){
|
|
||||||
if(mech.getRigthRun()){
|
|
||||||
mech.setX(mech.getX() - mech.getSpeed());
|
|
||||||
} else {
|
|
||||||
mech.setX(mech.getX() + mech.getSpeed());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
mech.render();
|
mech.render();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -69,7 +55,7 @@ public class Main {
|
|||||||
init_opengl(width, height);
|
init_opengl(width, height);
|
||||||
|
|
||||||
mech = new Prometheus();
|
mech = new Prometheus();
|
||||||
mech.setY(Display.getHeight() - (mech.getHeight()*4));
|
mech.setY(Display.getHeight() - mech.getHeight());
|
||||||
|
|
||||||
while(!Display.isCloseRequested()){
|
while(!Display.isCloseRequested()){
|
||||||
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
|
GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
|
||||||
|
|||||||
@@ -5,148 +5,128 @@ import org.lwjgl.opengl.Display;
|
|||||||
import org.lwjgl.opengl.GL11;
|
import org.lwjgl.opengl.GL11;
|
||||||
import ru.dmitriymx.game.engine.Sprite;
|
import ru.dmitriymx.game.engine.Sprite;
|
||||||
|
|
||||||
public class Prometheus {
|
public class Prometheus implements TexturedObject {
|
||||||
|
public static int K = 4;
|
||||||
|
private final double _180_DIV_PI = 180/Math.PI;
|
||||||
|
private final int WIDTH, HEIGHT;
|
||||||
|
private final int SPEED = 2 * K;
|
||||||
|
private int x, y = 0;
|
||||||
private Sprite body, gun;
|
private Sprite body, gun;
|
||||||
private int x, y;
|
private boolean sprite_inverse = false;
|
||||||
private int width, height;
|
private boolean is_run = false;
|
||||||
private int state;
|
private boolean run_left = false;
|
||||||
private boolean inverse = false;
|
|
||||||
private final int K = 4;
|
|
||||||
private final int speed = 2 * K;
|
|
||||||
private boolean rigth = true;
|
|
||||||
|
|
||||||
public Prometheus(){
|
public Prometheus(){
|
||||||
x = y = 0;
|
WIDTH = 48;
|
||||||
width = 48;
|
HEIGHT = 32;
|
||||||
height = 32;
|
body = new Sprite(Prometheus.class.getResourceAsStream("/ru/dmitriymx/game/mw-prometheus-01.png"), WIDTH, HEIGHT);
|
||||||
body = new Sprite(Prometheus.class.getResourceAsStream("/ru/dmitriymx/game/mw-prometheus-01.png"), width, height);
|
|
||||||
gun = new Sprite(Prometheus.class.getResourceAsStream("/ru/dmitriymx/game/mw-prometheus-gun.png"), 48, 16);
|
gun = new Sprite(Prometheus.class.getResourceAsStream("/ru/dmitriymx/game/mw-prometheus-gun.png"), 48, 16);
|
||||||
setState(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Разворачивание текстуры в другую сторону
|
|
||||||
* @param value false=вправо, true=влево
|
|
||||||
*/
|
|
||||||
public void setInverse(boolean value){
|
|
||||||
inverse = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Куда развернута текстура
|
|
||||||
* @return false=вправо, true=влево
|
|
||||||
*/
|
|
||||||
public boolean getInverse(){
|
|
||||||
return inverse;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Установка состояние персонажа.<br/>
|
|
||||||
* 0 - idle - стоит на месте<br/>
|
|
||||||
* 1 - run - бежит
|
|
||||||
*/
|
|
||||||
public void setState(int value){
|
|
||||||
state = value;
|
|
||||||
if(state == 0){
|
|
||||||
body.setFrame(0);
|
|
||||||
gun.setFrame(0);
|
|
||||||
} else {
|
|
||||||
body.setFrame(1);
|
|
||||||
gun.setFrame(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Ссостояние персонажа.<br/>
|
|
||||||
* 0 - idle - стоит на месте<br/>
|
|
||||||
* 1 - run - бежит
|
|
||||||
*/
|
|
||||||
public int getState(){
|
|
||||||
return state;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setX(int value){
|
|
||||||
x = value;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public int getX() {
|
public int getX() {
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setY(int value){
|
@Override
|
||||||
y = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getY() {
|
public int getY() {
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getWidth() {
|
||||||
|
return WIDTH * K;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getHeight() {
|
||||||
|
return HEIGHT * K;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setX(int value) {
|
||||||
|
this.x = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setY(int value) {
|
||||||
|
this.y = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
public void render() {
|
public void render() {
|
||||||
Sprite.Coords bodyFrame = body.getFrame();
|
int _x = get_center_x();
|
||||||
Sprite.Coords gunFrame = gun.getFrame();
|
if(_x > Mouse.getX()){
|
||||||
|
sprite_inverse = true;
|
||||||
|
}
|
||||||
|
else if(_x < Mouse.getX()){
|
||||||
|
sprite_inverse = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(is_run){
|
||||||
|
if((!run_left && !sprite_inverse) || (run_left && sprite_inverse)){
|
||||||
|
body.nextFrame();
|
||||||
|
gun.nextFrame();
|
||||||
|
}
|
||||||
|
else if((run_left && !sprite_inverse) || (!run_left && sprite_inverse)){
|
||||||
|
body.prevFrame();
|
||||||
|
gun.prevFrame();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
GL11.glColor3f(1f, 1f, 1f);
|
GL11.glColor3f(1f, 1f, 1f);
|
||||||
|
render_body(body.getFrame());
|
||||||
if(!inverse && (get_center_x() > Mouse.getX())){
|
render_gun(gun.getFrame());
|
||||||
inverse = true;
|
|
||||||
} else if(inverse && (get_center_x() < Mouse.getX())) {
|
|
||||||
inverse = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
render_body(bodyFrame);
|
@Override
|
||||||
render_gun(gunFrame);
|
public void move(int oX, int oY) {
|
||||||
|
this.x += oX;
|
||||||
|
this.y += oY;
|
||||||
|
|
||||||
if(state == 1){
|
if(oX < 0){
|
||||||
if(!inverse){
|
run_left = true;
|
||||||
if(!rigth){
|
|
||||||
body.nextFrame();
|
|
||||||
gun.nextFrame();
|
|
||||||
} else {
|
} else {
|
||||||
body.prevFrame();
|
run_left = false;
|
||||||
gun.prevFrame();
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if(rigth){
|
|
||||||
body.nextFrame();
|
|
||||||
gun.nextFrame();
|
|
||||||
}else{
|
|
||||||
body.prevFrame();
|
|
||||||
gun.prevFrame();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int getSpeed(){
|
||||||
|
return SPEED;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRun(boolean value){
|
||||||
|
is_run = value;
|
||||||
|
|
||||||
|
if(!value){
|
||||||
|
body.setFrame(0);
|
||||||
|
gun.setFrame(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void render_body(Sprite.Coords frame){
|
private void render_body(Sprite.Coords frame){
|
||||||
body.bind();
|
body.bind();
|
||||||
|
|
||||||
GL11.glPushMatrix();
|
GL11.glPushMatrix();
|
||||||
GL11.glTranslatef(x, y, 0);
|
GL11.glTranslatef(x, y, 0);
|
||||||
|
|
||||||
GL11.glBegin(GL11.GL_QUADS);
|
GL11.glBegin(GL11.GL_QUADS);
|
||||||
if(inverse){
|
if(!sprite_inverse){
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y1));
|
|
||||||
GL11.glVertex2f(0, 0);
|
|
||||||
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y1));
|
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y1));
|
||||||
|
GL11.glVertex2f(0, 0);
|
||||||
|
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y1));
|
||||||
GL11.glVertex2f(body.getWidthSprite() * K, 0);
|
GL11.glVertex2f(body.getWidthSprite() * K, 0);
|
||||||
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y2));
|
|
||||||
GL11.glVertex2f(body.getWidthSprite()*K, body.getHeightSprite()*K);
|
|
||||||
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y2));
|
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y2));
|
||||||
|
GL11.glVertex2f(body.getWidthSprite() * K, body.getHeightSprite() * K);
|
||||||
|
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y2));
|
||||||
GL11.glVertex2f(0, body.getHeightSprite() * K);
|
GL11.glVertex2f(0, body.getHeightSprite() * K);
|
||||||
} else {
|
} else {
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y1));
|
|
||||||
GL11.glVertex2f(0, 0);
|
|
||||||
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y1));
|
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y1));
|
||||||
|
GL11.glVertex2f(0, 0);
|
||||||
|
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y1));
|
||||||
GL11.glVertex2f(body.getWidthSprite() * K, 0);
|
GL11.glVertex2f(body.getWidthSprite() * K, 0);
|
||||||
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y2));
|
|
||||||
GL11.glVertex2f(body.getWidthSprite()*K, body.getHeightSprite()*K);
|
|
||||||
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y2));
|
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y2));
|
||||||
|
GL11.glVertex2f(body.getWidthSprite() * K, body.getHeightSprite() * K);
|
||||||
|
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y2));
|
||||||
GL11.glVertex2f(0, body.getHeightSprite() * K);
|
GL11.glVertex2f(0, body.getHeightSprite() * K);
|
||||||
}
|
}
|
||||||
GL11.glEnd();
|
GL11.glEnd();
|
||||||
@@ -155,53 +135,42 @@ public class Prometheus {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void render_gun(Sprite.Coords frame){
|
private void render_gun(Sprite.Coords frame){
|
||||||
gun.bind();
|
|
||||||
|
|
||||||
GL11.glPushMatrix();
|
|
||||||
GL11.glColor3f(1f, 1f, 1f);
|
|
||||||
|
|
||||||
int _x;
|
int _x;
|
||||||
int _y;
|
int _y = y + (5 * K);
|
||||||
if(!inverse){
|
if(!sprite_inverse){
|
||||||
_x = (x + (19 * K));
|
_x = x + (19 * K);
|
||||||
_y = (y + (5 * K));
|
|
||||||
} else {
|
} else {
|
||||||
_x = (x + (29 * K));
|
_x = x + (29 * K);
|
||||||
_y = (y + (5 * K));
|
|
||||||
}
|
}
|
||||||
|
int offcetX = -10 * K;
|
||||||
|
int offcetY = -16 * K;
|
||||||
int mX = Mouse.getX();
|
int mX = Mouse.getX();
|
||||||
int mY = Display.getHeight() - Mouse.getY();
|
int mY = Display.getHeight() - Mouse.getY();
|
||||||
int offcetY = (-16 * K);
|
float angle = (float)(Math.atan2(mY - _y, mX - _x) * _180_DIV_PI);
|
||||||
int offcetX = (-10 * K);
|
|
||||||
float angle = (float)(Math.atan2(mY - _y, mX - _x) * 180/Math.PI);
|
|
||||||
|
|
||||||
|
gun.bind();
|
||||||
|
GL11.glPushMatrix();
|
||||||
GL11.glTranslatef(_x, _y, 0);
|
GL11.glTranslatef(_x, _y, 0);
|
||||||
GL11.glRotatef(angle, 0, 0, 1);
|
GL11.glRotatef(angle, 0, 0, 1);
|
||||||
|
|
||||||
GL11.glBegin(GL11.GL_QUADS);
|
GL11.glBegin(GL11.GL_QUADS);
|
||||||
|
if(!sprite_inverse){
|
||||||
if(!inverse){
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y1));
|
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y1));
|
||||||
GL11.glVertex2f(offcetX, offcetY);
|
GL11.glVertex2f(offcetX, offcetY);
|
||||||
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y1));
|
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y1));
|
||||||
GL11.glVertex2f(offcetX + gun.getWidthSprite() * K, offcetY);
|
GL11.glVertex2f(offcetX + gun.getWidthSprite() * K, offcetY);
|
||||||
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y2));
|
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y2));
|
||||||
GL11.glVertex2f(offcetX + gun.getWidthSprite() * K, offcetY + gun.getHeightSprite() * K);
|
GL11.glVertex2f(offcetX + gun.getWidthSprite() * K, offcetY + gun.getHeightSprite() * K);
|
||||||
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y2));
|
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y2));
|
||||||
GL11.glVertex2f(offcetX, offcetY + gun.getHeightSprite() * K);
|
GL11.glVertex2f(offcetX, offcetY + gun.getHeightSprite() * K);
|
||||||
} else {
|
} else {
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y2));
|
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y2));
|
||||||
GL11.glVertex2f(offcetX, -(offcetY + gun.getHeightSprite() * K));
|
GL11.glVertex2f(offcetX, -(offcetY + gun.getHeightSprite() * K));
|
||||||
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y2));
|
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y2));
|
||||||
GL11.glVertex2f(offcetX + gun.getWidthSprite() * K, -(offcetY + gun.getHeightSprite() * K));
|
GL11.glVertex2f(offcetX + gun.getWidthSprite() * K, -(offcetY + gun.getHeightSprite() * K));
|
||||||
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y1));
|
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y1));
|
||||||
GL11.glVertex2f(offcetX + gun.getWidthSprite() * K, -offcetY);
|
GL11.glVertex2f(offcetX + gun.getWidthSprite() * K, -offcetY);
|
||||||
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y1));
|
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y1));
|
||||||
GL11.glVertex2f(offcetX, -offcetY);
|
GL11.glVertex2f(offcetX, -offcetY);
|
||||||
}
|
}
|
||||||
@@ -210,93 +179,7 @@ public class Prometheus {
|
|||||||
GL11.glPopMatrix();
|
GL11.glPopMatrix();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void draw_target(int x, int y, float angle){
|
|
||||||
final int size = 100;
|
|
||||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
|
||||||
GL11.glPushMatrix();
|
|
||||||
GL11.glTranslatef(x,y,0);
|
|
||||||
GL11.glRotatef(angle, 0, 0, 1);
|
|
||||||
|
|
||||||
GL11.glBegin(GL11.GL_LINES);
|
|
||||||
GL11.glColor3f(1,0,0);
|
|
||||||
GL11.glVertex2f(0,0);
|
|
||||||
GL11.glVertex2f(size,0);
|
|
||||||
GL11.glColor3f(0,1,0);
|
|
||||||
GL11.glVertex2f(0,0);
|
|
||||||
GL11.glVertex2f(0,size);
|
|
||||||
GL11.glColor3f(0,0,1);
|
|
||||||
GL11.glVertex2f(0,0);
|
|
||||||
GL11.glVertex2f(-size,0);
|
|
||||||
GL11.glColor3f(1,1,1);
|
|
||||||
GL11.glVertex2f(0,0);
|
|
||||||
GL11.glVertex2f(0,-size);
|
|
||||||
GL11.glEnd();
|
|
||||||
|
|
||||||
GL11.glPopMatrix();
|
|
||||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void draw_quad(int x, int y, float angle){
|
|
||||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
|
||||||
GL11.glPushMatrix();
|
|
||||||
|
|
||||||
GL11.glTranslatef(x,y,0);
|
|
||||||
GL11.glRotatef(angle, 0, 0, 1);
|
|
||||||
|
|
||||||
GL11.glColor4f(1, 1, 1, 0.5f);
|
|
||||||
GL11.glBegin(GL11.GL_QUADS);
|
|
||||||
if(!inverse){
|
|
||||||
GL11.glVertex2f(0,0);
|
|
||||||
GL11.glVertex2f(100,0);
|
|
||||||
GL11.glVertex2f(100,50);
|
|
||||||
GL11.glVertex2f(0,50);
|
|
||||||
} else {
|
|
||||||
GL11.glVertex2f(0,-50);
|
|
||||||
GL11.glVertex2f(100,-50);
|
|
||||||
GL11.glVertex2f(100,0);
|
|
||||||
GL11.glVertex2f(0,0);
|
|
||||||
}
|
|
||||||
GL11.glEnd();
|
|
||||||
|
|
||||||
GL11.glPopMatrix();
|
|
||||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void draw_line(int x1, int y1, int x2, int y2){
|
|
||||||
GL11.glDisable(GL11.GL_TEXTURE_2D);
|
|
||||||
GL11.glPushMatrix();
|
|
||||||
|
|
||||||
GL11.glColor3f(1,1,0);
|
|
||||||
GL11.glBegin(GL11.GL_LINES);
|
|
||||||
GL11.glVertex2f(x1,y1);
|
|
||||||
GL11.glVertex2f(x2,y2);
|
|
||||||
GL11.glEnd();
|
|
||||||
|
|
||||||
GL11.glPopMatrix();
|
|
||||||
GL11.glEnable(GL11.GL_TEXTURE_2D);
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSpeed(){
|
|
||||||
return speed;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getWidth(){
|
|
||||||
return width;
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getHeight(){
|
|
||||||
return height;
|
|
||||||
}
|
|
||||||
|
|
||||||
private int get_center_x(){
|
private int get_center_x(){
|
||||||
return x + ((width * K) / 2);
|
return x + ((WIDTH * K) / 2);
|
||||||
}
|
|
||||||
|
|
||||||
public boolean getRigthRun(){
|
|
||||||
return rigth;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setRigthRun(boolean value){
|
|
||||||
rigth = value;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,105 +0,0 @@
|
|||||||
package ru.dmitriymx.game.mw;
|
|
||||||
|
|
||||||
import org.lwjgl.input.Mouse;
|
|
||||||
import org.lwjgl.opengl.Display;
|
|
||||||
import org.lwjgl.opengl.GL11;
|
|
||||||
import ru.dmitriymx.game.engine.Sprite;
|
|
||||||
|
|
||||||
public class Prometheus2 implements TexturedObject {
|
|
||||||
private final double _180_DIV_PI = 180/Math.PI;
|
|
||||||
private final int WIDTH, HEIGHT;
|
|
||||||
private int x, y = 0;
|
|
||||||
private Sprite body, gun;
|
|
||||||
|
|
||||||
public Prometheus2(){
|
|
||||||
WIDTH = 48;
|
|
||||||
HEIGHT = 32;
|
|
||||||
body = new Sprite(Prometheus2.class.getResourceAsStream("/ru/dmitriymx/game/mw-prometheus-01.png"), WIDTH, HEIGHT);
|
|
||||||
gun = new Sprite(Prometheus2.class.getResourceAsStream("/ru/dmitriymx/game/mw-prometheus-gun.png"), 48, 16);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getX() {
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getY() {
|
|
||||||
return y;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getWidth() {
|
|
||||||
return WIDTH;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int getHeight() {
|
|
||||||
return HEIGHT;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setX(int value) {
|
|
||||||
this.x = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void setY(int value) {
|
|
||||||
this.y = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void render() {
|
|
||||||
GL11.glColor3f(1f, 1f, 1f);
|
|
||||||
|
|
||||||
render_body(body.getFrame());
|
|
||||||
render_gun(body.getFrame());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void render_body(Sprite.Coords frame){
|
|
||||||
body.bind();
|
|
||||||
GL11.glPushMatrix();
|
|
||||||
GL11.glTranslatef(x, y, 0);
|
|
||||||
|
|
||||||
GL11.glBegin(GL11.GL_QUADS);
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y1));
|
|
||||||
GL11.glVertex2f(0, 0);
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y1));
|
|
||||||
GL11.glVertex2f(body.getWidthSprite(), 0);
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x2), body.floatY(frame.y2));
|
|
||||||
GL11.glVertex2f(body.getWidthSprite(), body.getHeightSprite());
|
|
||||||
GL11.glTexCoord2f(body.floatX(frame.x1), body.floatY(frame.y2));
|
|
||||||
GL11.glVertex2f(0, body.getHeightSprite());
|
|
||||||
GL11.glEnd();
|
|
||||||
|
|
||||||
GL11.glPopMatrix();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void render_gun(Sprite.Coords frame){
|
|
||||||
int _x = x + 19;
|
|
||||||
int _y = y + 5;
|
|
||||||
int offcetX = -16;
|
|
||||||
int offcetY = -10;
|
|
||||||
int mX = Mouse.getX();
|
|
||||||
int mY = Display.getHeight() - Mouse.getY();
|
|
||||||
float angle = (float)(Math.atan2(mY - _y, mX - _x) * _180_DIV_PI);
|
|
||||||
|
|
||||||
gun.bind();
|
|
||||||
GL11.glPushMatrix();
|
|
||||||
GL11.glTranslatef(_x, _y, 0);
|
|
||||||
GL11.glRotatef(angle, 0, 0, 1);
|
|
||||||
|
|
||||||
GL11.glBegin(GL11.GL_QUADS);
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y1));
|
|
||||||
GL11.glVertex2f(offcetX, offcetY);
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y1));
|
|
||||||
GL11.glVertex2f(offcetX + gun.getWidthSprite(), offcetY);
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x2), gun.floatY(frame.y2));
|
|
||||||
GL11.glVertex2f(offcetX + gun.getWidthSprite(), offcetY + gun.getHeightSprite());
|
|
||||||
GL11.glTexCoord2f(gun.floatX(frame.x1), gun.floatY(frame.y2));
|
|
||||||
GL11.glVertex2f(offcetX, offcetY + gun.getHeightSprite());
|
|
||||||
GL11.glEnd();
|
|
||||||
|
|
||||||
GL11.glPopMatrix();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -10,4 +10,5 @@ public interface TexturedObject {
|
|||||||
public void setY(int value);
|
public void setY(int value);
|
||||||
|
|
||||||
public void render();
|
public void render();
|
||||||
|
public void move(int oX, int oY);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user