-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathDesignators.gd
70 lines (61 loc) · 2.3 KB
/
Designators.gd
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
class Designator extends Reference:
var button: Button setget set_button
# warning-ignore:unused_class_variable
var name: String
var text: String setget ,get_text # character (or characters) to use for designator button icon
var label_text: String
var text_color: Color = Color.white setget ,get_text_color
var icon: Texture setget ,get_icon
# warning-ignore:unused_class_variable
var selection: Array
var action: String
func on_activate():
pass
func get_text() -> String: return text
func get_text_color() -> Color: return text_color
func get_icon() -> Texture: return icon
func set_button(new_button: Button) -> void:
new_button.text = text
text_color = get_text_color()
new_button.add_color_override("font_color",text_color)
new_button.add_color_override("font_color_hover",text_color)
var regex = RegEx.new()
regex.compile("(?<!^\\W)[AEIOUaeiou]") # match vowels, unless they're the first character of a word
var button_label_text = label_text
if not label_text:
button_label_text = name
if button_label_text.length() > 6:
button_label_text = regex.sub(button_label_text,"",true)
(new_button.get_node("Label") as Label).text = button_label_text.substr(0,6)
button = new_button
class Deconstruct extends Designator:
func _init():
name = "Deconstruct"
text = "-"
text_color = Color.orange
action = "designate_deconstruct"
func set_button(new_button: Button):
var second_text: Label = new_button.get_node("SecondText")
second_text.add_color_override("font_color",Color.red)
second_text.add_color_override("font_color_hover",Color.red)
second_text.text = "\\" if selection.front().get_meta_or_null("deconstructing") else ""
.set_button(new_button)
class Forbid extends Designator:
func _init():
name = "Forbid"
text = "F"
action = "designate_toggleforbid"
func get_text_color():
return Color.red if selection.front().get_meta_or_null("forbidden") else Color.green
class Cancel extends Designator:
func _init():
name = "Cancel"
text = "O"
text_color = Color.red
action = "designate_cancel"
func set_button(new_button: Button):
var second_text: Label = new_button.get_node("SecondText")
second_text.add_color_override("font_color",Color.red)
second_text.add_color_override("font_color_hover",Color.red)
second_text.text = "/"
.set_button(new_button)