61 lines
1.2 KiB
GDScript
61 lines
1.2 KiB
GDScript
extends Node2D
|
|
|
|
signal openedSignal
|
|
|
|
var pattern = [1,8,-1,8,1]
|
|
var patternIndex = 0
|
|
|
|
var opened = false
|
|
var fullyMoved = false
|
|
|
|
var moveSpeed = -25
|
|
|
|
var amountMoved = 0
|
|
var amountToMove = 250
|
|
|
|
var timeWaited = 0
|
|
|
|
func _ready():
|
|
GameVariables.globalMessage.connect(global_message_recieved)
|
|
|
|
func _process(delta):
|
|
if patternIndex < pattern.size() and pattern[patternIndex] == -1:
|
|
timeWaited += delta
|
|
if timeWaited >= 3:
|
|
timeWaited = 0
|
|
patternIndex += 1
|
|
print("ready")
|
|
|
|
if opened and !fullyMoved:
|
|
var amountToMoved = moveSpeed*delta
|
|
position.x += amountToMoved
|
|
amountMoved += abs(amountToMoved)
|
|
|
|
if amountMoved >= amountToMove:
|
|
fullyMoved = true
|
|
|
|
func global_message_recieved(message:String):
|
|
if message.substr(0,4) == "doot":
|
|
var dootNumber = message.substr(4,5)
|
|
|
|
if pattern[patternIndex] == -1:
|
|
patternIndex = 0
|
|
timeWaited = 0
|
|
if pattern[patternIndex] == int(dootNumber):
|
|
patternIndex += 1
|
|
elif pattern[patternIndex] == int(dootNumber):
|
|
patternIndex += 1
|
|
if patternIndex >= pattern.size():
|
|
open()
|
|
patternIndex = 0
|
|
timeWaited = 0
|
|
else:
|
|
patternIndex = 0
|
|
timeWaited = 0
|
|
if pattern[patternIndex] == int(dootNumber):
|
|
patternIndex += 1
|
|
|
|
func open():
|
|
opened = true
|
|
openedSignal.emit()
|