Skip to content

Commit 4318696

Browse files
committed
Initial stage of shooting
2 parents fb07e5d + d6a48c1 commit 4318696

File tree

8 files changed

+179
-3
lines changed

8 files changed

+179
-3
lines changed

res/sprite_sheet.png

13.4 KB
Loading

src/com/redomar/game/Game.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,7 @@ public class Game extends Canvas implements Runnable {
7171
BufferedImage.TYPE_INT_RGB);
7272
private Screen screen;
7373
private static InputHandler input;
74+
private static MouseHandler mouse;
7475
private WindowHandler window;
7576
private LevelHandler level;
7677
private Player player;
@@ -124,6 +125,7 @@ public void init() {
124125

125126
screen = new Screen(WIDTH, HEIGHT, new SpriteSheet("/sprite_sheet.png"));
126127
input = new InputHandler(this);
128+
setMouse(new MouseHandler(this));
127129
setWindow(new WindowHandler(this));
128130
setMap("/levels/custom_level.png");
129131
setMap(1);
@@ -260,6 +262,7 @@ public void render() {
260262
*/
261263

262264
getLevel().renderEntities(screen);
265+
getLevel().renderProjectileEntities(screen);
263266

264267
for (int y = 0; y < screen.getHeight(); y++) {
265268
for (int x = 0; x < screen.getWidth(); x++) {
@@ -305,6 +308,7 @@ public void render() {
305308
Graphics g = bs.getDrawGraphics();
306309
g.drawRect(0, 0, getWidth(), getHeight());
307310
g.drawImage(image, 0, 0, getWidth(), getHeight() - 30, null);
311+
status(g, isDevMode(), isClosing());
308312
// Font.render("Hi", screen, 0, 0, Colours.get(-1, -1, -1, 555), 1);
309313
g.drawImage(image2, 0, getHeight() - 30, getWidth(), getHeight(), null);
310314
g.setColor(Color.WHITE);
@@ -317,7 +321,6 @@ public void render() {
317321
g.drawString("Press Q to quit", (getWidth()/2)-("Press Q to quit".length()*3), getHeight() -17);
318322
g.setColor(Color.YELLOW);
319323
g.drawString(time.getTime(), (getWidth() - 58), (getHeight() - 3));
320-
status(g, isDevMode(), isClosing());
321324
g.setColor(Color.WHITE);
322325
if (noAudioDevice == true) {
323326
g.setColor(Color.RED);
@@ -354,14 +357,18 @@ public void render() {
354357

355358
private void status(Graphics g, boolean TerminalMode, boolean TerminalQuit) {
356359
if (TerminalMode == true){
357-
g.setColor(Color.GREEN);
360+
g.setColor(Color.CYAN);
358361
g.drawString("JavaGame Stats", 0, 10);
359362
g.drawString("FPS/TPS: " + fps + "/" + tps, 0, 25);
360363
if ((player.getNumSteps() & 15) == 15) {
361364
steps += 1;
362365
}
363366
g.drawString("Foot Steps: " + steps, 0, 40);
364367
g.drawString("NPC: " + WordUtils.capitalize(String.valueOf(isNpc())) , 0, 55);
368+
g.drawString("Mouse: " + getMouse().getX() + "x |" + getMouse().getY() + "y", 0, 70);
369+
if(getMouse().getButton() != -1) g.drawString("Button: " + getMouse().getButton(), 0, 85);
370+
g.setColor(Color.CYAN);
371+
g.fillRect(getMouse().getX()-12, getMouse().getY()-12, 24, 24);
365372
}
366373
if (TerminalQuit == true){
367374
g.setColor(Color.BLACK);
@@ -556,6 +563,14 @@ public void setInput(InputHandler input) {
556563
Game.input = input;
557564
}
558565

566+
public static MouseHandler getMouse() {
567+
return mouse;
568+
}
569+
570+
public static void setMouse(MouseHandler mouse) {
571+
Game.mouse = mouse;
572+
}
573+
559574
public static boolean isDevMode() {
560575
return devMode;
561576
}
Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
package com.redomar.game;
2+
3+
import java.awt.event.MouseEvent;
4+
import java.awt.event.MouseListener;
5+
import java.awt.event.MouseMotionListener;
6+
7+
public class MouseHandler implements MouseListener, MouseMotionListener{
8+
9+
private static int mouseX = -1;
10+
private static int mouseY = -1;
11+
private static int mouseB = -1;
12+
13+
public MouseHandler(Game game){
14+
game.addMouseListener(this);
15+
game.addMouseMotionListener(this);
16+
}
17+
18+
public int getX() {
19+
return mouseX;
20+
}
21+
22+
public int getY() {
23+
return mouseY;
24+
}
25+
26+
public int getButton() {
27+
return mouseB;
28+
}
29+
30+
public void mouseDragged(MouseEvent e) {
31+
mouseX = e.getX();
32+
mouseY = e.getY();
33+
}
34+
35+
public void mouseMoved(MouseEvent e) {
36+
mouseX = e.getX();
37+
mouseY = e.getY();
38+
}
39+
40+
public void mouseClicked(MouseEvent e) {
41+
42+
}
43+
44+
public void mousePressed(MouseEvent e) {
45+
mouseB = e.getButton();
46+
}
47+
48+
public void mouseReleased(MouseEvent e) {
49+
mouseB = -1;
50+
}
51+
52+
public void mouseEntered(MouseEvent e) {
53+
54+
}
55+
56+
public void mouseExited(MouseEvent e) {
57+
58+
}
59+
60+
}

src/com/redomar/game/entities/Mob.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package com.redomar.game.entities;
22

3+
import java.util.ArrayList;
34
import java.util.List;
45
import java.util.Random;
56

7+
import com.redomar.game.entities.projectiles.Projectile;
8+
import com.redomar.game.entities.projectiles.Small;
69
import com.redomar.game.level.LevelHandler;
710
import com.redomar.game.level.Node;
811
import com.redomar.game.level.tiles.Tile;
@@ -29,6 +32,8 @@ public abstract class Mob extends Entity {
2932
* [3] Contains the <strong>yMax
3033
*/
3134
protected int[] collisionBoders = new int[4];
35+
36+
protected List<Projectile> projectiles = new ArrayList<Projectile>();
3237

3338
public Mob(LevelHandler level, String name, int x, int y, double speed, int[] collisionBoders) {
3439
super(level);
@@ -209,6 +214,15 @@ protected void moveMob(double xa, double ya, Mob mob) {
209214
mob.isMoving = false;
210215
}
211216
}
217+
218+
protected void shoot(double x, double y, double dir){
219+
// dir = dir * (180 /Math.PI);
220+
// Printing print = new Printing();
221+
// print.print("Angle: "+ dir, PrintTypes.GAME);
222+
Projectile p = new Small(level, (int) x,(int) y, dir);
223+
projectiles.add(p);
224+
level.addProjectileEntities(p);
225+
}
212226

213227
public String getName() {
214228
return name;

src/com/redomar/game/entities/Player.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,13 @@ public void tick() {
5656
xa += speed;
5757
}
5858
}
59+
60+
if (Game.getMouse().getButton() == 1){
61+
double dx = Game.getMouse().getX() - 480/2;
62+
double dy = Game.getMouse().getY() - 320/2;
63+
double dir = Math.atan2(dy, dx);
64+
shoot(x, y, dir);
65+
}
5966

6067
if (xa != 0 || ya != 0) {
6168
move(xa, ya);
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.redomar.game.entities.projectiles;
2+
3+
import com.redomar.game.entities.Entity;
4+
import com.redomar.game.level.LevelHandler;
5+
6+
public abstract class Projectile extends Entity{
7+
8+
protected final double xOrigin, yOrigin;
9+
protected double angle;
10+
protected double nx, ny;
11+
protected double speed, rate, range, damage;
12+
13+
public Projectile(LevelHandler level, int x, int y, double dir) {
14+
super(level);
15+
xOrigin = x;
16+
yOrigin = y;
17+
angle = dir;
18+
this.x = x;
19+
this.y = y;
20+
}
21+
22+
protected abstract void move();
23+
24+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package com.redomar.game.entities.projectiles;
2+
3+
import com.redomar.game.gfx.Colours;
4+
import com.redomar.game.gfx.Screen;
5+
import com.redomar.game.level.LevelHandler;
6+
7+
public class Small extends Projectile{
8+
9+
public Small(LevelHandler level, int x, int y, double dir) {
10+
super(level, x, y, dir);
11+
range = 200;
12+
damage = 20;
13+
rate = 15;
14+
speed = 4;
15+
16+
nx = speed * Math.cos(angle);
17+
ny = speed * Math.sin(angle);
18+
}
19+
20+
public void tick() {
21+
move();
22+
}
23+
24+
protected void move(){
25+
x += nx;
26+
y += ny;
27+
}
28+
29+
public void render(Screen screen) {
30+
screen.render((int)x,(int)y, 8 * 32, Colours.get(-1, 222, 333, 555), 0x00, 1);
31+
}
32+
33+
}

src/com/redomar/game/level/LevelHandler.java

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ public class LevelHandler {
2626
private int width;
2727
private int height;
2828
private List<Entity> entities = new ArrayList<Entity>();
29+
private List<Entity> entities_p = new ArrayList<Entity>();
2930
private String imagePath;
3031
private BufferedImage image;
3132

@@ -111,12 +112,20 @@ private void generateLevel() {
111112
public synchronized List<Entity> getEntities() {
112113
return this.entities;
113114
}
115+
116+
public synchronized List<Entity> getProjectileEntities() {
117+
return this.entities_p;
118+
}
114119

115120
public void tick() {
116121
for (Entity e : getEntities()) {
117122
e.tick();
118123
}
119-
124+
125+
for (Entity e : getProjectileEntities()) {
126+
e.tick();
127+
}
128+
120129
for (Tile t : Tile.getTiles()) {
121130
if (t == null) {
122131
break;
@@ -154,6 +163,12 @@ public void renderEntities(Screen screen) {
154163
e.render(screen);
155164
}
156165
}
166+
167+
public void renderProjectileEntities(Screen screen){
168+
for (Entity e : getProjectileEntities()){
169+
e.render(screen);
170+
}
171+
}
157172

158173
public Tile getTile(int x, int y) {
159174
if (0 > x || x >= width || 0 > y || y >= height) {
@@ -165,10 +180,18 @@ public Tile getTile(int x, int y) {
165180
public void addEntity(Entity entity) {
166181
this.getEntities().add(entity);
167182
}
183+
184+
public void addProjectileEntities(Entity entity) {
185+
this.getProjectileEntities().add(entity);
186+
}
168187

169188
public void removeEntity(Entity entity) {
170189
this.getEntities().remove(entity);
171190
}
191+
192+
public void removeProjectileEntities(Entity entity) {
193+
this.getProjectileEntities().remove(entity);
194+
}
172195

173196
public void removeEntity(String username) {
174197
int index = 0;

0 commit comments

Comments
 (0)