44 lines
1.0 KiB
GDScript
44 lines
1.0 KiB
GDScript
|
extends Node2D
|
||
|
|
||
|
var pentagram: Pentagram
|
||
|
var runes: Array
|
||
|
var drag = false
|
||
|
|
||
|
func _ready():
|
||
|
self.pentagram = Pentagram.new()
|
||
|
add_child(self.pentagram)
|
||
|
|
||
|
for idx in self.pentagram.indexes:
|
||
|
var x = randf_range(0, 512)
|
||
|
var y = randf_range(0, 512)
|
||
|
add_rune(Vector2(x, y), Color.DARK_RED, idx)
|
||
|
|
||
|
func add_rune(pos, color, idx):
|
||
|
var rune = Rune.new(color, idx)
|
||
|
add_child(rune)
|
||
|
self.runes.push_back(rune)
|
||
|
rune.global_position = pos
|
||
|
|
||
|
func _process(_delta):
|
||
|
var mouse = get_global_mouse_position()
|
||
|
|
||
|
for r in self.runes:
|
||
|
if Input.is_mouse_button_pressed(MOUSE_BUTTON_LEFT) and not self.drag:
|
||
|
if mouse.distance_squared_to(r.global_position) <= r.radius * r.radius:
|
||
|
r.drag = true
|
||
|
r.matches = false
|
||
|
r.queue_redraw()
|
||
|
self.drag = true
|
||
|
else:
|
||
|
r.drag = false
|
||
|
self.drag = false
|
||
|
|
||
|
if not r.drag:
|
||
|
r.global_position = self.pentagram.snap(r.global_position, 96)
|
||
|
if self.pentagram.snaped:
|
||
|
r.matches = self.pentagram.snap_addr == r.idx
|
||
|
r.queue_redraw()
|
||
|
|
||
|
else:
|
||
|
r.global_position = mouse
|