47 lines
975 B
GDScript
47 lines
975 B
GDScript
extends Node
|
|
|
|
class_name PowerNetwork
|
|
|
|
const DEBUG = true
|
|
|
|
var nodes = []
|
|
var sockets = []
|
|
|
|
var debugColor = Color.cyan
|
|
|
|
func _ready():
|
|
name = "PowerNetwork"
|
|
debugColor = Color.from_hsv(randf(), 0.8, 0.8)
|
|
|
|
func add_node(node):
|
|
nodes.append(node)
|
|
if node is ElectricSocket:
|
|
sockets.append(node)
|
|
|
|
func remove_node(node):
|
|
var node_idx = nodes.find(node)
|
|
if node_idx >= 0:
|
|
nodes.remove(node_idx)
|
|
var sock_idx = sockets.find(node)
|
|
if sock_idx >= 0:
|
|
sockets.remove(sock_idx)
|
|
# Do other splitting here
|
|
node.network = null
|
|
|
|
func join(network):
|
|
for node in network.nodes:
|
|
nodes.append(node)
|
|
node.network = self
|
|
# Do other merging here
|
|
network.queue_free()
|
|
|
|
func _physics_process(_delta):
|
|
# Recalculate power availability and usage
|
|
var total_source = 0
|
|
var total_usage = 0
|
|
for socket in sockets:
|
|
for connection in socket.connections:
|
|
var manager = connection as PowerManager
|
|
total_source += manager.power_source
|
|
total_usage += manager.power_usage
|