Skip to content

Commit f4670c4

Browse files
committed
Merge commit '8791670c'
2 parents cb08b86 + 8791670 commit f4670c4

File tree

6 files changed

+78
-28
lines changed

6 files changed

+78
-28
lines changed

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,4 +69,17 @@ protected boolean isSolid(int xa, int ya, int x, int y) {
6969
public String getName() {
7070
return name;
7171
}
72+
73+
public void setNumSteps(int numSteps) {
74+
this.numSteps = numSteps;
75+
}
76+
77+
public void setMoving(boolean isMoving) {
78+
this.isMoving = isMoving;
79+
}
80+
81+
public void setMovingDir(int movingDir) {
82+
this.movingDir = movingDir;
83+
}
84+
7285
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public void tick() {
4545
move(xa, ya);
4646
isMoving = true;
4747

48-
Packet02Move packet = new Packet02Move(this.getUsername(), this.x, this.y);
48+
Packet02Move packet = new Packet02Move(this.getUsername(), this.x, this.y, this.numSteps, this.isMoving, this.movingDir);
4949
packet.writeData(Game.game.getSocketClient());
5050

5151
} else {

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

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import javax.imageio.ImageIO;
1111

1212
import com.redomar.game.entities.Entity;
13+
import com.redomar.game.entities.Player;
1314
import com.redomar.game.entities.PlayerMP;
1415
import com.redomar.game.gfx.Screen;
1516
import com.redomar.game.level.tiles.Tile;
@@ -19,7 +20,7 @@ public class LevelHandler {
1920
private byte[] tiles;
2021
public int width;
2122
public int height;
22-
public List<Entity> entities = new ArrayList<Entity>();
23+
private List<Entity> entities = new ArrayList<Entity>();
2324
private String imagePath;
2425
private BufferedImage image;
2526

@@ -91,9 +92,13 @@ private void generateLevel() {
9192
}
9293
}
9394
}
95+
96+
public synchronized List<Entity>getEntities(){
97+
return this.entities;
98+
}
9499

95100
public void tick() {
96-
for (Entity e : entities) {
101+
for (Entity e : getEntities()) {
97102
e.tick();
98103
}
99104

@@ -130,7 +135,7 @@ public void renderTiles(Screen screen, int xOffset, int yOffset) {
130135
}
131136

132137
public void renderEntities(Screen screen) {
133-
for (Entity e : entities) {
138+
for (Entity e : getEntities()) {
134139
e.render(screen);
135140
}
136141
}
@@ -143,23 +148,23 @@ public Tile getTile(int x, int y) {
143148
}
144149

145150
public void addEntity(Entity entity) {
146-
this.entities.add(entity);
151+
this.getEntities().add(entity);
147152
}
148153

149154
public void removeEntity(String username) {
150155
int index = 0;
151-
for(Entity e : entities){
156+
for(Entity e : getEntities()){
152157
if(e instanceof PlayerMP && ((PlayerMP)e).getUsername().equalsIgnoreCase(username)){
153158
break;
154159
}
155160
index++;
156161
}
157-
this.entities.remove(index);
162+
this.getEntities().remove(index);
158163
}
159164

160165
private int getPlayerMPIndex(String username){
161166
int index = 0;
162-
for(Entity e : entities){
167+
for(Entity e : getEntities()){
163168
if(e instanceof PlayerMP && ((PlayerMP)e).getUsername().equalsIgnoreCase(username)){
164169
break;
165170
}
@@ -168,10 +173,14 @@ private int getPlayerMPIndex(String username){
168173
return index;
169174
}
170175

171-
public void movePlayer(String username, int x, int y){
176+
public void movePlayer(String username, int x, int y, int numSteps, boolean isMoving, int movingDir){
172177
int index = getPlayerMPIndex(username);
173-
this.entities.get(index).x = x;
174-
this.entities.get(index).y = y;
178+
PlayerMP player = (PlayerMP)this.getEntities().get(index);
179+
player.x = x;
180+
player.y = y;
181+
player.setNumSteps(numSteps);
182+
player.setMoving(isMoving);
183+
player.setMovingDir(movingDir);
175184
}
176185

177186
}

src/com/redomar/game/net/GameClient.java

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -58,32 +58,35 @@ private void parsePacket(byte[] data, InetAddress address, int port) {
5858
break;
5959
case LOGIN:
6060
packet = new Packet00Login(data);
61-
handleLogin((Packet00Login)packet, address, port);
61+
handleLogin((Packet00Login) packet, address, port);
6262
break;
6363
case DISCONNECT:
6464
packet = new Packet01Disconnect(data);
6565
System.out.println("[" + address.getHostAddress() + ":" + port
6666
+ "] " + ((Packet01Disconnect) packet).getUsername()
6767
+ " has disconnected...");
68-
game.getLevel().removeEntity(((Packet01Disconnect)packet).getUsername());
68+
game.getLevel().removeEntity(
69+
((Packet01Disconnect) packet).getUsername());
6970
break;
7071
case MOVE:
7172
packet = new Packet02Move(data);
72-
this.handleMove((Packet02Move)packet);
73+
this.handleMove((Packet02Move) packet);
7374
break;
7475
}
7576
}
7677

7778
private void handleLogin(Packet00Login packet, InetAddress address, int port) {
7879
System.out.println("[" + address.getHostAddress() + ":" + port + "] "
7980
+ packet.getUsername() + " has joined...");
80-
PlayerMP player = new PlayerMP(game.getLevel(), packet.getX(), packet.getY(),
81-
packet.getUsername(), address, port);
81+
PlayerMP player = new PlayerMP(game.getLevel(), packet.getX(),
82+
packet.getY(), packet.getUsername(), address, port);
8283
game.getLevel().addEntity(player);
8384
}
8485

8586
private void handleMove(Packet02Move packet) {
86-
this.game.getLevel().movePlayer(packet.getUsername(), packet.getX(), packet.getY());
87+
this.game.getLevel().movePlayer(packet.getUsername(), packet.getX(),
88+
packet.getY(), packet.getNumSteps(), packet.isMoving(),
89+
packet.getMovingDir());
8790
}
8891

8992
public void sendData(byte[] data) {

src/com/redomar/game/net/GameServer.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -79,18 +79,19 @@ private void parsePacket(byte[] data, InetAddress address, int port) {
7979
break;
8080
case MOVE:
8181
packet = new Packet02Move(data);
82-
System.out.println(((Packet02Move) packet).getUsername()
83-
+ " has moved to " + ((Packet02Move) packet).getX() + ", "
84-
+ ((Packet02Move) packet).getY());
8582
this.handleMove(((Packet02Move)packet));
8683
}
8784
}
8885

8986
private void handleMove(Packet02Move packet) {
9087
if(getPlayerMP(packet.getUsername()) != null){
9188
int index = getPlayerMPIndex(packet.getUsername());
92-
this.connectedPlayers.get(index).x = packet.getX();
93-
this.connectedPlayers.get(index).y = packet.getY();
89+
PlayerMP player = this.connectedPlayers.get(index);
90+
player.x = packet.getX();
91+
player.y = packet.getY();
92+
player.setNumSteps(packet.getNumSteps());
93+
player.setMoving(packet.isMoving());
94+
player.setMovingDir(packet.getMovingDir());
9495
packet.writeData(this);
9596
}
9697
}

src/com/redomar/game/net/packets/Packet02Move.java

Lines changed: 30 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,25 +7,37 @@ public class Packet02Move extends Packet {
77

88
private String username;
99
private int x, y;
10+
private int numSteps = 0;
11+
private boolean isMoving;
12+
private int movingDir = 1;
1013

1114
public Packet02Move(byte[] data) {
1215
super(02);
1316
String[] dataArray = readData(data).split(",");
1417
this.username = dataArray[0];
1518
this.x = Integer.parseInt(dataArray[1]);
1619
this.y = Integer.parseInt(dataArray[2]);
20+
this.numSteps = Integer.parseInt(dataArray[3]);
21+
this.isMoving = Integer.parseInt(dataArray[4]) == 1;
22+
this.movingDir = Integer.parseInt(dataArray[5]);
1723
}
1824

19-
public Packet02Move(String username, int x, int y) {
25+
public Packet02Move(String username, int x, int y, int numSteps,
26+
boolean isMoving, int movingDir) {
2027
super(02);
2128
this.username = username;
2229
this.x = x;
2330
this.y = y;
31+
this.numSteps = numSteps;
32+
this.isMoving = isMoving;
33+
this.movingDir = movingDir;
2434
}
2535

2636
@Override
2737
public byte[] getData() {
28-
return ("02" + this.username + "," + getX() + "," + getY()).getBytes();
38+
return ("02" + this.username + "," + this.x + "," + this.y + ","
39+
+ this.getNumSteps() + "," + (this.isMoving ? 1 : 0) + "," + this
40+
.getMovingDir()).getBytes();
2941
}
3042

3143
@Override
@@ -41,12 +53,24 @@ public void writeData(GameServer server) {
4153
public String getUsername() {
4254
return username;
4355
}
44-
45-
public int getX(){
56+
57+
public int getX() {
4658
return this.x;
4759
}
48-
49-
public int getY(){
60+
61+
public int getY() {
5062
return this.y;
5163
}
64+
65+
public int getNumSteps() {
66+
return numSteps;
67+
}
68+
69+
public boolean isMoving() {
70+
return isMoving;
71+
}
72+
73+
public int getMovingDir() {
74+
return movingDir;
75+
}
5276
}

0 commit comments

Comments
 (0)