This commit is contained in:
meyar
2013-06-20 01:51:41 -04:00
2 changed files with 46 additions and 43 deletions

View File

@@ -158,51 +158,53 @@ connection
if(!istype(zone_1) || !istype(zone_2)) if(!istype(zone_1) || !istype(zone_2))
return return
//Handle disconnection of indirectly or directly connected zones. if(indirect != CONNECTION_CLOSED)
if( (zone_1 in zone_2.connected_zones) || (zone_2 in zone_1.connected_zones) ) //Handle disconnection of indirectly or directly connected zones.
if( (zone_1 in zone_2.connected_zones) || (zone_2 in zone_1.connected_zones) )
//If there are more than one connection, decrement the number of connections //If there are more than one connection, decrement the number of connections
//Otherwise, remove all connections between the zones. //Otherwise, remove all connections between the zones.
if(zone_2 in zone_1.connected_zones) if(zone_2 in zone_1.connected_zones)
if(zone_1.connected_zones[zone_2] > 1) if(zone_1.connected_zones[zone_2] > 1)
zone_1.connected_zones[zone_2]-- zone_1.connected_zones[zone_2]--
else else
zone_1.connected_zones -= zone_2 zone_1.connected_zones -= zone_2
//remove the list if it is empty //remove the list if it is empty
if(!zone_1.connected_zones.len) if(!zone_1.connected_zones.len)
zone_1.connected_zones = null zone_1.connected_zones = null
//Then do the same for the other zone. //Then do the same for the other zone.
if(zone_1 in zone_2.connected_zones) if(zone_1 in zone_2.connected_zones)
if(zone_2.connected_zones[zone_1] > 1) if(zone_2.connected_zones[zone_1] > 1)
zone_2.connected_zones[zone_1]-- zone_2.connected_zones[zone_1]--
else else
zone_2.connected_zones -= zone_1 zone_2.connected_zones -= zone_1
if(!zone_2.connected_zones.len) if(!zone_2.connected_zones.len)
zone_2.connected_zones = null zone_2.connected_zones = null
//Handle disconnection of closed zones. else
if( (zone_1 in zone_2.closed_connection_zones) || (zone_2 in zone_1.closed_connection_zones) ) //Handle disconnection of closed zones.
if( (zone_1 in zone_2.closed_connection_zones) || (zone_2 in zone_1.closed_connection_zones) )
//If there are more than one connection, decrement the number of connections //If there are more than one connection, decrement the number of connections
//Otherwise, remove all connections between the zones. //Otherwise, remove all connections between the zones.
if(zone_2 in zone_1.connected_zones) if(zone_2 in zone_1.connected_zones)
if(zone_1.closed_connection_zones[zone_2] > 1) if(zone_1.closed_connection_zones[zone_2] > 1)
zone_1.closed_connection_zones[zone_2]-- zone_1.closed_connection_zones[zone_2]--
else else
zone_1.closed_connection_zones -= zone_2 zone_1.closed_connection_zones -= zone_2
//remove the list if it is empty //remove the list if it is empty
if(!zone_1.closed_connection_zones.len) if(!zone_1.closed_connection_zones.len)
zone_1.closed_connection_zones = null zone_1.closed_connection_zones = null
//Then do the same for the other zone. //Then do the same for the other zone.
if(zone_1 in zone_2.connected_zones) if(zone_1 in zone_2.connected_zones)
if(zone_2.closed_connection_zones[zone_1] > 1) if(zone_2.closed_connection_zones[zone_1] > 1)
zone_2.closed_connection_zones[zone_1]-- zone_2.closed_connection_zones[zone_1]--
else else
zone_2.closed_connection_zones -= zone_1 zone_2.closed_connection_zones -= zone_1
if(!zone_2.closed_connection_zones.len) if(!zone_2.closed_connection_zones.len)
zone_2.closed_connection_zones = null zone_2.closed_connection_zones = null
proc/Cleanup() proc/Cleanup()
@@ -259,9 +261,8 @@ connection
//The door is instead closed. //The door is instead closed.
else if(indirect > CONNECTION_CLOSED) else if(indirect > CONNECTION_CLOSED)
indirect = CONNECTION_CLOSED
DisconnectZones(A.zone, B.zone) DisconnectZones(A.zone, B.zone)
indirect = CONNECTION_CLOSED
ConnectZones(A.zone, B.zone) ConnectZones(A.zone, B.zone)
//If I can no longer pass air, better delete //If I can no longer pass air, better delete
@@ -381,7 +382,7 @@ connection
//Handle diconnection and reconnection of zones. //Handle diconnection and reconnection of zones.
if(zone_A && zone_B) if(zone_A && zone_B)
DisconnectZones(zone_A, zone_B) DisconnectZones(zone_A, zone_B)
ConnectZones(A.zone, B.zone, indirect) ConnectZones(A.zone, B.zone, indirect)
#undef CONNECTION_DIRECT #undef CONNECTION_DIRECT

View File

@@ -461,6 +461,8 @@ var/list/solars_list = list()
if(src.trackrate) nexttime = world.time + 6000/trackrate if(src.trackrate) nexttime = world.time + 6000/trackrate
track = text2num(href_list["track"]) track = text2num(href_list["track"])
if(powernet && (track == 2)) if(powernet && (track == 2))
if(!solars_list.Find(src,1,0))
solars_list.Add(src)
for(var/obj/machinery/power/tracker/T in get_solars_powernet()) for(var/obj/machinery/power/tracker/T in get_solars_powernet())
if(powernet.nodes[T]) if(powernet.nodes[T])
cdir = T.sun_angle cdir = T.sun_angle