Skip to content

Commit b1c8ebb

Browse files
Brad Hallnightm4re94
authored andcommitted
Removed ArrayUtilities, ArrayUtilitiesTests, and replaced with built-in Java methods. Resolves #863
1 parent fc257be commit b1c8ebb

File tree

16 files changed

+88
-979
lines changed

16 files changed

+88
-979
lines changed

litiengine/src/main/java/de/gurkenlabs/litiengine/Game.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import de.gurkenlabs.litiengine.sound.SoundEngine;
4343
import de.gurkenlabs.litiengine.sound.SoundPlayback;
4444
import de.gurkenlabs.litiengine.tweening.TweenEngine;
45-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
4645
import de.gurkenlabs.litiengine.util.io.XmlUtilities;
4746

4847
/***
@@ -723,11 +722,11 @@ private static void handleCommandLineArguments(String[] args) {
723722
return;
724723
}
725724

726-
if (ArrayUtilities.contains(args, COMMANDLINE_ARG_RELEASE, true)) {
725+
if (Arrays.stream(args).anyMatch(COMMANDLINE_ARG_RELEASE::equalsIgnoreCase)) {
727726
allowDebug(false);
728727
}
729728

730-
if (ArrayUtilities.contains(args, COMMANDLINE_ARG_NOGUI, true)) {
729+
if (Arrays.stream(args).anyMatch(COMMANDLINE_ARG_NOGUI::equalsIgnoreCase)) {
731730
hideGUI(true);
732731
}
733732
}

litiengine/src/main/java/de/gurkenlabs/litiengine/GameRandom.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import de.gurkenlabs.litiengine.entities.IEntity;
44
import de.gurkenlabs.litiengine.environment.tilemap.IMap;
5-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
65
import de.gurkenlabs.litiengine.util.geom.GeometricUtilities;
76
import java.awt.Color;
87
import java.awt.geom.Ellipse2D;
@@ -47,7 +46,7 @@ public <T> T[] sample(final T[] array, int amount, boolean replacement) {
4746
T[] sampled = (T[]) java.lang.reflect.Array.newInstance(array.getClass().getComponentType(), amount);
4847

4948
if (!replacement) {
50-
T[] copiedArray = ArrayUtilities.arrayCopy(array);
49+
T[] copiedArray = array.clone();
5150
this.shuffle(copiedArray);
5251

5352
// Use System and arraycopy to copy the array

litiengine/src/main/java/de/gurkenlabs/litiengine/environment/EmitterMapObjectLoader.java

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import de.gurkenlabs.litiengine.graphics.emitters.xml.EmitterData;
1515
import de.gurkenlabs.litiengine.graphics.emitters.xml.ParticleParameter;
1616
import de.gurkenlabs.litiengine.physics.Collision;
17-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
1817
import de.gurkenlabs.litiengine.util.ColorHelper;
1918
import java.util.ArrayList;
2019
import java.util.Collection;
@@ -120,8 +119,7 @@ public static void updateMapObject(EmitterData emitterData, IMapObject mo) {
120119
mo.setValue(MapObjectProperty.Emitter.ORIGIN_ALIGN, emitterData.getOriginAlign());
121120
mo.setValue(MapObjectProperty.Emitter.ORIGIN_VALIGN, emitterData.getOriginValign());
122121

123-
String commaSeperatedColors = ArrayUtilities.join(emitterData.getColors());
124-
mo.setValue(MapObjectProperty.Emitter.COLORS, commaSeperatedColors);
122+
mo.setValue(MapObjectProperty.Emitter.COLORS, String.join(",", emitterData.getColors()));
125123

126124
mo.setValue(MapObjectProperty.Particle.ACCELERATION_X_MAX, emitterData.getAccelerationX().getMaxValue());
127125
mo.setValue(MapObjectProperty.Particle.ACCELERATION_X_MIN, emitterData.getAccelerationX().getMinValue());
@@ -154,8 +152,7 @@ public static void updateMapObject(EmitterData emitterData, IMapObject mo) {
154152

155153
mo.setValue(MapObjectProperty.COLLISION_TYPE, emitterData.getCollision());
156154
mo.setValue(MapObjectProperty.REQUIRED_QUALITY, emitterData.getRequiredQuality());
157-
String commaSeperatedTexts = ArrayUtilities.join(emitterData.getTexts());
158-
mo.setValue(MapObjectProperty.Particle.TEXTS, commaSeperatedTexts);
155+
mo.setValue(MapObjectProperty.Particle.TEXTS, String.join(",", emitterData.getTexts()) );
159156

160157
mo.setValue(MapObjectProperty.SPRITESHEETNAME, emitterData.getSpritesheet());
161158
mo.setValue(MapObjectProperty.Particle.ANIMATESPRITE, emitterData.isAnimatingSprite());

litiengine/src/main/java/de/gurkenlabs/litiengine/environment/MapObjectSerializer.java

Lines changed: 20 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,13 @@
77
import de.gurkenlabs.litiengine.environment.tilemap.TmxType;
88
import de.gurkenlabs.litiengine.environment.tilemap.xml.DecimalFloatAdapter;
99
import de.gurkenlabs.litiengine.environment.tilemap.xml.MapObject;
10-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
1110
import java.lang.reflect.Field;
11+
import java.util.Arrays;
1212
import java.util.List;
1313
import java.util.logging.Level;
1414
import java.util.logging.Logger;
15+
import java.util.stream.Collectors;
16+
import java.util.stream.IntStream;
1517

1618
public final class MapObjectSerializer {
1719
private static final Logger log = Logger.getLogger(MapObjectSerializer.class.getName());
@@ -35,7 +37,7 @@ public static MapObject serialize(IEntity entity) {
3537
serialize(entity.getClass(), entity, obj);
3638

3739
if (!entity.getTags().isEmpty()) {
38-
obj.setValue(MapObjectProperty.TAGS, ArrayUtilities.join(entity.getTags()));
40+
obj.setValue(MapObjectProperty.TAGS, String.join(",", entity.getTags()));
3941
}
4042

4143
return obj;
@@ -94,30 +96,35 @@ private static String getPropertyValue(Field field, Object value) {
9496
return Long.toString((long) value);
9597
}
9698

97-
if (value instanceof List<?>) {
98-
return ArrayUtilities.join((List<?>) value);
99+
if (value instanceof List<?> valueList) {
100+
return valueList.stream().map(Object::toString).collect(Collectors.joining(","));
99101
// special handling
100102
}
101103

102104
if (value.getClass().isArray()) {
103105
if (field.getType().getComponentType() == int.class) {
104-
return ArrayUtilities.join((int[]) value);
106+
return Arrays.stream((int[]) value).mapToObj(String::valueOf).collect(Collectors.joining(","));
105107
} else if (field.getType().getComponentType() == double.class) {
106-
return ArrayUtilities.join((double[]) value);
108+
return Arrays.stream((double[]) value).mapToObj(String::valueOf).collect(Collectors.joining(","));
107109
} else if (field.getType().getComponentType() == float.class) {
108-
return ArrayUtilities.join((float[]) value);
110+
float[] values = (float[]) value;
111+
return IntStream.range(0,values.length).mapToObj(i -> String.valueOf(values[i])).collect(Collectors.joining(","));
109112
} else if (field.getType().getComponentType() == short.class) {
110-
return ArrayUtilities.join((short[]) value);
113+
short[] values = (short[]) value;
114+
return IntStream.range(0,values.length).mapToObj(i -> String.valueOf(values[i])).collect(Collectors.joining(","));
111115
} else if (field.getType().getComponentType() == byte.class) {
112-
return ArrayUtilities.join((byte[]) value);
116+
byte[] values = (byte[]) value;
117+
return IntStream.range(0,values.length).mapToObj(i -> String.valueOf(values[i])).collect(Collectors.joining(","));
113118
} else if (field.getType().getComponentType() == long.class) {
114-
return ArrayUtilities.join((long[]) value);
119+
return Arrays.stream((long[]) value).mapToObj(String::valueOf).collect(Collectors.joining(","));
115120
} else if (field.getType().getComponentType() == String.class) {
116-
return ArrayUtilities.join((String[]) value);
121+
return String.join(",",(String[]) value);
117122
} else if (field.getType().getComponentType() == boolean.class) {
118-
return ArrayUtilities.join((boolean[]) value);
123+
boolean[] values = (boolean[]) value;
124+
return IntStream.range(0, values.length).mapToObj(i -> values[i] ? "true" : "false").collect(Collectors.joining(","));
119125
} else {
120-
return ArrayUtilities.join((Object[]) value);
126+
Object[] values = (Object[]) value;
127+
return Arrays.stream(values).map(Object::toString).collect(Collectors.joining(","));
121128
}
122129
}
123130

litiengine/src/main/java/de/gurkenlabs/litiengine/environment/TriggerMapObjectLoader.java

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package de.gurkenlabs.litiengine.environment;
22

33
import java.util.ArrayList;
4+
import java.util.Arrays;
45
import java.util.Collection;
56

67
import de.gurkenlabs.litiengine.entities.IEntity;
@@ -9,7 +10,6 @@
910
import de.gurkenlabs.litiengine.environment.tilemap.IMapObject;
1011
import de.gurkenlabs.litiengine.environment.tilemap.MapObjectProperty;
1112
import de.gurkenlabs.litiengine.environment.tilemap.MapObjectType;
12-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
1313

1414
public class TriggerMapObjectLoader extends MapObjectLoader {
1515

@@ -47,12 +47,10 @@ protected void loadTargets(IMapObject mapObject, Trigger trigger) {
4747
if (targets == null) {
4848
return;
4949
}
50-
51-
for (final int target : ArrayUtilities.splitInt(targets)) {
52-
if (target != 0) {
53-
trigger.addTarget(target);
54-
}
55-
}
50+
Arrays.stream(targets.split(","))
51+
.mapToInt(Integer::parseInt)
52+
.filter(target -> target != 0)
53+
.forEach(trigger::addTarget);
5654
}
5755

5856
protected void loadActivators(IMapObject mapObject, Trigger trigger) {
@@ -61,10 +59,9 @@ protected void loadActivators(IMapObject mapObject, Trigger trigger) {
6159
return;
6260
}
6361

64-
for (final int activator : ArrayUtilities.splitInt(activators)) {
65-
if (activator != 0) {
66-
trigger.addActivator(activator);
67-
}
68-
}
62+
Arrays.stream(activators.split(","))
63+
.mapToInt(Integer::parseInt)
64+
.filter(activator -> activator != 0)
65+
.forEach(trigger::addActivator);
6966
}
7067
}
Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,32 @@
11
package de.gurkenlabs.litiengine.environment.tilemap.xml;
22

3-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
43
import jakarta.xml.bind.annotation.adapters.XmlAdapter;
54

5+
import java.util.Arrays;
6+
import java.util.stream.Collectors;
7+
68

79
public class IntegerArrayAdapter extends XmlAdapter<String, int[]> {
810
@Override
911
public int[] unmarshal(String v) throws Exception {
10-
return ArrayUtilities.splitInt(v);
12+
if (v == null || v.isBlank()) {
13+
return new int[0];
14+
}
15+
String[] split = v.split(",");
16+
if (split.length == 0) {
17+
return new int[0];
18+
}
19+
return Arrays.stream(split).mapToInt(Integer::parseInt).toArray();
1120
}
1221

1322
@Override
1423
public String marshal(int[] v) throws Exception {
15-
return ArrayUtilities.join(v);
24+
if( v == null ){
25+
return null;
26+
}
27+
if(v.length == 0){
28+
return "";
29+
}
30+
return Arrays.stream(v).mapToObj(String::valueOf).collect(Collectors.joining(","));
1631
}
1732
}

litiengine/src/main/java/de/gurkenlabs/litiengine/environment/tilemap/xml/TileData.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package de.gurkenlabs.litiengine.environment.tilemap.xml;
22

3-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
43
import de.gurkenlabs.litiengine.util.io.Codec;
54
import jakarta.xml.bind.DatatypeConverter;
65
import jakarta.xml.bind.Unmarshaller;
@@ -14,6 +13,7 @@
1413
import java.io.InputStream;
1514
import java.io.OutputStream;
1615
import java.util.ArrayList;
16+
import java.util.Arrays;
1717
import java.util.Collections;
1818
import java.util.List;
1919
import java.util.concurrent.CopyOnWriteArrayList;
@@ -637,8 +637,7 @@ private List<Tile> parseChunkData() throws InvalidTileLayerException {
637637
}
638638
}
639639
}
640-
641-
return ArrayUtilities.toList(tileArr);
640+
return Arrays.stream(tileArr).flatMap(Arrays::stream).toList();
642641
}
643642

644643
/**

litiengine/src/main/java/de/gurkenlabs/litiengine/physics/PhysicsEngine.java

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,12 @@
55
import de.gurkenlabs.litiengine.IUpdateable;
66
import de.gurkenlabs.litiengine.entities.ICollisionEntity;
77
import de.gurkenlabs.litiengine.entities.IMobileEntity;
8-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
98
import de.gurkenlabs.litiengine.util.geom.GeometricUtilities;
109
import java.awt.Shape;
1110
import java.awt.geom.Line2D;
1211
import java.awt.geom.Point2D;
1312
import java.awt.geom.Rectangle2D;
14-
import java.util.Collection;
15-
import java.util.Collections;
16-
import java.util.List;
17-
import java.util.Map;
18-
import java.util.Objects;
13+
import java.util.*;
1914
import java.util.concurrent.ConcurrentHashMap;
2015
import java.util.concurrent.CopyOnWriteArrayList;
2116
import java.util.function.Predicate;
@@ -742,10 +737,9 @@ private Intersection getIntersection(final ICollisionEntity entity, final Rectan
742737
if (GeometricUtilities.intersects(otherEntity.getCollisionBox(), rect)) {
743738
Rectangle2D intersection = otherEntity.getCollisionBox().createIntersection(rect);
744739
if (result != null) {
745-
result =
746-
new Intersection(
747-
intersection.createUnion(result),
748-
ArrayUtilities.append(result.involvedEntities, otherEntity));
740+
ICollisionEntity[] appended = Arrays.copyOf(result.involvedEntities, result.involvedEntities.length + 1);
741+
appended[appended.length - 1] = otherEntity;
742+
result = new Intersection(intersection.createUnion(result), appended);
749743
} else {
750744
result = new Intersection(intersection, otherEntity);
751745
}
@@ -895,8 +889,9 @@ private static void fireCollisionEvents(
895889
involvedEntities = inter.involvedEntities;
896890
continue;
897891
}
898-
899-
involvedEntities = ArrayUtilities.distinct(involvedEntities, inter.involvedEntities);
892+
Set<ICollisionEntity> distinctInvolved = new HashSet<>(Arrays.asList(involvedEntities));
893+
distinctInvolved.addAll(Arrays.asList(inter.involvedEntities));
894+
involvedEntities = distinctInvolved.toArray(new ICollisionEntity[0]);
900895
}
901896

902897
// 1. fire collision event on the collider with all the involved entities

litiengine/src/main/java/de/gurkenlabs/litiengine/resources/SpritesheetResource.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package de.gurkenlabs.litiengine.resources;
22

33
import de.gurkenlabs.litiengine.graphics.Spritesheet;
4-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
54
import de.gurkenlabs.litiengine.util.io.Codec;
65
import jakarta.xml.bind.Marshaller;
76
import jakarta.xml.bind.annotation.XmlAttribute;
@@ -10,6 +9,8 @@
109
import jakarta.xml.bind.annotation.XmlTransient;
1110
import java.awt.image.BufferedImage;
1211
import java.io.Serializable;
12+
import java.util.Arrays;
13+
import java.util.stream.Collectors;
1314

1415
/**
1516
* Represents a resource for managing spritesheets.
@@ -145,8 +146,7 @@ public int[] getKeyframes() {
145146
if (this.keyframes == null || this.keyframes.isEmpty()) {
146147
return new int[0];
147148
}
148-
149-
return ArrayUtilities.splitInt(this.keyframes);
149+
return Arrays.stream(this.keyframes.split(",")).mapToInt(Integer::parseInt).toArray();
150150
}
151151

152152
/**
@@ -191,7 +191,13 @@ public void setImageFormat(final ImageFormat f) {
191191
* @param keyframes An array of keyframes to set.
192192
*/
193193
public void setKeyframes(int[] keyframes) {
194-
this.keyframes = ArrayUtilities.join(keyframes);
194+
if (keyframes == null ) {
195+
this.keyframes = null;
196+
} else if(keyframes.length == 0) {
197+
this.keyframes = "";
198+
}else{
199+
this.keyframes = Arrays.stream(keyframes).mapToObj(String::valueOf).collect(Collectors.joining(","));
200+
}
195201
}
196202

