This repository has been archived on 2020-09-30. You can view files and clone it, but cannot push or open issues or pull requests.
odyssey-old/Actors/Objects/ElectricSocket/ElectricSocket.gd

54 lines
1.1 KiB
GDScript

tool
extends Area2D
enum Direction { LEFT, RIGHT, UP, DOWN }
enum Flow { SOURCE, SINK }
export(Direction) var direction = Direction.DOWN setget set_direction
export(Array, NodePath) var connections = []
export(Color) var source_color
export(Color) var sink_color
export(Flow) var flow = Flow.SINK setget set_flow
var ready = false
func _ready():
ready = true
$socket.material = $socket.material.duplicate()
refresh_sprite()
func set_direction(dir):
direction = dir
if ready:
refresh_sprite()
func set_flow(val):
flow = val
if ready:
refresh_sprite()
func refresh_sprite():
var rot = 0
match direction:
Direction.DOWN:
$socket.region_rect.position = Vector2(0, 0)
rot = 0
Direction.UP:
$socket.region_rect.position = Vector2(32, 0)
rot = PI
Direction.LEFT:
$socket.region_rect.position = Vector2(32, 32)
rot = PI/2
Direction.RIGHT:
$socket.region_rect.position = Vector2(0, 32)
rot = -PI/2
match flow:
Flow.SOURCE:
$socket.material.set_shader_param("cable_color", source_color)
Flow.SINK:
$socket.material.set_shader_param("cable_color", sink_color)