ExpeditionSystem.java 1.9 KB
Newer Older
Kinesis's avatar
Kinesis committed
1
2
3
4
package emu.grasscutter.game.expedition;

import com.google.gson.reflect.TypeToken;
import emu.grasscutter.Grasscutter;
5
import emu.grasscutter.data.DataLoader;
6
import emu.grasscutter.server.game.BaseGameSystem;
Kinesis's avatar
Kinesis committed
7
8
9
10
11
import emu.grasscutter.server.game.GameServer;
import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;

import java.io.FileReader;
12
13
import java.io.InputStreamReader;
import java.io.Reader;
Kinesis's avatar
Kinesis committed
14
15
16
import java.util.Collection;
import java.util.List;

17
18
import static emu.grasscutter.Configuration.*;

19
public class ExpeditionSystem extends BaseGameSystem {
Kinesis's avatar
Kinesis committed
20
21
    private final Int2ObjectMap<List<ExpeditionRewardDataList>> expeditionRewardData;

22
23
    public ExpeditionSystem(GameServer server) {
        super(server);
Kinesis's avatar
Kinesis committed
24
25
26
        this.expeditionRewardData = new Int2ObjectOpenHashMap<>();
        this.load();
    }
27
28
29
30
    
    public Int2ObjectMap<List<ExpeditionRewardDataList>> getExpeditionRewardDataList() { 
        return expeditionRewardData; 
    }
Kinesis's avatar
Kinesis committed
31
32

    public synchronized void load() {
33
        try (Reader fileReader = DataLoader.loadReader("ExpeditionReward.json")) {
Kinesis's avatar
Kinesis committed
34
35
36
37
38
39
            getExpeditionRewardDataList().clear();
            List<ExpeditionRewardInfo> banners = Grasscutter.getGsonFactory().fromJson(fileReader, TypeToken.getParameterized(Collection.class, ExpeditionRewardInfo.class).getType());
            if(banners.size() > 0) {
                for (ExpeditionRewardInfo di : banners) {
                    getExpeditionRewardDataList().put(di.getExpId(), di.getExpeditionRewardDataList());
                }
40
                Grasscutter.getLogger().debug("Expedition reward successfully loaded.");
Kinesis's avatar
Kinesis committed
41
42
43
44
45
46
47
48
            } else {
                Grasscutter.getLogger().error("Unable to load expedition reward. Expedition reward size is 0.");
            }
        } catch (Exception e) {
            Grasscutter.getLogger().error("Unable to load expedition reward.", e);
        }
    }
}