Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions litiengine/src/main/java/de/gurkenlabs/litiengine/Game.java
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
import de.gurkenlabs.litiengine.sound.SoundEngine;
import de.gurkenlabs.litiengine.sound.SoundPlayback;
import de.gurkenlabs.litiengine.tweening.TweenEngine;
import de.gurkenlabs.litiengine.util.ArrayUtilities;

import de.gurkenlabs.litiengine.util.io.XmlUtilities;

/***
Expand Down Expand Up @@ -723,11 +723,11 @@ private static void handleCommandLineArguments(String[] args) {
return;
}

if (ArrayUtilities.contains(args, COMMANDLINE_ARG_RELEASE, true)) {
if (Arrays.stream(args).anyMatch(arg -> COMMANDLINE_ARG_RELEASE.equalsIgnoreCase(arg))) {
allowDebug(false);
}

if (ArrayUtilities.contains(args, COMMANDLINE_ARG_NOGUI, true)) {
if (Arrays.stream(args).anyMatch(arg -> COMMANDLINE_ARG_NOGUI.equalsIgnoreCase(arg))) {
hideGUI(true);
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,14 +2,15 @@

import de.gurkenlabs.litiengine.entities.IEntity;
import de.gurkenlabs.litiengine.environment.tilemap.IMap;
import de.gurkenlabs.litiengine.util.ArrayUtilities;

import de.gurkenlabs.litiengine.util.geom.GeometricUtilities;
import java.awt.Color;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -47,7 +48,7 @@ public <T> T[] sample(final T[] array, int amount, boolean replacement) {
T[] sampled = (T[]) java.lang.reflect.Array.newInstance(array.getClass().getComponentType(), amount);

if (!replacement) {
T[] copiedArray = ArrayUtilities.arrayCopy(array);
T[] copiedArray = Arrays.copyOf(array, array.length);
this.shuffle(copiedArray);

// Use System and arraycopy to copy the array
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
import de.gurkenlabs.litiengine.graphics.emitters.xml.EmitterData;
import de.gurkenlabs.litiengine.graphics.emitters.xml.ParticleParameter;
import de.gurkenlabs.litiengine.physics.Collision;
import de.gurkenlabs.litiengine.util.ArrayUtilities;

import de.gurkenlabs.litiengine.util.ColorHelper;
import java.util.ArrayList;
import java.util.Collection;
Expand Down Expand Up @@ -120,7 +120,7 @@ public static void updateMapObject(EmitterData emitterData, IMapObject mo) {
mo.setValue(MapObjectProperty.Emitter.ORIGIN_ALIGN, emitterData.getOriginAlign());
mo.setValue(MapObjectProperty.Emitter.ORIGIN_VALIGN, emitterData.getOriginValign());

String commaSeperatedColors = ArrayUtilities.join(emitterData.getColors());
String commaSeperatedColors = String.join(",", emitterData.getColors());
mo.setValue(MapObjectProperty.Emitter.COLORS, commaSeperatedColors);

mo.setValue(MapObjectProperty.Particle.ACCELERATION_X_MAX, emitterData.getAccelerationX().getMaxValue());
Expand Down Expand Up @@ -154,7 +154,7 @@ public static void updateMapObject(EmitterData emitterData, IMapObject mo) {

mo.setValue(MapObjectProperty.COLLISION_TYPE, emitterData.getCollision());
mo.setValue(MapObjectProperty.REQUIRED_QUALITY, emitterData.getRequiredQuality());
String commaSeperatedTexts = ArrayUtilities.join(emitterData.getTexts());
String commaSeperatedTexts = String.join(",", emitterData.getTexts());
mo.setValue(MapObjectProperty.Particle.TEXTS, commaSeperatedTexts);

mo.setValue(MapObjectProperty.SPRITESHEETNAME, emitterData.getSpritesheet());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,12 @@
import de.gurkenlabs.litiengine.environment.tilemap.TmxType;
import de.gurkenlabs.litiengine.environment.tilemap.xml.DecimalFloatAdapter;
import de.gurkenlabs.litiengine.environment.tilemap.xml.MapObject;
import de.gurkenlabs.litiengine.util.ArrayUtilities;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;

public final class MapObjectSerializer {
private static final Logger log = Logger.getLogger(MapObjectSerializer.class.getName());
Expand All @@ -35,7 +36,7 @@ public static MapObject serialize(IEntity entity) {
serialize(entity.getClass(), entity, obj);

if (!entity.getTags().isEmpty()) {
obj.setValue(MapObjectProperty.TAGS, ArrayUtilities.join(entity.getTags()));
obj.setValue(MapObjectProperty.TAGS, String.join(",", entity.getTags()));
}

return obj;
Expand Down Expand Up @@ -78,46 +79,58 @@ private static void serialize(Field field, Object entity, IMapObject mapObject)
}

private static String getPropertyValue(Field field, Object value) {
if (field.getType().equals(Float.class) || field.getType().equals(Double.class)) {
Class<?> type = field.getType();
if (type.equals(Float.class) || type.equals(Double.class)) {
try {
return new DecimalFloatAdapter().marshal((Float) value);
} catch (Exception e) {
log.log(Level.SEVERE, e.getMessage(), e);
}
} else if (field.getType().equals(Integer.class)) {
return Integer.toString((int) value);
} else if (field.getType().equals(short.class)) {
return Short.toString((short) value);
} else if (field.getType().equals(byte.class)) {
return Byte.toString((byte) value);
} else if (field.getType().equals(long.class)) {
return Long.toString((long) value);
}

if (value instanceof List<?>) {
return ArrayUtilities.join((List<?>) value);
// special handling
if (value instanceof List<?> list) {
return list.stream().map(String::valueOf).collect(Collectors.joining(","));
}

if (value.getClass().isArray()) {
if (field.getType().getComponentType() == int.class) {
return ArrayUtilities.join((int[]) value);
} else if (field.getType().getComponentType() == double.class) {
return ArrayUtilities.join((double[]) value);
} else if (field.getType().getComponentType() == float.class) {
return ArrayUtilities.join((float[]) value);
} else if (field.getType().getComponentType() == short.class) {
return ArrayUtilities.join((short[]) value);
} else if (field.getType().getComponentType() == byte.class) {
return ArrayUtilities.join((byte[]) value);
} else if (field.getType().getComponentType() == long.class) {
return ArrayUtilities.join((long[]) value);
} else if (field.getType().getComponentType() == String.class) {
return ArrayUtilities.join((String[]) value);
} else if (field.getType().getComponentType() == boolean.class) {
return ArrayUtilities.join((boolean[]) value);
if (type.getComponentType() == int.class) {
return Arrays.stream((int[]) value).mapToObj(String::valueOf).collect(Collectors.joining(","));
} else if (type.getComponentType() == double.class) {
return Arrays.stream((double[]) value).mapToObj(String::valueOf).collect(Collectors.joining(","));
} else if (type.getComponentType() == float.class) {
String[] arr = new String[((float[]) value).length];
float[] floatArr = (float[]) value;
for (int i = 0; i < arr.length; i++) {
arr[i] = String.valueOf(floatArr[i]);
}
return String.join(",", arr);
} else if (type.getComponentType() == short.class) {
String[] arr = new String[((short[]) value).length];
short[] shortArr = (short[]) value;
for (int i = 0; i < arr.length; i++) {
arr[i] = String.valueOf(shortArr[i]);
}
return String.join(",", arr);
} else if (type.getComponentType() == byte.class) {
String[] arr = new String[((byte[]) value).length];
byte[] byteArr = (byte[]) value;
for (int i = 0; i < arr.length; i++) {
arr[i] = String.valueOf(byteArr[i]);
}
return String.join(",", arr);
} else if (type.getComponentType() == long.class) {
return Arrays.stream((long[]) value).mapToObj(String::valueOf).collect(Collectors.joining(","));
} else if (type.getComponentType() == String.class) {
return String.join(",", (String[]) value);
} else if (type.getComponentType() == boolean.class) {
String[] arr = new String[((boolean[]) value).length];
boolean[] boolArr = (boolean[]) value;
for (int i = 0; i < arr.length; i++) {
arr[i] = String.valueOf(boolArr[i]);
}
return String.join(",", arr);
} else {
return ArrayUtilities.join((Object[]) value);
return Arrays.stream((Object[]) value).map(String::valueOf).collect(Collectors.joining(","));
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package de.gurkenlabs.litiengine.environment;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;

import de.gurkenlabs.litiengine.entities.IEntity;
Expand All @@ -9,7 +10,6 @@
import de.gurkenlabs.litiengine.environment.tilemap.IMapObject;
import de.gurkenlabs.litiengine.environment.tilemap.MapObjectProperty;
import de.gurkenlabs.litiengine.environment.tilemap.MapObjectType;
import de.gurkenlabs.litiengine.util.ArrayUtilities;

public class TriggerMapObjectLoader extends MapObjectLoader {

Expand Down Expand Up @@ -44,27 +44,19 @@ protected Trigger createTrigger(IMapObject mapObject, TriggerActivation act, Str

protected void loadTargets(IMapObject mapObject, Trigger trigger) {
final String targets = mapObject.getStringValue(MapObjectProperty.TRIGGER_TARGETS, null);
if (targets == null) {
if (targets == null || targets.isEmpty()) {
return;
}

for (final int target : ArrayUtilities.splitInt(targets)) {
if (target != 0) {
trigger.addTarget(target);
}
}
Arrays.stream(targets.split(",")).mapToInt(Integer::parseInt).filter(target -> target != 0).forEach(trigger::addTarget);
}

protected void loadActivators(IMapObject mapObject, Trigger trigger) {
final String activators = mapObject.getStringValue(MapObjectProperty.TRIGGER_ACTIVATORS, null);
if (activators == null) {
if (activators == null || activators.isEmpty()) {
return;
}

for (final int activator : ArrayUtilities.splitInt(activators)) {
if (activator != 0) {
trigger.addActivator(activator);
}
}
Arrays.stream(activators.split(",")).mapToInt(Integer::parseInt).filter(activator -> activator != 0).forEach(trigger::addActivator);
}
}
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
package de.gurkenlabs.litiengine.environment.tilemap.xml;

import de.gurkenlabs.litiengine.util.ArrayUtilities;
import jakarta.xml.bind.annotation.adapters.XmlAdapter;

import java.util.Arrays;
import java.util.stream.Collectors;

public class IntegerArrayAdapter extends XmlAdapter<String, int[]> {
@Override
public int[] unmarshal(String v) throws Exception {
return ArrayUtilities.splitInt(v);
if (v == null || v.isEmpty()) {
return new int[0];
}
return Arrays.stream(v.split(",")).mapToInt(Integer::parseInt).toArray();
}

@Override
public String marshal(int[] v) throws Exception {
return ArrayUtilities.join(v);
return Arrays.stream(v).mapToObj(String::valueOf).collect(Collectors.joining(","));
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
package de.gurkenlabs.litiengine.environment.tilemap.xml;

import de.gurkenlabs.litiengine.util.ArrayUtilities;
import de.gurkenlabs.litiengine.util.io.Codec;
import jakarta.xml.bind.DatatypeConverter;
import jakarta.xml.bind.Unmarshaller;
Expand All @@ -14,11 +13,13 @@
import java.io.InputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import java.util.zip.DeflaterOutputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
Expand Down Expand Up @@ -638,7 +639,7 @@ private List<Tile> parseChunkData() throws InvalidTileLayerException {
}
}

return ArrayUtilities.toList(tileArr);
return Arrays.stream(tileArr).flatMap(Arrays::stream).collect(Collectors.toList());
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,12 @@
import de.gurkenlabs.litiengine.IUpdateable;
import de.gurkenlabs.litiengine.entities.ICollisionEntity;
import de.gurkenlabs.litiengine.entities.IMobileEntity;
import de.gurkenlabs.litiengine.util.ArrayUtilities;
import de.gurkenlabs.litiengine.util.geom.GeometricUtilities;
import java.awt.Shape;
import java.awt.geom.Line2D;
import java.awt.geom.Point2D;
import java.awt.geom.Rectangle2D;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
Expand Down Expand Up @@ -745,7 +745,7 @@ private Intersection getIntersection(final ICollisionEntity entity, final Rectan
result =
new Intersection(
intersection.createUnion(result),
ArrayUtilities.append(result.involvedEntities, otherEntity));
appendToArray(result.involvedEntities, otherEntity));
} else {
result = new Intersection(intersection, otherEntity);
}
Expand Down Expand Up @@ -896,7 +896,7 @@ private static void fireCollisionEvents(
continue;
}

involvedEntities = ArrayUtilities.distinct(involvedEntities, inter.involvedEntities);
involvedEntities = Stream.concat(Arrays.stream(involvedEntities), Arrays.stream(inter.involvedEntities)).distinct().toArray(ICollisionEntity[]::new);
}

// 1. fire collision event on the collider with all the involved entities
Expand All @@ -923,4 +923,10 @@ public Intersection(Rectangle2D rect, ICollisionEntity... entities) {
this.involvedEntities = entities;
}
}

private static ICollisionEntity[] appendToArray(ICollisionEntity[] arr, ICollisionEntity element) {
ICollisionEntity[] newArray = Arrays.copyOf(arr, arr.length + 1);
newArray[arr.length] = element;
return newArray;
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package de.gurkenlabs.litiengine.resources;

import de.gurkenlabs.litiengine.graphics.Spritesheet;
import de.gurkenlabs.litiengine.util.ArrayUtilities;
import de.gurkenlabs.litiengine.util.io.Codec;
import jakarta.xml.bind.Marshaller;
import jakarta.xml.bind.annotation.XmlAttribute;
Expand All @@ -10,6 +9,8 @@
import jakarta.xml.bind.annotation.XmlTransient;
import java.awt.image.BufferedImage;
import java.io.Serializable;
import java.util.Arrays;
import java.util.stream.Collectors;

/**
* Represents a resource for managing spritesheets.
Expand Down Expand Up @@ -146,7 +147,7 @@ public int[] getKeyframes() {
return new int[0];
}

return ArrayUtilities.splitInt(this.keyframes);
return Arrays.stream(this.keyframes.split(",")).mapToInt(Integer::parseInt).toArray();
}

/**
Expand Down Expand Up @@ -191,7 +192,7 @@ public void setImageFormat(final ImageFormat f) {
* @param keyframes An array of keyframes to set.
*/
public void setKeyframes(int[] keyframes) {
this.keyframes = ArrayUtilities.join(keyframes);
this.keyframes = Arrays.stream(keyframes).mapToObj(String::valueOf).collect(Collectors.joining(","));
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

import de.gurkenlabs.litiengine.environment.tilemap.ITileset;
import de.gurkenlabs.litiengine.graphics.Spritesheet;
import de.gurkenlabs.litiengine.util.ArrayUtilities;

import de.gurkenlabs.litiengine.util.io.Codec;
import de.gurkenlabs.litiengine.util.io.FileUtilities;
import java.awt.image.BufferedImage;
Expand All @@ -23,6 +23,7 @@
import java.util.function.Predicate;
import java.util.logging.Level;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import javax.imageio.ImageIO;

/**
Expand Down Expand Up @@ -274,7 +275,7 @@ public boolean saveTo(final String spriteInfoFile, boolean metadataOnly) {
// print keyframes (if they exist)
if (keyFrames.length > 0) {
writer.write(";");
writer.write(ArrayUtilities.join(keyFrames));
writer.write(Arrays.stream(keyFrames).mapToObj(String::valueOf).collect(Collectors.joining(",")));
}

writer.write("\n");
Expand Down
Loading