Revert "Fix dropType de-serialization"

This commit is contained in:
KingRainbow44 2023-06-04 17:52:12 -04:00
parent eb17d65330
commit ecb6145e54
No known key found for this signature in database
GPG Key ID: FC2CB64B00D257BE
5 changed files with 16 additions and 80 deletions

View File

@ -3,10 +3,8 @@ package emu.grasscutter.data.binout;
import com.google.gson.annotations.SerializedName; import com.google.gson.annotations.SerializedName;
import emu.grasscutter.data.common.DynamicFloat; import emu.grasscutter.data.common.DynamicFloat;
import emu.grasscutter.game.props.ElementType; import emu.grasscutter.game.props.ElementType;
import emu.grasscutter.utils.objects.DropType;
import lombok.ToString;
import java.io.Serializable; import java.io.Serializable;
import lombok.ToString;
public class AbilityModifier implements Serializable { public class AbilityModifier implements Serializable {
private static final long serialVersionUID = -2001232313615923575L; private static final long serialVersionUID = -2001232313615923575L;
@ -329,7 +327,7 @@ public class AbilityModifier implements Serializable {
public AbilityModifierAction[] successActions; public AbilityModifierAction[] successActions;
public AbilityModifierAction[] failActions; public AbilityModifierAction[] failActions;
public DropType dropType; public int dropType;
public DynamicFloat baseEnergy; public DynamicFloat baseEnergy;
public DynamicFloat ratio = DynamicFloat.ONE; public DynamicFloat ratio = DynamicFloat.ONE;
public int configID; public int configID;

View File

@ -29,7 +29,7 @@ public final class ActionGenerateElemBall extends AbilityActionHandler {
} }
// Check if we should allow elem ball generation // Check if we should allow elem ball generation
if (action.dropType.getValue() == 0) { if (action.dropType == 0x0) {
String levelEntityConfig = owner.getScene().getSceneData().getLevelEntityConfig(); String levelEntityConfig = owner.getScene().getSceneData().getLevelEntityConfig();
ConfigLevelEntity config = GameData.getConfigLevelEntityDataMap().get(levelEntityConfig); ConfigLevelEntity config = GameData.getConfigLevelEntityDataMap().get(levelEntityConfig);
if (config != null if (config != null
@ -38,12 +38,12 @@ public final class ActionGenerateElemBall extends AbilityActionHandler {
Grasscutter.getLogger().warn("This level config don't allow element balls"); Grasscutter.getLogger().warn("This level config don't allow element balls");
return true; return true;
} }
} else if (action.dropType.getValue() == 1) { } else if (action.dropType == 0x1) {
if (owner.getScene().getSceneData().getSceneType() != SceneType.SCENE_WORLD) { if (owner.getScene().getSceneData().getSceneType() != SceneType.SCENE_WORLD) {
Grasscutter.getLogger().warn("This level config only allows element balls on big world"); Grasscutter.getLogger().warn("This level config only allows element balls on big world");
return true; return true;
} }
} // else: the drop is forced. (value 2) } // Else the drop is forced
var energy = action.baseEnergy.get(ability) * action.ratio.get(ability); var energy = action.baseEnergy.get(ability) * action.ratio.get(ability);
if (energy <= 0.0) return true; if (energy <= 0.0) return true;

View File

@ -5,7 +5,6 @@ import com.google.gson.reflect.TypeToken;
import com.google.gson.stream.*; import com.google.gson.stream.*;
import emu.grasscutter.data.common.DynamicFloat; import emu.grasscutter.data.common.DynamicFloat;
import emu.grasscutter.game.world.*; import emu.grasscutter.game.world.*;
import emu.grasscutter.utils.objects.DropType;
import it.unimi.dsi.fastutil.floats.FloatArrayList; import it.unimi.dsi.fastutil.floats.FloatArrayList;
import it.unimi.dsi.fastutil.ints.*; import it.unimi.dsi.fastutil.ints.*;
import lombok.val; import lombok.val;
@ -53,24 +52,6 @@ public interface JsonAdapters {
public void write(JsonWriter writer, DynamicFloat f) {} public void write(JsonWriter writer, DynamicFloat f) {}
} }
class DropTypeAdapter extends TypeAdapter<DropType> {
@Override
public void write(JsonWriter out, DropType value) throws IOException {
if (value.isString())
out.value(value.getAsString());
else out.value(value.getAsInt());
}
@Override
public DropType read(JsonReader in) throws IOException {
return switch (in.peek()) {
default -> new DropType(0);
case STRING -> new DropType(in.nextString());
case NUMBER -> new DropType(in.nextInt());
};
}
}
class IntListAdapter extends TypeAdapter<IntList> { class IntListAdapter extends TypeAdapter<IntList> {
@Override @Override
public IntList read(JsonReader reader) throws IOException { public IntList read(JsonReader reader) throws IOException {

View File

@ -3,23 +3,27 @@ package emu.grasscutter.utils;
import com.google.gson.*; import com.google.gson.*;
import com.google.gson.reflect.TypeToken; import com.google.gson.reflect.TypeToken;
import emu.grasscutter.data.common.DynamicFloat; import emu.grasscutter.data.common.DynamicFloat;
import emu.grasscutter.game.world.*; import emu.grasscutter.game.world.GridPosition;
import emu.grasscutter.game.world.Position;
import emu.grasscutter.utils.JsonAdapters.*; import emu.grasscutter.utils.JsonAdapters.*;
import emu.grasscutter.utils.objects.*; import emu.grasscutter.utils.objects.JObject;
import it.unimi.dsi.fastutil.ints.IntList; import it.unimi.dsi.fastutil.ints.IntList;
import java.io.FileInputStream;
import java.io.*; import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.lang.reflect.Type; import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets; import java.nio.charset.StandardCharsets;
import java.nio.file.*; import java.nio.file.Files;
import java.util.*; import java.nio.file.Path;
import java.util.List;
import java.util.Map;
public final class JsonUtils { public final class JsonUtils {
static final Gson gson = static final Gson gson =
new GsonBuilder() new GsonBuilder()
.setPrettyPrinting() .setPrettyPrinting()
.registerTypeAdapter(DynamicFloat.class, new DynamicFloatAdapter()) .registerTypeAdapter(DynamicFloat.class, new DynamicFloatAdapter())
.registerTypeAdapter(DropType.class, new DropTypeAdapter())
.registerTypeAdapter(IntList.class, new IntListAdapter()) .registerTypeAdapter(IntList.class, new IntListAdapter())
.registerTypeAdapter(Position.class, new PositionAdapter()) .registerTypeAdapter(Position.class, new PositionAdapter())
.registerTypeAdapter(GridPosition.class, new GridPositionAdapter()) .registerTypeAdapter(GridPosition.class, new GridPositionAdapter())

View File

@ -1,47 +0,0 @@
package emu.grasscutter.utils.objects;
import lombok.Getter;
@Getter
public final class DropType {
private final Object raw;
private final int value;
public DropType(int value) {
this.raw = value;
this.value = value;
}
public DropType(String value) {
this.raw = value;
this.value = switch (value) {
default -> Integer.parseInt(value);
case "ForceDrop" -> 2;
};
}
/**
* @return Whether the drop type value is a string.
*/
public boolean isString() {
return this.raw instanceof String;
}
/**
* @return The drop type value as a string.
*/
public String getAsString() {
if (this.raw instanceof String)
return (String) this.raw;
throw new UnsupportedOperationException();
}
/**
* @return The drop type value as an integer.
*/
public int getAsInt() {
if (this.raw instanceof Integer)
return (int) this.raw;
throw new UnsupportedOperationException();
}
}