aboutsummaryrefslogtreecommitdiffstats
path: root/src/me/fatpigsarefat/quests/obj/misc/QMenuDaily.java
blob: 9b50f7ee7f1115ef8dd1fae83a54942ea97dee20 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
package me.fatpigsarefat.quests.obj.misc;

import me.fatpigsarefat.quests.Quests;
import me.fatpigsarefat.quests.obj.Items;
import me.fatpigsarefat.quests.obj.Options;
import me.fatpigsarefat.quests.player.QPlayer;
import me.fatpigsarefat.quests.player.questprogressfile.QuestProgress;
import me.fatpigsarefat.quests.quests.Quest;
import org.bukkit.Bukkit;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.TimeUnit;

public class QMenuDaily implements QMenu {

    private HashMap<Integer, String> slotsToQuestIds = new HashMap<>();
    private int backButtonLocation = -1;
    private boolean backButtonEnabled = true;
    private QMenuCategory superMenu;
    private String categoryName;
    private final int pageSize = 45;
    private QPlayer owner;

    public QMenuDaily(QPlayer owner, QMenuCategory superMenu) {
        this.owner = owner;
        this.superMenu = superMenu;
    }

    public void populate(List<Quest> quests) {
        int slot = 11;
        for (Quest quest : quests) {
            slotsToQuestIds.put(slot, quest.getId());
            slot++;
            if (slot == 16) {
                break;
            }
        }
    }

    @Override
    public HashMap<Integer, String> getSlotsToMenu() {
        return slotsToQuestIds;
    }

    @Override
    public QPlayer getOwner() {
        return owner;
    }

    public String getCategoryName() {
        return categoryName;
    }

    public Inventory toInventory(int page) {
        int pageMin = pageSize * (page - 1);
        int pageMax = pageSize * page;
        String title = Options.GUITITLE_DAILY_QUESTS.toString();

        Inventory inventory = Bukkit.createInventory(null, 27, title);

        //TODO daily quests

//        int invSlot = 11;
//        for (int pointer = pageMin; pointer < pageMax; pointer++) {
//            if (slotsToQuestIds.containsKey(pointer)) {
//                Quest quest = Quests.getQuestManager().getQuestById(slotsToQuestIds.get(pointer));
//                QuestProgress questProgress = owner.getQuestProgressFile().getQuestProgress(quest);
//                long cooldown = owner.getQuestProgressFile().getCooldownFor(quest);
//                if (!owner.getQuestProgressFile().hasMetRequirements(quest)) {
//                    List<String> quests = new ArrayList<>();
//                    for (String requirement : quest.getRequirements()) {
//                        quests.add(Quests.getQuestManager().getQuestById(requirement).getDisplayNameStripped());
//                    }
//                    Map<String, String> placeholders = new HashMap<>();
//                    placeholders.put("{quest}", quest.getDisplayNameStripped());
//                    placeholders.put("{requirements}", String.join(", ", quests));
//                    ItemStack is = replaceItemStack(Items.QUEST_LOCKED.getItem(), placeholders);
//                    inventory.setItem(invSlot, is);
//                } else if (!quest.isRepeatable() && questProgress.isCompletedBefore()) {
//                    Map<String, String> placeholders = new HashMap<>();
//                    placeholders.put("{quest}", quest.getDisplayNameStripped());
//                    ItemStack is = replaceItemStack(Items.QUEST_COMPLETED.getItem(), placeholders);
//                    inventory.setItem(invSlot, is);
//                } else if (cooldown > 0) {
//                    Map<String, String> placeholders = new HashMap<>();
//                    placeholders.put("{time}", Quests.convertToFormat(TimeUnit.MINUTES.convert(cooldown, TimeUnit.MILLISECONDS)));
//                    placeholders.put("{quest}", quest.getDisplayNameStripped());
//                    ItemStack is = replaceItemStack(Items.QUEST_COOLDOWN.getItem(), placeholders);
//                    inventory.setItem(invSlot, is);
//                } else {
//                    inventory.setItem(invSlot, Quests.getQuestManager().getQuestById(quest.getId()).getDisplayItem().toItemStack(questProgress));
//                }
//            }
//            invSlot++;
//        }

        return inventory;
    }

    public ItemStack replaceItemStack(ItemStack is, Map<String, String> placeholders) {
        ItemStack newItemStack = is.clone();
        List<String> lore = newItemStack.getItemMeta().getLore();
        List<String> newLore = new ArrayList<>();
        for (String s : lore) {
            for (Map.Entry<String, String> entry : placeholders.entrySet()) {
                s = s.replace(entry.getKey(), entry.getValue());
            }
            newLore.add(s);
        }
        ItemMeta ism = newItemStack.getItemMeta();
        ism.setLore(newLore);
        newItemStack.setItemMeta(ism);
        return newItemStack;
    }
}