Skip to content

Commit d6a48c1

Browse files
committed
Added new projectile small bullets
Now can be fired. No collision detection.
1 parent a622bce commit d6a48c1

File tree

5 files changed

+93
-6
lines changed

5 files changed

+93
-6
lines changed

src/com/redomar/game/Game.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -262,6 +262,7 @@ public void render() {
262262
*/
263263

264264
getLevel().renderEntities(screen);
265+
getLevel().renderProjectileEntities(screen);
265266

266267
for (int y = 0; y < screen.getHeight(); y++) {
267268
for (int x = 0; x < screen.getWidth(); x++) {

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

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
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;
912
import com.redomar.game.lib.utils.Vector2i;
10-
import com.redomar.game.script.PrintTypes;
11-
import com.redomar.game.script.Printing;
1213

1314
public abstract class Mob extends Entity {
1415

@@ -31,6 +32,8 @@ public abstract class Mob extends Entity {
3132
* [3] Contains the <strong>yMax
3233
*/
3334
protected int[] collisionBoders = new int[4];
35+
36+
protected List<Projectile> projectiles = new ArrayList<Projectile>();
3437

3538
public Mob(LevelHandler level, String name, int x, int y, double speed, int[] collisionBoders) {
3639
super(level);
@@ -213,9 +216,12 @@ protected void moveMob(double xa, double ya, Mob mob) {
213216
}
214217

215218
protected void shoot(double x, double y, double dir){
216-
Printing print = new Printing();
217-
dir = dir * (180 /Math.PI);
218-
print.print("Angle: "+ dir, PrintTypes.GAME);
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);
219225
}
220226

221227
public String getName() {
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)