summaryrefslogtreecommitdiff
path: root/scripts/messages.gd
blob: c525fd26d38b491c8887f0f7842aad04c9e96226 (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
extends Control

var count = 0
var labels = []
var runs = []
var lengths = []

func _ready():
  set_process(true)
  
func _process(delta):
  var to_remove = []
  for i in range(count):
    var run = runs[i]
    var len = lengths[i]
    var label = labels[i]
    var far = run + delta
    if far >= (3*len/4):
      label.set_modulate(Color(1,1,1,0.3))
    elif far >= len/2:
      label.set_modulate(Color(1,1,1,0.5))
    if far >= len:
      to_remove.append(i)
    else:
      runs[i] += delta
  for i in to_remove:
    var label = labels[i]
    remove_child(label)
    labels.remove(i)
    runs.remove(i)
    lengths.remove(i)
    count -= 1

func display_message(message, time):
  if message == null:
    return
  var label = Label.new()
  label.set_text(message)
  add_child(label)
  
  if count > 0:
    var offset = label.get_size().y
    for i in range(count):
      var lab = labels[i]
      var lab_pos = lab.get_global_position()
      lab_pos.y += offset
      lab.set_global_position(lab_pos)
  
  labels.push_back(label)
  runs.push_back(0)
  lengths.push_back(time)
  count+=1