Implement dungeon entry

This commit is contained in:
Melledy
2022-04-28 08:20:37 -07:00
parent fc9aa8ec24
commit 53cc1822f6
15 changed files with 285 additions and 48 deletions

View File

@@ -61,6 +61,7 @@ public class GameData {
private static final Int2ObjectMap<FetterCharacterCardData> fetterCharacterCardDataMap = new Int2ObjectOpenHashMap<>();
private static final Int2ObjectMap<RewardData> rewardDataMap = new Int2ObjectOpenHashMap<>();
private static final Int2ObjectMap<WorldLevelData> worldLevelDataMap = new Int2ObjectOpenHashMap<>();
private static final Int2ObjectMap<DungeonData> dungeonDataMap = new Int2ObjectOpenHashMap<>();
// Cache
private static Map<Integer, List<Integer>> fetters = new HashMap<>();
@@ -97,6 +98,11 @@ public class GameData {
public static Map<String, ScenePointEntry> getScenePointEntries() {
return scenePointEntries;
}
// TODO optimize
public static ScenePointEntry getScenePointEntryById(int sceneId, int pointId) {
return getScenePointEntries().get(sceneId + "_" + pointId);
}
public static Int2ObjectMap<AvatarData> getAvatarDataMap() {
return avatarDataMap;
@@ -265,4 +271,8 @@ public class GameData {
public static Int2ObjectMap<WorldLevelData> getWorldLevelDataMap() {
return worldLevelDataMap;
}
public static Int2ObjectMap<DungeonData> getDungeonDataMap() {
return dungeonDataMap;
}
}

View File

@@ -164,6 +164,7 @@ public class ResourceLoader {
for (Map.Entry<String, JsonElement> entry : config.points.entrySet()) {
PointData pointData = Grasscutter.getGsonFactory().fromJson(entry.getValue(), PointData.class);
pointData.setId(Integer.parseInt(entry.getKey()));
ScenePointEntry sl = new ScenePointEntry(sceneId + "_" + entry.getKey(), pointData);
scenePointList.add(sl);

View File

@@ -1,43 +1,30 @@
package emu.grasscutter.data.common;
public class PointData {
private pos tranPos;
import emu.grasscutter.utils.Position;
public pos getTranPos() {
public class PointData {
private int id;
private String $type;
private Position tranPos;
private int[] dungeonIds;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getType() {
return $type;
}
public Position getTranPos() {
return tranPos;
}
public void setTranPos(pos tranPos) {
this.tranPos = tranPos;
}
public class pos {
private float x;
private float y;
private float z;
public float getX() {
return x;
}
public void setX(float x) {
this.x = x;
}
public float getY() {
return y;
}
public void setY(float y) {
this.y = y;
}
public float getZ() {
return z;
}
public void setZ(float z) {
this.z = z;
}
}
public int[] getDungeonIds() {
return dungeonIds;
}
}

View File

@@ -0,0 +1,28 @@
package emu.grasscutter.data.def;
import emu.grasscutter.data.GameData;
import emu.grasscutter.data.GameResource;
import emu.grasscutter.data.ResourceType;
import emu.grasscutter.game.props.SceneType;
@ResourceType(name = "DungeonExcelConfigData.json")
public class DungeonData extends GameResource {
private int Id;
private int SceneId;
private String InvolveType; // TODO enum
@Override
public int getId() {
return this.Id;
}
public int getSceneId() {
return SceneId;
}
@Override
public void onLoad() {
}
}

View File

@@ -9,8 +9,9 @@ import emu.grasscutter.game.props.SceneType;
@ResourceType(name = "SceneExcelConfigData.json")
public class SceneData extends GameResource {
private int Id;
private SceneType SceneType;
private SceneType Type;
private String ScriptData;
@Override
public int getId() {
@@ -18,7 +19,7 @@ public class SceneData extends GameResource {
}
public SceneType getSceneType() {
return SceneType;
return Type;
}
public String getScriptData() {
@@ -27,6 +28,6 @@ public class SceneData extends GameResource {
@Override
public void onLoad() {
}
}