|
@@ -1,62 +0,0 @@
|
|
|
-extends Node2D
|
|
|
-
|
|
|
-
|
|
|
-var living_cells = {}
|
|
|
-var default_font
|
|
|
-
|
|
|
-
|
|
|
-const label_offset = Vector2(5, 15)
|
|
|
-const cell_size = Vector2(40, 20)
|
|
|
-const rect_pad = Vector2(3, 3)
|
|
|
-
|
|
|
-
|
|
|
-func spawn_brick(x, y, maximum_life):
|
|
|
- living_cells[Vector2(x, y)] = randi() % maximum_life + 1
|
|
|
- update()
|
|
|
-
|
|
|
-
|
|
|
-func may_die_by_taking_this(pos, damage):
|
|
|
- var has_died = false
|
|
|
-
|
|
|
- if damage > 0 and living_cells.has(pos):
|
|
|
- living_cells[pos] -= damage
|
|
|
- update()
|
|
|
- has_died = living_cells[pos] <= 0
|
|
|
-
|
|
|
- if has_died:
|
|
|
- living_cells.erase(pos)
|
|
|
-
|
|
|
- return has_died
|
|
|
-
|
|
|
-
|
|
|
-func create_font():
|
|
|
- var label = Label.new()
|
|
|
- default_font = label.get_font("font")
|
|
|
-
|
|
|
-
|
|
|
-func color_from_life(n):
|
|
|
- var x = float(n % 256) / 255
|
|
|
- if (n < 256):
|
|
|
- return Color(x, 1.0, 1.0 - x)
|
|
|
- elif (n < 512):
|
|
|
- return Color(1.0, 1.0 - x, x)
|
|
|
- elif (n < 768):
|
|
|
- return Color(1.0, 0.0, 1.0 - x)
|
|
|
- else:
|
|
|
- return Color(1.0, 0.0, 0.0)
|
|
|
-
|
|
|
-
|
|
|
-func _ready():
|
|
|
- create_font()
|
|
|
-
|
|
|
-
|
|
|
-func _draw():
|
|
|
- var amount
|
|
|
- var pos
|
|
|
- var color
|
|
|
- for cell in living_cells:
|
|
|
- pos = cell * cell_size
|
|
|
- amount = living_cells[cell]
|
|
|
- color = color_from_life(amount)
|
|
|
- draw_rect(Rect2(pos + rect_pad, cell_size - 2 * rect_pad), color, true)
|
|
|
- draw_string(default_font, pos + label_offset, str(amount))
|