about summary refs log tree commit diff stats
path: root/Archipelago/panel.gd
blob: 0e8f1df27c1bbaff77d67305a187094a0a0f43ff (plain) (blame)
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
extends Node

var data = {}
var orig_text = ""
var atbash_text = ""
var orig_color = Color(0, 0, 0, 0)
var solvable = true
var locked = false

const kAtbashPre = "abcdefghijklmnopqrstuvwxyz1234567890+-"
const kAtbashPost = "zyxwvutsrqponmlkjihgfedcba0987654321-+"


func _ready():
	orig_text = self.get_parent().get_node("Viewport/GUI/Panel/Label").text
	orig_color = self.get_parent().get_node("Quad").get_surface_material(0).albedo_color

	for i in range(0, orig_text.length()):
		var old_char = orig_text[i]
		if old_char in kAtbashPre:
			var j = kAtbashPre.find(old_char)
			atbash_text += kAtbashPost[j]
		else:
			atbash_text += old_char

	self.get_parent().get_node("Viewport/GUI/Panel/TextEdit").connect(
		"answer_correct", self, "answer_correct"
	)


func answer_correct():
	var effects = get_tree().get_root().get_node("Spatial/AP_Effects")
	effects.deactivate_atbash_trap()


func evaluate_solvability():
	var apclient = global.get_node("Archipelago")
	var effects = get_tree().get_root().get_node("Spatial/AP_Effects")

	solvable = true
	var missing = []

	if apclient._color_shuffle:
		for color in data["color"]:
			if not apclient._has_colors.has(color):
				missing.append(color)
				solvable = false

	if locked:
		self.get_parent().get_node("Viewport/GUI/Panel/Label").text = "Locked"
		self.get_parent().get_node("Viewport/GUI/Panel/TextEdit").editable = false
		self.get_parent().get_node("Quad").get_surface_material(0).albedo_color = Color(
			0.2, 0.7, 0.7
		)
	elif solvable:
		if effects.atbash_remaining > 0:
			self.get_parent().get_node("Viewport/GUI/Panel/Label").text = atbash_text
		else:
			self.get_parent().get_node("Viewport/GUI/Panel/Label").text = orig_text
		self.get_parent().get_node("Viewport/GUI/Panel/TextEdit").editable = true
		self.get_parent().get_node("Quad").get_surface_material(0).albedo_color = orig_color
	else:
		var missing_text = "Missing: "
		for thing in missing:
			missing_text += thing + ",\n"
		missing_text = missing_text.left(missing_text.length() - 2)

		self.get_parent().get_node("Viewport/GUI/Panel/Label").text = missing_text
		self.get_parent().get_node("Viewport/GUI/Panel/TextEdit").editable = false
		self.get_parent().get_node("Quad").get_surface_material(0).albedo_color = Color(
			0.7, 0.2, 0.2
		)

	self.get_parent().get_node("Viewport").render_target_update_mode = 1