blob: d6440aa385419a1e8818cd7910816ab0105ffad1 (
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
122
123
124
125
126
127
128
129
|
import { HudText } from "../../utils/renderJavaUtils"
class HudTextElement {
constructor() {
this.text = ""
this.toggleSetting = undefined
this.locationSetting = undefined
this.editTempTimeV = 0
this.editTempTextV = undefined
this.editBaseWidth = undefined
this.editBaseHeight = undefined
this.tempDisableTime = 0
this.renderTextCache = [""]
this.textChanged = false
this.renderElm = new HudText([""], 0, 0, true).startRender()
}
delete() {
this.renderElm.stopRender()
if (this.locationSetting) this.locationSetting.delete()
}
setBaseEditWidth(width) {
this.editBaseWidth = width
return this
}
setBaseEditHeight(height) {
this.editBaseHeight = height
return this
}
setText(text = "") {
if (text === this.text) return this
this.text = text
this.renderTextCache = ChatLib.addColor(this.text).split("\n")
this.renderElm.setText(this.renderTextCache)
return this
}
setToggleSetting(setting) {
this.toggleSetting = setting
setting.onChange = () => {
if (this.toggleSetting.getValue()) {
this.renderElm.startRender()
} else {
this.renderElm.stopRender()
}
}
if (this.toggleSetting.getValue()) {
this.renderElm.startRender()
} else {
this.renderElm.stopRender()
}
return this
}
setLocationSetting(setting) {
this.locationSetting = setting
setting.setParent(this)
setting.onChange = () => {
this.renderElm.setX(this.locationSetting.x).setY(this.locationSetting.y).setScale(this.locationSetting.scale)
}
this.renderElm.setX(this.locationSetting.x).setY(this.locationSetting.y).setScale(this.locationSetting.scale)
return this
}
isEnabled() {
if (!this.toggleSetting) return true
return this.locationSetting && this.toggleSetting.getValue()
}
render() {
if (this.toggleSetting && !this.toggleSetting.getValue() || !this.locationSetting) return
if (Date.now() - this.tempDisableTime < 100) return
this.renderRaw()
}
getWidth(locationBox = false) {
if (locationBox && this.editBaseWidth) return this.editBaseWidth
return Math.max(...(this.getText().map(a => Renderer.getStringWidth(ChatLib.removeFormatting(a)))))
}
getHeight(locationBox = false) {
if (locationBox && this.editBaseHeight) return this.editBaseHeight
return 9 * this.getText().length
}
getText() {
if (Date.now() - this.editTempTimeV < 100) {
let text = this.text
if (this.editTempTextV) {
text = this.editTempTextV
}
if (ChatLib.removeFormatting(text) === "") {
text = "&0Empty string"
}
return text.split("\n")
}
return this.renderTextCache
}
renderRaw() {
let text = this.getText()
for (let i = 0, line = text[0]; i < text.length; i++, line = text[i]) {
Renderer.scale(this.locationSetting.scale, this.locationSetting.scale)
switch (this.locationSetting.shadowType) {
case 0:
Renderer.drawString(line, this.locationSetting.x / this.locationSetting.scale, this.locationSetting.y / this.locationSetting.scale + 9 * i)
break;
case 1:
Renderer.drawStringWithShadow(line, this.locationSetting.x / this.locationSetting.scale, this.locationSetting.y / this.locationSetting.scale + 9 * i)
break;
}
}
}
}
export default HudTextElement
|