From 10b3b60598792f40353d42586b97ea9e7a902dd1 Mon Sep 17 00:00:00 2001 From: no Date: Thu, 10 Jun 2021 02:38:47 +0200 Subject: [PATCH 1/3] - added some of the first frames (though still incomplete themselves) for the first character. - changed pos and size data for hitboxes from double to float --- src/engine/TestEngine.java | 6 +- .../Characters/Blue/BlueBaseFrames.java | 176 ++++++++++++++++++ .../Characters/Blue/CharacterBlue.java | 9 + src/gameplay/frames/Frame.java | 28 ++- src/gameplay/hitboxes/Active_HitBox.java | 7 +- .../hitboxes/Active_throw_Hitbox.java | 7 +- src/gameplay/hitboxes/HitBox.java | 48 +++-- src/gameplay/hitboxes/Passive_HitBox.java | 7 +- .../hitboxes/Passive_throw_HitBox.java | 7 +- src/gameplay/hitboxes/Push_HitBox.java | 3 + 10 files changed, 270 insertions(+), 28 deletions(-) create mode 100644 src/gameplay/Characters/Blue/BlueBaseFrames.java create mode 100644 src/gameplay/Characters/Blue/CharacterBlue.java diff --git a/src/engine/TestEngine.java b/src/engine/TestEngine.java index 4a6502f..0992485 100644 --- a/src/engine/TestEngine.java +++ b/src/engine/TestEngine.java @@ -19,7 +19,7 @@ public class TestEngine { /* OpenAl TEST */ - SoundManager soundManager = new SoundManager(); + /*SoundManager soundManager = new SoundManager(); soundManager.init(); SoundListener soundListener = new SoundListener(); @@ -31,7 +31,7 @@ public class TestEngine { soundSource.setBuffer(jumpSoundBuffer.getBufferId()); soundManager.addSoundSource("jump", soundSource); -// soundManager.playSoundSource("jump"); +// soundManager.playSoundSource("jump");*/ /* Engine Init @@ -163,7 +163,7 @@ public class TestEngine { if (engine.shouldClose()) engine.setRunning(false); } - soundManager.cleanup(); + //soundManager.cleanup(); } diff --git a/src/gameplay/Characters/Blue/BlueBaseFrames.java b/src/gameplay/Characters/Blue/BlueBaseFrames.java new file mode 100644 index 0000000..e4d9357 --- /dev/null +++ b/src/gameplay/Characters/Blue/BlueBaseFrames.java @@ -0,0 +1,176 @@ +package gameplay.Characters.Blue; + +import engine.Engine; +import engine.math.Vector3f; +import engine.object.Hitbox; +import engine.object.ObjectGl; +import gameplay.frames.Frame; +import gameplay.hitboxes.*; + +import java.util.ArrayList; + +public class BlueBaseFrames { + + private static Frame generateStandFrame1(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,0.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(0,0,112,120); + return blueStandframe1; + } + + private static Frame generateStandFrame2(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,75,300); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,0.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(112,0,112,120); + return blueStandframe1; + } + + private static Frame generateCrouchFrame1(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,0.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(112,0,112,120); + return blueStandframe1; + } + + private static Frame generateNeutralJumpFrame1(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(-10.0,0.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,false,false,false,false,false); + blueStandframe1.setSpriteWrap(830,0,112,120); + return blueStandframe1; + } + + private static Frame generateNeutralJumpFrame2(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(10.0,0.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,false,false,false,false,false); + blueStandframe1.setSpriteWrap(830,0,112,120); + return blueStandframe1; + } + + private static Frame GenerateForwardJumpFrame1(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(-10.0,10.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,false,false,false,false,false); + blueStandframe1.setSpriteWrap(750,0,112,120); + return blueStandframe1; + } + + private static Frame GenerateForwardJumpFrame2(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(10.0,10.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,false,false,false,false,false); + blueStandframe1.setSpriteWrap(750,0,112,120); + return blueStandframe1; + } + + private static Frame BackJumpFrame1(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(-10.0,-10.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,false,false,false,false,false); + blueStandframe1.setSpriteWrap(750,0,112,120); + return blueStandframe1; + } + + private static Frame BackJumpFrame2(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(10.0,-10.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,false,false,false,false,false); + blueStandframe1.setSpriteWrap(750,0,112,120); + return blueStandframe1; + } + + public static void main(String[] args) { + Engine engine = new Engine(640, 480, new Vector3f(4.0f, 3.0f)); + engine.init(); + + String path = "textures/Sprite.png"; + + Frame f = generateStandFrame1(); + ObjectGl blue = new ObjectGl(0f, 60f, 80f, 5f, path, null); + blue.setTextureWrap(f.getSprite()[0], f.getSprite()[1], f.getSprite()[2], f.getSprite()[3], ObjectGl.STICK_TOP); + blue.translate(new Vector3f(-750,200,0)); + int posX = -750; + int posY = 200; + engine.add_objectGl(blue); + int counter = 0; + long ts1, ts2; + float posZ = 11; + while(counter < 1000) { + ts1 = System.currentTimeMillis(); + posZ = 11; + engine.update(); + engine.render(); + counter++; + for(Passive_HitBox h: f.getPassHitBox()){ + Hitbox hh = new Hitbox(posZ,h.getSize_x(),h.getSize_y(),5f,new Vector3f(1,0,0)); + engine.add_objectGl(hh); + hh.translate(new Vector3f(-750+h.getPosY(),200+h.getPosY())); + } + blue.translate(new Vector3f(0,0,0)); + ts2 = System.currentTimeMillis(); + while(ts2-ts1 < 1000/20) { + ts2 = System.currentTimeMillis(); + } + + } + } + +} diff --git a/src/gameplay/Characters/Blue/CharacterBlue.java b/src/gameplay/Characters/Blue/CharacterBlue.java new file mode 100644 index 0000000..df11ae9 --- /dev/null +++ b/src/gameplay/Characters/Blue/CharacterBlue.java @@ -0,0 +1,9 @@ +package gameplay.Characters.Blue; + +import gameplay.entities.Character; + +public class CharacterBlue { + public Character generateCharBlue(){ + return new Character(); + } +} diff --git a/src/gameplay/frames/Frame.java b/src/gameplay/frames/Frame.java index 6ab43a6..450ff8a 100644 --- a/src/gameplay/frames/Frame.java +++ b/src/gameplay/frames/Frame.java @@ -2,6 +2,7 @@ package gameplay.frames; import java.util.ArrayList; +import engine.graphics.Texture; import gameplay.hitboxes.*; /** @@ -24,6 +25,10 @@ public class Frame { private boolean moveCancellable; private boolean isDashCancellable; private boolean lastFrameOfHit; + /** + * an int of 4 that determines the texture wrap for the frame + */ + private int[] sprite; public Frame() { this.setMove_y(0.0); @@ -39,6 +44,7 @@ public class Frame { this.moveCancellable = true; this.isDashCancellable = true; this.lastFrameOfHit = false; + this.sprite = new int[0]; } public Frame(Double move_y, Double move_x, ArrayList passHitBox, ArrayList actHitBox, @@ -58,6 +64,7 @@ public class Frame { this.moveCancellable = moveCancellable; this.isDashCancellable = isDashCancellable; this.lastFrameOfHit = false; + this.sprite = new int[4]; } /* @@ -179,6 +186,25 @@ public class Frame { this.jumpCancellable = f.jumpCancellable; this.moveCancellable = f.isMoveCancellable(); this.isDashCancellable = f.isDashCancellable; - this.lastFrameOfHit = islastFrameOfHit(); + this.lastFrameOfHit = f.islastFrameOfHit(); + this.setSpriteWrap(f.sprite[0], f.sprite[1], f.sprite[2], f.sprite[3]); + } + + /** + * sets the coordinates on the spritesheet for the texture for that frame + * @param x coordinate of the lef tside + * @param y coordonate of the top + * @param sizeH horizontal size of the sprite + * @param sizeV horizontal size of the sprite + */ + public void setSpriteWrap(int x, int y, int sizeH, int sizeV) { + this.sprite[0] = x; + this.sprite[1] = y; + this.sprite[2] = sizeH; + this.sprite[3] = sizeV; + } + + public int[] getSprite() { + return sprite; } } diff --git a/src/gameplay/hitboxes/Active_HitBox.java b/src/gameplay/hitboxes/Active_HitBox.java index 05c6a76..55bc382 100644 --- a/src/gameplay/hitboxes/Active_HitBox.java +++ b/src/gameplay/hitboxes/Active_HitBox.java @@ -1,5 +1,10 @@ package gameplay.hitboxes; public class Active_HitBox extends HitBox { - + public Active_HitBox() { + super(); + } + public Active_HitBox(float posX, float posY, float sizeX, float sizeY) { + super(posX, posY, sizeX, sizeY); + } } diff --git a/src/gameplay/hitboxes/Active_throw_Hitbox.java b/src/gameplay/hitboxes/Active_throw_Hitbox.java index 79f1828..bfdd80e 100644 --- a/src/gameplay/hitboxes/Active_throw_Hitbox.java +++ b/src/gameplay/hitboxes/Active_throw_Hitbox.java @@ -1,5 +1,10 @@ package gameplay.hitboxes; public class Active_throw_Hitbox extends HitBox { - + public Active_throw_Hitbox() { + super(); + } + public Active_throw_Hitbox(float posX, float posY, float sizeX, float sizeY) { + super(posX, posY, sizeX, sizeY); + } } diff --git a/src/gameplay/hitboxes/HitBox.java b/src/gameplay/hitboxes/HitBox.java index 9257648..54cf28f 100644 --- a/src/gameplay/hitboxes/HitBox.java +++ b/src/gameplay/hitboxes/HitBox.java @@ -2,23 +2,31 @@ package gameplay.hitboxes; public class HitBox { - private double position_x; - private double position_y; - private double size_x; - private double size_y; + private float position_x; + private float position_y; + private float size_x; + private float size_y; public HitBox() { - this.position_x = 0.0; - this.position_y = 0.0; - this.size_x = 0.0; - this.size_y = 0.0; + this.position_x = 0.0f; + this.position_y = 0.0f; + this.size_x = 0.0f; + this.size_y = 0.0f; + } + + + public HitBox(float posX, float posY, float sizeX, float sizeY) { + this.position_x = posX; + this.position_y = posY; + this.size_x = sizeX; + this.size_y = sizeY; } - public void setPosition_x(Double position_x){ + public void setPosition_x(float position_x){ this.position_x = position_x; } - public void setPosition_y(Double position_y){ + public void setPosition_y(float position_y){ this.position_y = position_y; } @@ -30,10 +38,10 @@ public class HitBox { public Boolean hit(HitBox hb) { Boolean horiz = false; Boolean ver = false; - Double horizontal1 = this.position_x + this.size_x; - Double vertical1 = this.position_y + this.size_y; - Double horizontal2 = hb.position_x + hb.size_x; - Double vertical2 = hb.position_y + hb.size_y; + float horizontal1 = this.position_x + this.size_x; + float vertical1 = this.position_y + this.size_y; + float horizontal2 = hb.position_x + hb.size_x; + float vertical2 = hb.position_y + hb.size_y; /* @@ -66,27 +74,27 @@ public class HitBox { return horiz && ver; } - public Double getPosX() { + public float getPosX() { return position_x; } - public Double getPosY() { + public float getPosY() { return position_y; } - public Double getSize_x() { + public float getSize_x() { return size_x; } - public void setSize_x(Double size_x) { + public void setSize_x(float size_x) { this.size_x = size_x; } - public Double getSize_y() { + public float getSize_y() { return size_y; } - public void setSize_y(Double size_y) { + public void setSize_y(float size_y) { this.size_y = size_y; } diff --git a/src/gameplay/hitboxes/Passive_HitBox.java b/src/gameplay/hitboxes/Passive_HitBox.java index 51e3674..bd3279d 100644 --- a/src/gameplay/hitboxes/Passive_HitBox.java +++ b/src/gameplay/hitboxes/Passive_HitBox.java @@ -1,5 +1,10 @@ package gameplay.hitboxes; public class Passive_HitBox extends HitBox { - + public Passive_HitBox() { + super(); + } + public Passive_HitBox(float posX, float posY, float sizeX, float sizeY) { + super(posX, posY, sizeX, sizeY); + } } diff --git a/src/gameplay/hitboxes/Passive_throw_HitBox.java b/src/gameplay/hitboxes/Passive_throw_HitBox.java index 88a677c..2cb506e 100644 --- a/src/gameplay/hitboxes/Passive_throw_HitBox.java +++ b/src/gameplay/hitboxes/Passive_throw_HitBox.java @@ -1,5 +1,10 @@ package gameplay.hitboxes; public class Passive_throw_HitBox extends HitBox { - + public Passive_throw_HitBox() { + super(); + } + public Passive_throw_HitBox(float posX, float posY, float sizeX, float sizeY) { + super(posX, posY, sizeX, sizeY); + } } diff --git a/src/gameplay/hitboxes/Push_HitBox.java b/src/gameplay/hitboxes/Push_HitBox.java index c97b52b..3a678a7 100644 --- a/src/gameplay/hitboxes/Push_HitBox.java +++ b/src/gameplay/hitboxes/Push_HitBox.java @@ -5,4 +5,7 @@ public class Push_HitBox extends HitBox { public Push_HitBox() { super(); } + public Push_HitBox(float posX, float posY, float sizeX, float sizeY) { + super(posX, posY, sizeX, sizeY); + } } From f56c84ef8e1c3e8a00174081e007e6181b01883f Mon Sep 17 00:00:00 2001 From: no Date: Thu, 10 Jun 2021 10:06:44 +0200 Subject: [PATCH 2/3] Added some more frames for Blue. Updated Action constructors. --- pom.xml | 2 +- .../Characters/Blue/BlueBaseFrames.java | 177 +++++++++++++++++- .../Characters/Blue/CharacterBlue.java | 15 +- src/gameplay/actions/Attack.java | 41 ++-- src/gameplay/actions/Dash.java | 10 +- src/gameplay/actions/Jump.java | 8 +- src/gameplay/actions/Throw.java | 11 +- 7 files changed, 238 insertions(+), 26 deletions(-) diff --git a/pom.xml b/pom.xml index 5593d30..6a80a64 100644 --- a/pom.xml +++ b/pom.xml @@ -34,7 +34,7 @@ 3.2.3 - natives-windows + natives-linux 11 diff --git a/src/gameplay/Characters/Blue/BlueBaseFrames.java b/src/gameplay/Characters/Blue/BlueBaseFrames.java index e4d9357..24b56b8 100644 --- a/src/gameplay/Characters/Blue/BlueBaseFrames.java +++ b/src/gameplay/Characters/Blue/BlueBaseFrames.java @@ -39,6 +39,11 @@ public class BlueBaseFrames { return blueStandframe1; } + protected static Frame[] blueStandFrames() { + Frame[] sf = {generateStandFrame1(),generateStandFrame2()}; + return sf; + } + private static Frame generateCrouchFrame1(){ Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); @@ -49,10 +54,15 @@ public class BlueBaseFrames { pthb.add(bStandPTHB1); Frame blueStandframe1 = new Frame(0.0,0.0,phb,new ArrayList(),pthb,new ArrayList(), bStandPB1,true,true,true,true,true); - blueStandframe1.setSpriteWrap(112,0,112,120); + blueStandframe1.setSpriteWrap(112,120,112,120); return blueStandframe1; } + protected static Frame[] blueCrouchFrames() { + Frame[] cF = {generateCrouchFrame1()}; + return cF; + } + private static Frame generateNeutralJumpFrame1(){ Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); @@ -81,6 +91,17 @@ public class BlueBaseFrames { return blueStandframe1; } + protected static Frame[] blueNeutralJump() { + Frame[] jF = new Frame[40]; + for(int i = 0; i < jF.length/2; i++) { + jF[i] = generateNeutralJumpFrame1(); + } + for(int i = jF.length/2; i < jF.length; i++) { + jF[i] = generateNeutralJumpFrame2(); + } + return jF; + } + private static Frame GenerateForwardJumpFrame1(){ Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); @@ -109,6 +130,17 @@ public class BlueBaseFrames { return blueStandframe1; } + protected static Frame[] blueForwardJump() { + Frame[] jF = new Frame[40]; + for(int i = 0; i < jF.length/2; i++) { + jF[i] = GenerateForwardJumpFrame1(); + } + for(int i = jF.length/2; i < jF.length; i++) { + jF[i] = GenerateForwardJumpFrame2(); + } + return jF; + } + private static Frame BackJumpFrame1(){ Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); @@ -123,6 +155,17 @@ public class BlueBaseFrames { return blueStandframe1; } + protected static Frame[] blueBackJump() { + Frame[] jF = new Frame[40]; + for(int i = 0; i < jF.length/2; i++) { + jF[i] = BackJumpFrame1(); + } + for(int i = jF.length/2; i < jF.length; i++) { + jF[i] = BackJumpFrame2(); + } + return jF; + } + private static Frame BackJumpFrame2(){ Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); @@ -137,6 +180,138 @@ public class BlueBaseFrames { return blueStandframe1; } + private static Frame walkForwardFrame1(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,8.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(220,0,112,120); + return blueStandframe1; + } + + private static Frame walkForwardFrame2(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,8.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(330,0,112,120); + return blueStandframe1; + } + + private static Frame walkForwardFrame3(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,8.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(420,0,112,120); + return blueStandframe1; + } + + private static Frame walkForwardFrame4(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,8.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(500,0,112,120); + return blueStandframe1; + } + + protected static Frame[] blueFWalk() { + Frame[] f = new Frame[4]; + f[0] = walkForwardFrame1(); + f[1] = walkForwardFrame2(); + f[2] = walkForwardFrame3(); + f[3] = walkForwardFrame4(); + return f; + } + + + private static Frame walkBackFrame4(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,-8.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(220,0,112,120); + return blueStandframe1; + } + + private static Frame walkBackFrame3(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,-8.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(330,0,112,120); + return blueStandframe1; + } + + private static Frame walkBackFrame2(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,-8.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(420,0,112,120); + return blueStandframe1; + } + + private static Frame walkBackFrame1(){ + Passive_HitBox bStandPHB1 = new Passive_HitBox(70,70,150,500); + Passive_throw_HitBox bStandPTHB1 = new Passive_throw_HitBox(70,400,150,100); + Push_HitBox bStandPB1 = new Push_HitBox(70,70,150,500); + ArrayList phb = new ArrayList(); + ArrayList pthb = new ArrayList(); + phb.add(bStandPHB1); + pthb.add(bStandPTHB1); + Frame blueStandframe1 = new Frame(0.0,-8.0,phb,new ArrayList(),pthb,new ArrayList(), + bStandPB1,true,true,true,true,true); + blueStandframe1.setSpriteWrap(500,0,112,120); + return blueStandframe1; + } + + protected static Frame[] blueBWalk() { + Frame[] f = new Frame[4]; + f[0] = walkBackFrame1(); + f[1] = walkBackFrame2(); + f[2] = walkBackFrame3(); + f[3] = walkBackFrame4(); + return f; + } + + public static void main(String[] args) { Engine engine = new Engine(640, 480, new Vector3f(4.0f, 3.0f)); engine.init(); diff --git a/src/gameplay/Characters/Blue/CharacterBlue.java b/src/gameplay/Characters/Blue/CharacterBlue.java index df11ae9..64540f7 100644 --- a/src/gameplay/Characters/Blue/CharacterBlue.java +++ b/src/gameplay/Characters/Blue/CharacterBlue.java @@ -1,9 +1,22 @@ package gameplay.Characters.Blue; +import gameplay.actions.Jump; import gameplay.entities.Character; +import gameplay.frames.Frame; +import gameplay.Characters.Blue.BlueBaseFrames; + +import static gameplay.input.ButtonIG.*; public class CharacterBlue { - public Character generateCharBlue(){ + public static Character generateCharBlue(){ + Frame[] standF = BlueBaseFrames.blueStandFrames(); + Frame[] crouchF = BlueBaseFrames.blueCrouchFrames(); + Frame[] nJumpF = BlueBaseFrames.blueNeutralJump(); + Frame[] fJumpF = BlueBaseFrames.blueForwardJump(); + Frame[] bJumpF = BlueBaseFrames.blueBackJump(); + Frame[] fWalkF = BlueBaseFrames.blueFWalk(); + Frame[] bWalkF = BlueBaseFrames.blueBWalk(); + return new Character(); } } diff --git a/src/gameplay/actions/Attack.java b/src/gameplay/actions/Attack.java index 87b64a5..72e2097 100644 --- a/src/gameplay/actions/Attack.java +++ b/src/gameplay/actions/Attack.java @@ -10,24 +10,31 @@ public class Attack implements Action { /** * Defines if the attack is a special one (E.G. a fireball) or a normal one (a punch) */ - private static boolean isSpecial; + private boolean isSpecial; + + private Status requiredStatus; - private static Status requiredStatus; - /** * The suite of Inputs to have the move come out. * For example, a classic fireball would be something like * {{DOWN},{DOWN,RIGHT},{RIGHT},{A}} */ - private static ButtonIG[][] command; + private ButtonIG[][] command; /** * The different sections of the attack */ private attackPart[] parts; - + + public Attack(boolean isSpecial, Status requiredStatus, ButtonIG[][] command, attackPart[] parts) { + this.isSpecial = isSpecial; + this.requiredStatus = requiredStatus; + this.command = command; + this.parts = parts; + } + @Override public ArrayList getFrame() { ArrayList res = new ArrayList(); @@ -47,21 +54,21 @@ public class Attack implements Action { return res; } - public static boolean isIsSpecial() { - return isSpecial; + public boolean isIsSpecial() { + return this.isSpecial; } - public static void setIsSpecial(boolean isSpecial) { - Attack.isSpecial = isSpecial; + public void setIsSpecial(boolean isSpecial) { + this.isSpecial = isSpecial; } @Override public ButtonIG[][] getCommand() { - return command; + return this.command; } - public static void setCommand(ButtonIG[][] command) { - Attack.command = command; + public void setCommand(ButtonIG[][] command) { + this.command = command; } public attackPart[] getParts() { @@ -72,13 +79,15 @@ public class Attack implements Action { this.parts = parts; } - public static Status getRequiredStatus() { - return requiredStatus; + public Status getRequiredStatus() { + return this.requiredStatus; } - public static void setRequiredStatus(Status requiredStatus) { - Attack.requiredStatus = requiredStatus; + public void setRequiredStatus(Status requiredStatus) { + this.requiredStatus = requiredStatus; } public boolean isSpecial() {return this.isSpecial();} + + } diff --git a/src/gameplay/actions/Dash.java b/src/gameplay/actions/Dash.java index 3800c86..190a5de 100644 --- a/src/gameplay/actions/Dash.java +++ b/src/gameplay/actions/Dash.java @@ -11,11 +11,11 @@ public class Dash implements Action { * For example, a Front Dash would be something like * {{FORWARD},{FORWARD}} */ - private static ButtonIG[][] command; + private ButtonIG[][] command; private Frame[] frames; - + @Override public ArrayList getFrame() { ArrayList res = new ArrayList(); @@ -27,7 +27,11 @@ public class Dash implements Action { @Override public ButtonIG[][] getCommand() { - return command; + return this.command; } + public Dash(ButtonIG[][] command, Frame[] frames) { + this.command = command; + this.frames = frames; + } } diff --git a/src/gameplay/actions/Jump.java b/src/gameplay/actions/Jump.java index 5adabb0..14e422b 100644 --- a/src/gameplay/actions/Jump.java +++ b/src/gameplay/actions/Jump.java @@ -12,7 +12,7 @@ public class Jump implements Action { * For example, a Front Jump would be something like * {{UP,RIGHT}} */ - private static ButtonIG[][] command; + private ButtonIG[][] command; private Frame[] frames; @@ -27,7 +27,11 @@ public class Jump implements Action { @Override public ButtonIG[][] getCommand() { - return command; + return this.command; } + public Jump(ButtonIG[][] command, Frame[] frames) { + this.command = command; + this.frames = frames; + } } diff --git a/src/gameplay/actions/Throw.java b/src/gameplay/actions/Throw.java index 8d631ed..be0cdc4 100644 --- a/src/gameplay/actions/Throw.java +++ b/src/gameplay/actions/Throw.java @@ -10,7 +10,7 @@ public class Throw implements Action { /** * Defines if the throw is a special one (E.G. a Moonsault Press ) or a normal one */ - private static boolean isSpecial; + private boolean isSpecial; /** * The suite of Inputs to have the move come out. @@ -52,7 +52,14 @@ public class Throw implements Action { @Override public ButtonIG[][] getCommand() { - return command; + return this.command; } + public Throw(boolean isSpecial, ThrowPart[] parts) { + this.isSpecial = isSpecial; + this.parts = parts; + } + + public Throw() { + } } From 93f5727569d62ec58f0226d70fb962392aa9df75 Mon Sep 17 00:00:00 2001 From: no Date: Thu, 10 Jun 2021 11:50:38 +0200 Subject: [PATCH 3/3] Built a basic movement test, can't test because it doesn't recognize my gamepads. --- .../Characters/Blue/BlueBaseFrames.java | 1 + .../Characters/Blue/CharacterBlue.java | 40 +++- src/gameplay/actions/Throw.java | 8 +- src/gameplay/entities/Character.java | 174 ++++++++++-------- src/gameplay/match/match.java | 121 ++++++++---- 5 files changed, 227 insertions(+), 117 deletions(-) diff --git a/src/gameplay/Characters/Blue/BlueBaseFrames.java b/src/gameplay/Characters/Blue/BlueBaseFrames.java index 24b56b8..284e4ca 100644 --- a/src/gameplay/Characters/Blue/BlueBaseFrames.java +++ b/src/gameplay/Characters/Blue/BlueBaseFrames.java @@ -317,6 +317,7 @@ public class BlueBaseFrames { engine.init(); String path = "textures/Sprite.png"; + String pathToBG = "textures/background_beach.png"; Frame f = generateStandFrame1(); ObjectGl blue = new ObjectGl(0f, 60f, 80f, 5f, path, null); diff --git a/src/gameplay/Characters/Blue/CharacterBlue.java b/src/gameplay/Characters/Blue/CharacterBlue.java index 64540f7..390c4ee 100644 --- a/src/gameplay/Characters/Blue/CharacterBlue.java +++ b/src/gameplay/Characters/Blue/CharacterBlue.java @@ -1,9 +1,12 @@ package gameplay.Characters.Blue; -import gameplay.actions.Jump; +import gameplay.actions.*; import gameplay.entities.Character; import gameplay.frames.Frame; import gameplay.Characters.Blue.BlueBaseFrames; +import gameplay.input.ButtonIG; + +import java.util.ArrayList; import static gameplay.input.ButtonIG.*; @@ -17,6 +20,39 @@ public class CharacterBlue { Frame[] fWalkF = BlueBaseFrames.blueFWalk(); Frame[] bWalkF = BlueBaseFrames.blueBWalk(); - return new Character(); + ButtonIG[][] fjcmd = {{UP,FORWARD}}; + ButtonIG[][] bjcmd = {{UP,BACK}}; + ButtonIG[][] njcmd = {{UP}}; + + + Jump fJ = new Jump(fjcmd,fJumpF); + Jump nJ = new Jump(njcmd,nJumpF); + Jump bJ = new Jump(bjcmd,bJumpF); + + /* + * Temporary values to change later + */ + Frame[] fDashF = new Frame[0]; + Frame[] bDashF = new Frame[0]; + + ThrowPart[] tp = new ThrowPart[0]; + + ButtonIG[][] throwCMD = {{BACK,FORWARD,UP,DOWN},{BACK,FORWARD,UP,DOWN},{BACK,FORWARD,UP,DOWN}}; + ButtonIG[][] fdashCMD = {{BACK,FORWARD,UP,DOWN},{BACK,FORWARD,UP,DOWN},{BACK,FORWARD,UP,DOWN}}; + ButtonIG[][] bdashCMD = {{BACK,FORWARD,UP,DOWN},{BACK,FORWARD,UP,DOWN},{BACK,FORWARD,UP,DOWN}}; + + Throw th = new Throw(false,throwCMD,tp); + Dash fDash = new Dash(fdashCMD,fDashF); + Dash bDash =new Dash(bdashCMD,bDashF); + + Frame[] fallingFs = new Frame[0]; + + Frame f = new Frame(); + + Attack[] atks = new Attack[0]; + + Character c = new Character(0,0,standF[0],1000,atks,fJ,nJ,bJ,fDash,bDash,th,standF,crouchF,fWalkF,bWalkF,f,f,fallingFs,f,f,f,f); + + return c; } } diff --git a/src/gameplay/actions/Throw.java b/src/gameplay/actions/Throw.java index be0cdc4..374ea7c 100644 --- a/src/gameplay/actions/Throw.java +++ b/src/gameplay/actions/Throw.java @@ -17,7 +17,7 @@ public class Throw implements Action { * For example, a Moonsault Press would be something like * {{LEFT},{DOWN,LEFT},{DOWN},{DOWN,RIGHT},{RIGHT},{RIGHT,UP},{UP},{A}} */ - private static ButtonIG[][] command; + private ButtonIG[][] command; /** * The different sections of the throw @@ -62,4 +62,10 @@ public class Throw implements Action { public Throw() { } + + public Throw(boolean isSpecial, ButtonIG[][] command, ThrowPart[] parts) { + this.isSpecial = isSpecial; + this.command = command; + this.parts = parts; + } } diff --git a/src/gameplay/entities/Character.java b/src/gameplay/entities/Character.java index fd357ae..75a93ae 100644 --- a/src/gameplay/entities/Character.java +++ b/src/gameplay/entities/Character.java @@ -13,8 +13,8 @@ import java.util.ArrayList; * */ public class Character extends Entity { - private static int maxHP; - private static int currentHP; + private int maxHP; + private int currentHP; /** * All of the attacks, both special and normal, of the character @@ -22,23 +22,23 @@ public class Character extends Entity { * For example, you should have something like : * {Rising Punch, FireBall, Jump D/C/B/A, Crouch D/C/B/A, Stand D/C/B/A} */ - private static Attack[] attacks; + private Attack[] attacks; - private static Jump forwardJump; - private static Jump neutralJump; - private static Jump backJump; + private Jump forwardJump; + private Jump neutralJump; + private Jump backJump; - private static Dash forwardDash; - private static Dash backDash; + private Dash forwardDash; + private Dash backDash; - private static Throw normalthrow; + private Throw normalthrow; - private static Status status; + private Status status; - private static Frame[] defaultStandingFrames; - private static Frame[] defaultCrouchingFrames; - private static Frame[] forwardWalkFrames; - private static Frame[] backWalkFrames; + private Frame[] defaultStandingFrames; + private Frame[] defaultCrouchingFrames; + private Frame[] forwardWalkFrames; + private Frame[] backWalkFrames; private Frame hitInAirFrame; //the frame to display when hit in the air. Shouldmake the character rise private Frame fallingframe; //the frame to display when falling from the air private Frame[] knockedDownFrames; @@ -67,111 +67,137 @@ public class Character extends Entity { this.currentHP = this.maxHP; } - + public Character(int posx, int posy, Frame f, int maxHP, Attack[] attacks, Jump forwardJump, Jump neutralJump, Jump backJump, Dash forwardDash, Dash backDash, Throw normalthrow, Frame[] defaultStandingFrames, Frame[] defaultCrouchingFrames, Frame[] forwardWalkFrames, Frame[] backWalkFrames, Frame hitInAirFrame, Frame fallingframe, Frame[] knockedDownFrames, Frame standGuardFrame, Frame crouchGuardFrame, Frame standHitFrame, Frame crouchHitFrame) { + super(posx, posy, f); + this.maxHP = maxHP; + this.attacks = attacks; + this.forwardJump = forwardJump; + this.neutralJump = neutralJump; + this.backJump = backJump; + this.forwardDash = forwardDash; + this.backDash = backDash; + this.normalthrow = normalthrow; + this.defaultStandingFrames = defaultStandingFrames; + this.defaultCrouchingFrames = defaultCrouchingFrames; + this.forwardWalkFrames = forwardWalkFrames; + this.backWalkFrames = backWalkFrames; + this.hitInAirFrame = hitInAirFrame; + this.fallingframe = fallingframe; + this.knockedDownFrames = knockedDownFrames; + this.standGuardFrame = standGuardFrame; + this.crouchGuardFrame = crouchGuardFrame; + this.standHitFrame = standHitFrame; + this.crouchHitFrame = crouchHitFrame; + this.nextAttackParts = new ArrayList(); + this.nextThrowParts = new ArrayList(); + this.currentHP = maxHP; + this.status = Status.NORMAL; + } + public void setMaxHP(int HP) { this.maxHP = HP; } public int getMaxHP() { return this.maxHP;} - public static Attack[] getAttacks() { - return attacks; + public Attack[] getAttacks() { + return this.attacks; } - public static void setAttacks(Attack[] attacks) { - Character.attacks = attacks; + public void setAttacks(Attack[] attacks) { + this.attacks = attacks; } - public static Jump getForwardJump() { - return forwardJump; + public Jump getForwardJump() { + return this.forwardJump; } - public static void setForwardJump(Jump forwardJump) { - Character.forwardJump = forwardJump; + public void setForwardJump(Jump forwardJump) { + this.forwardJump = forwardJump; } - public static Jump getNeutralJump() { - return neutralJump; + public Jump getNeutralJump() { + return this.neutralJump; } - public static void setNeutralJump(Jump neutralJump) { - Character.neutralJump = neutralJump; + public void setNeutralJump(Jump neutralJump) { + this.neutralJump = neutralJump; } - public static Jump getBackJump() { - return backJump; + public Jump getBackJump() { + return this.backJump; } - public static void setBackJump(Jump backJump) { - Character.backJump = backJump; + public void setBackJump(Jump backJump) { + this.backJump = backJump; } - public static Dash getForwardDash() { - return forwardDash; + public Dash getForwardDash() { + return this.forwardDash; } - public static void setForwardDash(Dash forwardDash) { - Character.forwardDash = forwardDash; + public void setForwardDash(Dash forwardDash) { + this.forwardDash = forwardDash; } - public static Dash getBackDash() { - return backDash; + public Dash getBackDash() { + return this.backDash; } - public static void setBackDash(Dash backDash) { - Character.backDash = backDash; + public void setBackDash(Dash backDash) { + this.backDash = backDash; } - public static Throw getNormalthrow() { - return normalthrow; + public Throw getNormalthrow() { + return this.normalthrow; } - public static void setNormalthrow(Throw normalthrow) { - Character.normalthrow = normalthrow; + public void setNormalthrow(Throw normalthrow) { + this.normalthrow = normalthrow; } - public static Status getStatus() { - return status; + public Status getStatus() { + return this.status; } - public static void setStatus(Status status) { - Character.status = status; + public void setStatus(Status status) { + this.status = status; } - public static Frame[] getDefaultStandingFrames() { - return defaultStandingFrames; + public Frame[] getDefaultStandingFrames() { + return this.defaultStandingFrames; } - public static void setDefaultStandingFrames(Frame[] defaultStandingFrames) { - Character.defaultStandingFrames = defaultStandingFrames; + public void setDefaultStandingFrames(Frame[] defaultStandingFrames) { + this.defaultStandingFrames = defaultStandingFrames; } - public static Frame[] getDefaultCrouchingFrames() { - return defaultCrouchingFrames; + public Frame[] getDefaultCrouchingFrames() { + return this.defaultCrouchingFrames; } - public static void setDefaultCrouchingFrames(Frame[] defaultCrouchingFrames) { - Character.defaultCrouchingFrames = defaultCrouchingFrames; + public void setDefaultCrouchingFrames(Frame[] defaultCrouchingFrames) { + this.defaultCrouchingFrames = defaultCrouchingFrames; } - public static Frame[] getForwardWalkFrames() { - return forwardWalkFrames; + public Frame[] getForwardWalkFrames() { + return this.forwardWalkFrames; } - public static void setForwardWalkFrames(Frame[] forwardWalkFrames) { - Character.forwardWalkFrames = forwardWalkFrames; + public void setForwardWalkFrames(Frame[] forwardWalkFrames) { + this.forwardWalkFrames = forwardWalkFrames; } - public static Frame[] getBackWalkFrames() { - return backWalkFrames; + public Frame[] getBackWalkFrames() { + return this.backWalkFrames; } - public static void setBackWalkFrames(Frame[] backWalkFrames) { - Character.backWalkFrames = backWalkFrames; + public void setBackWalkFrames(Frame[] backWalkFrames) { + this.backWalkFrames = backWalkFrames; } public ArrayList getNextAttackParts() { - return nextAttackParts; + return this.nextAttackParts; } public void setNextAttackParts(ArrayList nextAttackParts) { @@ -194,7 +220,7 @@ public class Character extends Entity { } public ArrayList getNextThrowParts() { - return nextThrowParts; + return this.nextThrowParts; } public void setNextThrowParts(ArrayList nextAttackParts) { @@ -216,8 +242,8 @@ public class Character extends Entity { this.nextThrowParts.remove(0); } - public static int getCurrentHP() { - return currentHP; + public int getCurrentHP() { + return this.currentHP; } public void setCurrentHP(int currentHP) { @@ -240,7 +266,7 @@ public class Character extends Entity { } public Frame getHitInAirFrame() { - return hitInAirFrame; + return this.hitInAirFrame; } public void setHitInAirFrame(Frame hitInAirFrame) { @@ -248,7 +274,7 @@ public class Character extends Entity { } public Frame getFallingframe() { - return fallingframe; + return this.fallingframe; } public void setFallingframe(Frame fallingframe) { @@ -256,7 +282,7 @@ public class Character extends Entity { } public Frame[] getKnockedDownFrames() { - return knockedDownFrames; + return this.knockedDownFrames; } public void setKnockedDownFrames(Frame[] knockedDownFrames) { @@ -264,7 +290,7 @@ public class Character extends Entity { } public Frame getStandGuardFrame() { - return standGuardFrame; + return this.standGuardFrame; } public void setStandGuardFrame(Frame standGuardFrame) { @@ -272,7 +298,7 @@ public class Character extends Entity { } public Frame getCrouchGuardFrame() { - return crouchGuardFrame; + return this.crouchGuardFrame; } public void setCrouchGuardFrame(Frame crouchGuardFrame) { @@ -280,7 +306,7 @@ public class Character extends Entity { } public Frame getStandHitFrame() { - return standHitFrame; + return this.standHitFrame; } public void setStandHitFrame(Frame standHitFrame) { @@ -288,7 +314,7 @@ public class Character extends Entity { } public Frame getCrouchHitFrame() { - return crouchHitFrame; + return this.crouchHitFrame; } public void setCrouchHitFrame(Frame crouchHitFrame) { diff --git a/src/gameplay/match/match.java b/src/gameplay/match/match.java index 1742cb5..39a8836 100644 --- a/src/gameplay/match/match.java +++ b/src/gameplay/match/match.java @@ -1,7 +1,11 @@ package gameplay.match; +import engine.Engine; import engine.input.Button; import engine.input.GamepadInput; +import engine.math.Vector3f; +import engine.object.ObjectGl; +import gameplay.Characters.Blue.CharacterBlue; import gameplay.actions.Attack; import gameplay.actions.attackPart; import gameplay.actions.Throw; @@ -36,42 +40,36 @@ public class match { /** * the level of the "ground", used to determine if a character is in the air or not. */ - private static final int groundLevel = 250; + private static final int groundLevel = 200; - private int timer; - private InputBuffer inputsP1, inputsP2; - private int roundsWonP1, roundsWonP2; - private Character p1, p2; //characters of player 1 and 2 + private static int timer; + private static InputBuffer inputsP1, inputsP2; + private static int roundsWonP1, roundsWonP2; + private static Character p1, p2; //characters of player 1 and 2 private static long timeStamp1; private static long timeStamp2; private static int frameCount; + private static int oldPosXp1; + private static int oldPosXp2; + private static int oldPosYp1; + private static int oldPosYp2; private static GamepadInput gamepad1 = null; private static GamepadInput gamepad2 = null; - - /** - * base constructor of the match class. - * Initiates a new match with with two given characters - */ - public match(Character p1, Character p2) { - this.timer = 99; - this.inputsP1 = new InputBuffer(inputBufferSize); - this.inputsP2 = new InputBuffer(inputBufferSize); - this.p1 = p1; - this.p2 = p2; - this.roundsWonP1 = 0; - this.roundsWonP2 = 0; - } + + private static ObjectGl objP1,objP2; + private static Engine engine; + private static Frame f; /** * Starts a new round, by placing the timer back at base value, characters back at full hp and such. */ - private void startNewRound() { - this.timer = 99; - this.inputsP1 = new InputBuffer(inputBufferSize); - this.inputsP2 = new InputBuffer(inputBufferSize); - this.p1.setPos(-500, groundLevel); //TODO : change to better values if needed - this.p2.setPos(500, groundLevel); //TODO : change to better values if needed + private static void startNewRound() { + timer = 99; + inputsP1 = new InputBuffer(inputBufferSize); + inputsP2 = new InputBuffer(inputBufferSize); + p1.setPos(-750, groundLevel); //TODO : change to better values if needed + p2.setPos(-750, groundLevel); //TODO : change to better values if needed } /** @@ -79,7 +77,7 @@ public class match { * Used for playing animations and such. * TODO : Implement this once we know what to do. */ - private void endRound() { + private static void endRound() { } @@ -88,7 +86,7 @@ public class match { * Used for playing animations and such. * TODO : Implement this once we know what to do. */ - private void endMatch() { + private static void endMatch() { } @@ -156,7 +154,32 @@ public class match { } */ boolean Joystick1Present = glfwJoystickPresent(GLFW_JOYSTICK_1); boolean Joystick2Present = glfwJoystickPresent(GLFW_JOYSTICK_2); - match match = new match(new Character(),new Character()); //TODO : Change to not empty chars + + engine = new Engine(640, 480, new Vector3f(4.0f, 3.0f)); + engine.init(); + + String path = "textures/Sprite.png"; + String pathToBG = "textures/background_beach.png"; + + ObjectGl background = new ObjectGl(0f,1f,1f,10f, pathToBG, null); + background.setTextureWrap(0,0,621, 224, ObjectGl.DEFAULT); + background.translate(new Vector3f(-3011.0f, 1400.0f, 1.0f)); + engine.add_objectGl(background); + + p1 = CharacterBlue.generateCharBlue(); + p2 = CharacterBlue.generateCharBlue(); + objP1 = new ObjectGl(1f, 60f, 80f, 5f, path, null); + objP2 = new ObjectGl(2f, 60f, 80f, 5f, path, null); + engine.add_objectGl(objP1); + engine.add_objectGl(objP2); + + f = p1.getCurrentframe(); + objP1.setTextureWrap(f.getSprite()[0], f.getSprite()[1], f.getSprite()[2], f.getSprite()[3], ObjectGl.STICK_TOP); + objP1.translate(new Vector3f(-750,200,0)); + f = p2.getCurrentframe(); + objP2.setTextureWrap(f.getSprite()[0], f.getSprite()[1], f.getSprite()[2], f.getSprite()[3], ObjectGl.STICK_TOP); + objP2.translate(new Vector3f(750,200,0)); + objP2.flipTextureWrapH(); if (Joystick1Present) { gamepad1 = new GamepadInput(GLFW_JOYSTICK_1); @@ -166,10 +189,12 @@ public class match { gamepad2 = new GamepadInput(GLFW_JOYSTICK_2); gamepad2.inputRefresh(); } + ac(0); } - private void ac(int i) { + private static void ac(int i) { + System.out.println(i); switch (i) { //initiate a round @@ -182,6 +207,11 @@ public class match { //checks if one or both of the chars are out of health case 10: + oldPosXp1 = p1.getPosX(); + oldPosXp2 = p2.getPosX(); + oldPosYp1 = p1.getPosY(); + oldPosYp2 = p2.getPosY(); + if(p1.getCurrentHP() <= 0 && p2.getCurrentHP() <= 0) { ac(11);} else if(p1.getCurrentHP() <= 0) { ac(12);} else if(p2.getCurrentHP() <= 0) { ac(13);} @@ -210,8 +240,8 @@ public class match { //read both players inputs case 20: gamepad1.inputRefresh(); - gamepad2.inputRefresh(); inputsP1.recordInputsFromGamepad(gamepad1, p1.getPosX() < p2.getPosX()); + gamepad2.inputRefresh(); inputsP2.recordInputsFromGamepad(gamepad2, p2.getPosX() <= p1.getPosX()); handleInputs(p1, inputsP1); handleInputs(p2, inputsP2); @@ -238,18 +268,29 @@ public class match { nextFrame(p2,inputsP2); updatePos(p1); updatePos(p2); + f = p1.getCurrentframe(); + objP1.setTextureWrap(f.getSprite()[0], f.getSprite()[1], f.getSprite()[2], f.getSprite()[3], ObjectGl.STICK_TOP); + objP1.translate(new Vector3f(p1.getPosX()-oldPosXp1,p1.getPosY()-oldPosYp1,0)); + f = p2.getCurrentframe(); + objP2.setTextureWrap(f.getSprite()[0], f.getSprite()[1], f.getSprite()[2], f.getSprite()[3], ObjectGl.STICK_TOP); + objP2.translate(new Vector3f(p2.getPosX()-oldPosXp2,p2.getPosY()-oldPosYp2,0)); + boolean p1LooksRight = p1.getPosX() < p2.getPosX(); if(p1LooksRight) { - Frame f = new Frame(); - f.clone(p2.getCurrentframe()); - f.invertHitBoxes(); - p2.setCurrentFrame(f); + Frame nf = new Frame(); + nf.clone(p2.getCurrentframe()); + nf.invertHitBoxes(); + p2.setCurrentFrame(nf); + objP2.flipTextureWrapH(); } else { - Frame f = new Frame(); - f.clone(p1.getCurrentframe()); - f.invertHitBoxes(); - p1.setCurrentFrame(f); + Frame nf = new Frame(); + nf.clone(p1.getCurrentframe()); + nf.invertHitBoxes(); + p1.setCurrentFrame(nf); + objP1.flipTextureWrapH(); } + engine.update(); + engine.render(); ac(23); break; @@ -472,7 +513,7 @@ public class match { * @param c the character * @param in the input buffer corresponding to the character */ - private void nextFrame(Character c, InputBuffer in) { + private static void nextFrame(Character c, InputBuffer in) { if(!c.getFrames().getNextframe().equals(null)){ c.goToNextFrames(); } else { @@ -496,7 +537,7 @@ public class match { } } - private void updatePos(Character c) { + private static void updatePos(Character c) { c.setPos((int)(c.getPosX()+c.getCurrentframe().getMove_x()),(int)(c.getPosY()+c.getCurrentframe().getMove_y())); }