mirror of
https://github.com/Grasscutters/Grasscutter.git
synced 2025-12-17 17:34:39 +01:00
Fixed dungeon challenge scoreboard and implement dungeon drops
Also fixed a few dungeon script handlers
This commit is contained in:
@@ -66,7 +66,8 @@ public class GameData {
|
||||
private static final Int2ObjectMap<DailyDungeonData> dailyDungeonDataMap = new Int2ObjectOpenHashMap<>();
|
||||
private static final Int2ObjectMap<DungeonData> dungeonDataMap = new Int2ObjectOpenHashMap<>();
|
||||
private static final Int2ObjectMap<ShopGoodsData> shopGoodsDataMap = new Int2ObjectOpenHashMap<>();
|
||||
|
||||
private static final Int2ObjectMap<RewardPreviewData> rewardPreviewDataMap = new Int2ObjectOpenHashMap<>();
|
||||
|
||||
// Cache
|
||||
private static Map<Integer, List<Integer>> fetters = new HashMap<>();
|
||||
private static Map<Integer, List<ShopGoodsData>> shopGoods = new HashMap<>();
|
||||
@@ -300,6 +301,13 @@ public class GameData {
|
||||
return shopGoods;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the rewardpreviewdatamap
|
||||
*/
|
||||
public static Int2ObjectMap<RewardPreviewData> getRewardPreviewDataMap() {
|
||||
return rewardPreviewDataMap;
|
||||
}
|
||||
|
||||
public static IntList getScenePointIdList() {
|
||||
return scenePointIdList;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package emu.grasscutter.data.common;
|
||||
|
||||
public class ItemParamStringData {
|
||||
private int Id;
|
||||
private String Count;
|
||||
|
||||
public ItemParamStringData() {}
|
||||
|
||||
public int getId() {
|
||||
return Id;
|
||||
}
|
||||
|
||||
public String getCount() {
|
||||
return Count;
|
||||
}
|
||||
|
||||
public ItemParamData toItemParamData() {
|
||||
if (Count.contains(";")) {
|
||||
String[] split = Count.split(";");
|
||||
Count = Count.split(";")[split.length - 1];
|
||||
} else if (Count.contains(".")) {
|
||||
return new ItemParamData(Id, (int) Math.ceil(Double.parseDouble(Count)));
|
||||
}
|
||||
return new ItemParamData(Id, Integer.parseInt(Count));
|
||||
}
|
||||
}
|
||||
@@ -11,7 +11,10 @@ public class DungeonData extends GameResource {
|
||||
private int Id;
|
||||
private int SceneId;
|
||||
private int ShowLevel;
|
||||
private int PassRewardPreviewID;
|
||||
private String InvolveType; // TODO enum
|
||||
|
||||
private RewardPreviewData previewData;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
@@ -26,8 +29,14 @@ public class DungeonData extends GameResource {
|
||||
return ShowLevel;
|
||||
}
|
||||
|
||||
public RewardPreviewData getRewardPreview() {
|
||||
return previewData;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
|
||||
if (this.PassRewardPreviewID > 0) {
|
||||
this.previewData = GameData.getRewardPreviewDataMap().get(this.PassRewardPreviewID);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package emu.grasscutter.data.def;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
import emu.grasscutter.Grasscutter;
|
||||
import emu.grasscutter.data.GameData;
|
||||
import emu.grasscutter.data.GameResource;
|
||||
import emu.grasscutter.data.ResourceType;
|
||||
|
||||
import emu.grasscutter.game.props.SceneType;
|
||||
|
||||
import emu.grasscutter.data.ResourceType.LoadPriority;
|
||||
import emu.grasscutter.data.common.ItemParamData;
|
||||
import emu.grasscutter.data.common.ItemParamStringData;
|
||||
|
||||
@ResourceType(name = "RewardPreviewExcelConfigData.json", loadPriority = LoadPriority.HIGH)
|
||||
public class RewardPreviewData extends GameResource {
|
||||
private int Id;
|
||||
private ItemParamStringData[] PreviewItems;
|
||||
private ItemParamData[] PreviewItemsArray;
|
||||
|
||||
@Override
|
||||
public int getId() {
|
||||
return this.Id;
|
||||
}
|
||||
|
||||
public ItemParamData[] getPreviewItems() {
|
||||
return PreviewItemsArray;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onLoad() {
|
||||
if (this.PreviewItems != null && this.PreviewItems.length > 0) {
|
||||
this.PreviewItemsArray = Arrays.stream(this.PreviewItems)
|
||||
.filter(d -> d.getId() > 0 && d.getCount() != null && !d.getCount().isEmpty())
|
||||
.map(ItemParamStringData::toItemParamData)
|
||||
.toArray(size -> new ItemParamData[size]);
|
||||
} else {
|
||||
this.PreviewItemsArray = new ItemParamData[0];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user