summaryrefslogtreecommitdiff
path: root/src/main/kotlin/tech/thatgravyboat/rewardclaim/ui/UISelectedReward.kt
blob: 863ebc59b51aa6aeacdbd0283a733c329411b239 (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
package tech.thatgravyboat.rewardclaim.ui

import gg.essential.elementa.components.UIBlock
import gg.essential.elementa.components.UIImage
import gg.essential.elementa.components.UIText
import gg.essential.elementa.components.UIWrappedText
import gg.essential.elementa.constraints.CenterConstraint
import gg.essential.elementa.constraints.XConstraint
import gg.essential.elementa.dsl.*
import gg.essential.elementa.effects.OutlineEffect
import gg.essential.elementa.utils.withAlpha
import gg.essential.universal.ChatColor
import gg.essential.vigilance.gui.VigilancePalette
import tech.thatgravyboat.rewardclaim.MappedImageCache
import tech.thatgravyboat.rewardclaim.RewardConfiguration
import tech.thatgravyboat.rewardclaim.RewardLanguage
import tech.thatgravyboat.rewardclaim.types.RewardData

class UISelectedReward(middle: XConstraint) : UIBlock(VigilancePalette.getHighlight().withAlpha(204)) {

    private var image: UIImage? = null

    private val displayName = UIText("Select a Reward!").constrain {
        x = 31.percent()
        y = 10.3.percent()
    } childOf this

    private val imageBackground = UIBlock(VigilancePalette.getBrightHighlight()).constrain {
        x = 5.percent()
        y = 10.3.percent()
        width = 20.5.percent()
        height = 42.6.percent()
    } childOf this

    private val rarity = UIText().constrain {
        x = 31.percent()
        y = 10.3.percent() + 13.pixel()
    } childOf this

    private val amount = UIText().constrain {
        x = 31.percent()
        y = 10.3.percent() + 25.pixel()
    } childOf this

    private val desc = UIWrappedText().constrain {
        x = 5.percent()
        y = 52.9.percent() + 3.pixel()
        width = 90.percent()
    } childOf this

    init {
        constrain {
            width = 35.percent()
            height = 30.percent()
            x = middle - 17.5.percent()
            y = 25.percent()
        }

        UIBlock(VigilancePalette.getDivider()).constrain {
            width = 64.5.percent()
            height = 1.pixel()
            x = 30.5.percent()
            y = 10.3.percent() + 11.pixel()
        } childOf this
    }

    fun updateInfo(data: RewardData, language: RewardLanguage) {
        displayName.setText(data.getDisplayName(language))
        enableEffect(OutlineEffect(data.rarity.color.color!!, 1F))
        rarity.setText("Rarity: ${data.rarity.color}${language.translate(data.rarity.translationKey)}")

        if (data.amount != null) amount.setText("Amount: ${ChatColor.GOLD}${data.amount}")
        else if (data.intlist != null) amount.setText("Boxes: ${ChatColor.GOLD}${data.intlist.size}")
        else amount.setText("")
        desc.setText(data.getDescription(language))

        data.image?.let {
            it.url?.let { url ->
                val imageType = RewardConfiguration.getImageType(it.imageType)
                image?.let(imageBackground::removeChild)
                image = UIImage.ofURL(url, MappedImageCache).constrain {
                    width = imageType.width.percent()
                    height = imageType.height.percent()
                    if (imageType.center) {
                        x = CenterConstraint()
                        y = CenterConstraint()
                    }
                } childOf imageBackground
            }
        }

    }
}