map with water piping, bugfixes, optimizations

This commit is contained in:
Tastyfish
2012-01-25 22:17:14 -05:00
parent 07d989bbd7
commit 18be394e7c
6 changed files with 8863 additions and 8629 deletions

View File

@@ -8,7 +8,7 @@
var/obj/parent
update_icon()
icon_state = "intact[invisibility ? "-f" : "" ]"
icon_state = "fixture[invisibility ? "-f" : "" ]"
hide(var/i)
if(level == 1 && istype(loc, /turf/simulated))

View File

@@ -100,6 +100,7 @@ obj/machinery/water/trinary/filter
hide(var/i)
if(level == 1 && istype(loc, /turf/simulated))
invisibility = i ? 101 : 0
density = !i
update_icon()
initialize()

View File

@@ -27,7 +27,7 @@
overlays = new()
if(connected_device)
overlays += "inserted[icon_type]"
overlays += "inserted"
if(connected_device.reagents.total_volume)
var/obj/effect/overlay = new/obj
@@ -209,4 +209,5 @@
/obj/machinery/water/glass_connector/wall
icon_state = "intact-w"
icon_type = "-w"
icon_type = "-w"
density = 0

View File

@@ -89,21 +89,35 @@ var/global/list/datum/water/pipe_network/water_pipe_networks = list()
reagents_transient = new(0)
reagents_transient.my_atom = new/obj()
// it's more efficient to avoid .add_reagent, etc more then once per reagent type
for(var/datum/reagents/R in reagents)
// add in each reagents
reagents_transient.maximum_volume += R.maximum_volume
R.copy_to(reagents_transient, R.total_volume)
for (var/datum/reagent/re in R.reagent_list)
var/datum/reagent/rr = reagents_transient.has_reagent(re.id)
if(!rr)
reagents_transient.add_reagent(re.id, re.volume, re.data)
else
rr.volume += re.volume
reagents_transient.update_total()
if(reagents_transient.total_volume > 0)
update = 1
//Update individual reagents by volume ratio
for(var/datum/reagents/R in reagents)
R.clear_reagents()
for(var/datum/reagent/re in reagents_transient.reagent_list)
R.add_reagent(re.id, re.volume \
* R.maximum_volume \
/ reagents_transient.maximum_volume)
var/datum/reagent/rr = R.has_reagent(re.id)
if(!rr)
R.add_reagent(re.id, re.volume \
* R.maximum_volume \
/ reagents_transient.maximum_volume, re.data)
else
rr.volume = re.volume \
* R.maximum_volume \
/ reagents_transient.maximum_volume
R.update_total()
return 1
proc/return_pressure_transient()
@@ -181,20 +195,31 @@ proc/equalize_reagents(var/list/datum/reagents/reagents)
var/datum/reagents/reagents_transient = new(0)
reagents_transient.my_atom = new/obj()
// it's more efficient to avoid .add_reagent, etc more then once per reagent type
for(var/datum/reagents/R in reagents)
// add in each reagent
// add in each reagents
reagents_transient.maximum_volume += R.maximum_volume
R.copy_to(reagents_transient, R.total_volume)
//Allow reagents to react
reagents_transient.handle_reactions()
for (var/datum/reagent/re in R.reagent_list)
var/datum/reagent/rr = reagents_transient.has_reagent(re.id)
if(!rr)
reagents_transient.add_reagent(re.id, re.volume, re.data)
else
rr.volume += re.volume
reagents_transient.update_total()
if(reagents_transient.total_volume > 0)
//Update individual reagents by volume ratio
for(var/datum/reagents/R in reagents)
R.clear_reagents()
for(var/datum/reagent/re in reagents_transient.reagent_list)
R.add_reagent(re.id, re.volume \
* R.maximum_volume \
/ reagents_transient.maximum_volume)
var/datum/reagent/rr = R.has_reagent(re.id)
if(!rr)
R.add_reagent(re.id, re.volume \
* R.maximum_volume \
/ reagents_transient.maximum_volume, re.data)
else
rr.volume = re.volume \
* R.maximum_volume \
/ reagents_transient.maximum_volume
R.update_total()
return 1