From 1c91b2984d1e675732ac45175f4c41857a503bb2 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 22 Jun 2014 14:18:52 -0400 Subject: [PATCH] Supply controller now holds a ref to it's shuttle Instead of having to look it up every time. --- code/game/machinery/status_display.dm | 4 +- code/game/objects/items/devices/PDA/cart.dm | 2 +- code/game/supplyshuttle.dm | 55 ++++++++++----------- code/modules/shuttles/shuttle.dm | 10 ---- code/modules/shuttles/shuttle_supply.dm | 3 ++ 5 files changed, 31 insertions(+), 43 deletions(-) diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 404c2d54ca..ad0494ff31 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -112,7 +112,7 @@ var/line1 = "SUPPLY" var/line2 = "" - var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle() + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle if (!shuttle) line2 = "Error" else if(shuttle.has_eta()) @@ -171,7 +171,7 @@ return "" proc/get_supply_shuttle_timer() - var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle() + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle if (!shuttle) return "Error" diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index 0f041ef5c9..9262c943bf 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -411,7 +411,7 @@ if(mode==47) var/supplyData[0] - var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle() + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle if (shuttle) supplyData["shuttle_moving"] = shuttle.has_eta() supplyData["shuttle_eta"] = shuttle.eta_minutes() diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index aa4ecd007d..e6836352ad 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -143,22 +143,24 @@ var/list/mechtoys = list( var/list/supply_packs = list() //shuttle movement var/movetime = 1200 - var/shuttle_tag = "Supply" + var/datum/shuttle/ferry/supply/shuttle New() ordernum = rand(1,9000) + if (shuttle_tag in shuttles && istype(shuttles[shuttle_tag], /datum/shuttle/ferry/supply)) + shuttle = shuttles["Supply"] + + //still don't have the shuttle, so create one + if (!shuttle) + shuttle = new/datum/shuttle/ferry/supply() + shuttle.location = 1 + shuttle.warmup_time = 10 + shuttle.area_offsite = locate(/area/supply/dock) + shuttle.area_station = locate(/area/supply/station) + shuttle.docking_controller_tag = "supply_shuttle" + shuttle.dock_target_station = "cargo_bay" + shuttles["Supply"] = shuttle - proc/get_shuttle() - if (!shuttles || !(shuttle_tag in shuttles)) - return null - - var/datum/shuttle/ferry/supply/shuttle = shuttles[shuttle_tag] - - if (!istype(shuttle)) - return null - - return shuttle - //Supply shuttle ticker - handles supply point regenertion and shuttle travelling between centcomm and the station proc/process() for(var/typepath in (typesof(/datum/supply_packs) - /datum/supply_packs)) @@ -178,8 +180,7 @@ var/list/mechtoys = list( set background = 1 while(1) if(processing) - var/datum/shuttle/ferry/supply/shuttle = get_shuttle() - if (shuttle && shuttle.in_use) + if (shuttle.in_use) shuttle.process_shuttle() sleep(10) @@ -202,21 +203,18 @@ var/list/mechtoys = list( //Sellin proc/sell() - var/datum/shuttle/ferry/supply/shuttle_datum = get_shuttle() - if (!shuttle_datum) return - - var/area/shuttle = shuttle_datum.get_location_area() - if(!shuttle) return + var/area/area_shuttle = shuttle.get_location_area() + if(!area_shuttle) return var/phoron_count = 0 var/plat_count = 0 - for(var/atom/movable/MA in shuttle) + for(var/atom/movable/MA in area_shuttle) if(MA.anchored) continue // Must be in a crate! if(istype(MA,/obj/structure/closet/crate)) - callHook("sell_crate", list(MA, shuttle)) + callHook("sell_crate", list(MA, area_shuttle)) points += points_per_crate var/find_slip = 1 @@ -253,15 +251,12 @@ var/list/mechtoys = list( proc/buy() if(!shoppinglist.len) return - var/datum/shuttle/ferry/supply/shuttle_datum = get_shuttle() - if (!shuttle_datum) return - - var/area/shuttle = shuttle_datum.get_location_area() - if(!shuttle) return + var/area/area_shuttle = shuttle.get_location_area() + if(!area_shuttle) return var/list/clear_turfs = list() - for(var/turf/T in shuttle) + for(var/turf/T in area_shuttle) if(T.density || T.contents.len) continue clear_turfs += T @@ -339,7 +334,7 @@ var/list/mechtoys = list( if(temp) dat = temp else - var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle() + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle if (shuttle) dat += {"
Supply shuttle
Location: [shuttle.has_eta() ? "Moving to station ([shuttle.eta_minutes()] Mins.)":shuttle.at_station() ? "Docked":"Away"]
@@ -466,7 +461,7 @@ var/list/mechtoys = list( if (temp) dat = temp else - var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle() + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle if (shuttle) dat += "
Supply shuttle
" dat += "\nLocation: " @@ -525,7 +520,7 @@ var/list/mechtoys = list( if(!supply_controller) world.log << "## ERROR: Eek. The supply_controller controller datum is missing somehow." return - var/datum/shuttle/ferry/supply/shuttle = supply_controller.get_shuttle() + var/datum/shuttle/ferry/supply/shuttle = supply_controller.shuttle if (!shuttle) world.log << "## ERROR: Eek. The supply/shuttle datum is missing somehow." return diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 471c4a77d3..274597ef4c 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -125,16 +125,6 @@ var/global/list/shuttles var/datum/shuttle/ferry/shuttle - //Supply and escape shuttles. - shuttle = new/datum/shuttle/ferry/supply() - shuttle.location = 1 - shuttle.warmup_time = 10 - shuttle.area_offsite = locate(/area/supply/dock) - shuttle.area_station = locate(/area/supply/station) - shuttle.docking_controller_tag = "supply_shuttle" - shuttle.dock_target_station = "cargo_bay" - shuttles["Supply"] = shuttle - // Admin shuttles. shuttle = new() shuttle.location = 1 diff --git a/code/modules/shuttles/shuttle_supply.dm b/code/modules/shuttles/shuttle_supply.dm index f75193ea03..3d878bcb60 100644 --- a/code/modules/shuttles/shuttle_supply.dm +++ b/code/modules/shuttles/shuttle_supply.dm @@ -58,6 +58,9 @@ if (!at_station()) //at centcom supply_controller.sell() +/datum/shuttle/ferry/emergency/long_jump(var/area/departing,var/area/destination,var/area/interim,var/travel_time) + short_jump(departing, destination) //long jumps are disabled + // returns 1 if the supply shuttle should be prevented from moving because it contains forbidden atoms /datum/shuttle/ferry/supply/proc/forbidden_atoms_check() if (!at_station())