Skip to content

Commit 318373c

Browse files
committed
fixed data link
1 parent 1477974 commit 318373c

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

src/main/java/com/onewhohears/dscombat/data/radar/RadarData.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ private void scanAircraft(EntityAircraft radar, Entity controller, List<RadarPin
170170
RadarPing p = new RadarPing(ea, checkFriendly(controller, pilot));
171171
vehiclePings.add(p);
172172
pings.add(p);
173-
ea.lockedOnto(radar.position());
173+
if (!radar.isAlliedTo(ea)) ea.lockedOnto(radar.position());
174174
}
175175
}
176176

@@ -337,6 +337,12 @@ public String toString() {
337337
return "PING["+(int)pos.x+","+(int)pos.y+","+(int)pos.z+"]";
338338
}
339339

340+
@Override
341+
public boolean equals(Object o) {
342+
if (o instanceof RadarPing ping && ping.id == this.id) return true;
343+
return false;
344+
}
345+
340346
}
341347

342348
public static enum RadarMode {

src/main/java/com/onewhohears/dscombat/data/radar/RadarSystem.java

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -93,22 +93,23 @@ public void tickUpdateTargets() {
9393
// PLANE RADARS
9494
for (RadarData r : radars) r.tickUpdateTargets(parent, targets);
9595
// DATA LINK
96-
if (dataLink && parent.level.getGameTime() % 20 == 0) {
96+
if (dataLink && parent.tickCount % 20 == 0) {
9797
for (int i = 0; i < dataLinkTargets.size(); ++i) targets.remove(dataLinkTargets.get(i));
9898
dataLinkTargets.clear();
9999
Entity controller = parent.getControllingPassenger();
100100
if (!(controller instanceof Player player)) return;
101101
List<? extends Player> players = parent.level.players();
102102
for (Player p : players) {
103103
if (player.equals(p)) continue;
104-
if (player.isAlliedTo(p)) {
105-
if (p.getRootVehicle() instanceof EntityAircraft plane) {
106-
if (plane.equals(parent)) continue;
107-
for (RadarPing rp : targets) { // FIXME 1 data link is broken (concurrent modification exception)
108-
plane.radarSystem.dataLinkTargets.add(rp);
109-
plane.radarSystem.targets.add(rp);
110-
}
111-
}
104+
if (!player.isAlliedTo(p)) continue;
105+
if (!(p.getRootVehicle() instanceof EntityAircraft plane)) continue;
106+
if (!plane.radarSystem.dataLink) continue;
107+
if (plane.equals(parent)) continue;
108+
for (RadarPing rp : plane.radarSystem.targets) {
109+
if (rp.id == parent.getId()) continue;
110+
if (hasTarget(rp.id)) continue;
111+
targets.add(rp);
112+
dataLinkTargets.add(rp);
112113
}
113114
}
114115
}
@@ -128,6 +129,11 @@ public void tickUpdateTargets() {
128129
new ToClientRadarPings(parent.getId(), targets));
129130
}
130131

132+
private boolean hasTarget(int id) {
133+
for (RadarPing rp : targets) if (rp.id == id) return true;
134+
return false;
135+
}
136+
131137
private void updateRockets() {
132138
for (int i = 0; i < rockets.size(); ++i) {
133139
EntityMissile r = rockets.get(i);

src/main/java/com/onewhohears/dscombat/entity/aircraft/EntityAircraft.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -993,7 +993,7 @@ private void tickLerp() {
993993
--lerpSteps;
994994
setPos(d0, d1, d2);
995995
}
996-
// FIXME 0 rotation lerp
996+
// FIXME 0 aircraft rotation lerp
997997
/*if (lerpStepsQ > 0) {
998998
setClientQ(UtilAngles.lerpQ(1 / lerpStepsQ, getPrevQ(), getQ()));
999999
--lerpStepsQ;

0 commit comments

Comments
 (0)