197203
/**

litiengine/src/main/java/de/gurkenlabs/litiengine/resources/Spritesheets.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import de.gurkenlabs.litiengine.environment.tilemap.ITileset;
44
import de.gurkenlabs.litiengine.graphics.Spritesheet;
5-
import de.gurkenlabs.litiengine.util.ArrayUtilities;
65
import de.gurkenlabs.litiengine.util.io.Codec;
76
import de.gurkenlabs.litiengine.util.io.FileUtilities;
87
import de.gurkenlabs.litiengine.util.io.ImageSerializer;
@@ -25,6 +24,7 @@
2524
import java.util.function.Predicate;
2625
import java.util.logging.Level;
2726
import java.util.logging.Logger;
27+
import java.util.stream.Collectors;
2828

2929
/**
3030
* Manages the loading, storing, and retrieval of spritesheets.
@@ -275,7 +275,7 @@ public boolean saveTo(final String spriteInfoFile, boolean metadataOnly) {
275275
// print keyframes (if they exist)
276276
if (keyFrames.length > 0) {
277277
writer.write(";");
278-
writer.write(ArrayUtilities.join(keyFrames));
278+
writer.write(Arrays.stream(keyFrames).mapToObj(String::valueOf).collect(Collectors.joining(",")));
279279
}
280280

281281
writer.write("\n");

0 commit comments

Comments
 (0)