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/Systems/Electricity/PowerNetwork.gd

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