From bc2fa7940a0a90ab4afc49a760220fb640f98780 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Wed, 18 Jun 2014 12:37:09 -0400 Subject: [PATCH] Adds supply shuttle datum --- baystation12.dme | 1 + code/game/machinery/status_display.dm | 23 ++- code/game/objects/items/devices/PDA/cart.dm | 8 +- code/game/supplyshuttle.dm | 152 +++++++++++--------- code/modules/shuttles/shuttle.dm | 6 +- code/modules/shuttles/shuttle_console.dm | 22 ++- code/modules/shuttles/shuttle_supply.dm | 76 ++++++++++ code/setup.dm | 5 + 8 files changed, 210 insertions(+), 83 deletions(-) create mode 100644 code/modules/shuttles/shuttle_supply.dm diff --git a/baystation12.dme b/baystation12.dme index df67636edd9..1d586ffa8bc 100644 --- a/baystation12.dme +++ b/baystation12.dme @@ -1444,6 +1444,7 @@ #include "code\modules\shuttles\shuttle.dm" #include "code\modules\shuttles\shuttle_console.dm" #include "code\modules\shuttles\shuttle_specops.dm" +#include "code\modules\shuttles\shuttle_supply.dm" #include "code\modules\shuttles\shuttles_multi.dm" #include "code\modules\store\items.dm" #include "code\modules\store\store.dm" diff --git a/code/game/machinery/status_display.dm b/code/game/machinery/status_display.dm index 746f5a06996..254c4e465d3 100644 --- a/code/game/machinery/status_display.dm +++ b/code/game/machinery/status_display.dm @@ -115,13 +115,22 @@ update_display(line1, line2) if(4) // supply shuttle timer var/line1 = "SUPPLY" - var/line2 - if(supply_shuttle.moving) + var/line2 = "" + + var/datum/shuttle/ferry/supply/shuttle = supply_shuttle.get_shuttle() + if (!shuttle) + line2 = "Error" + else if(shuttle.has_eta()) line2 = get_supply_shuttle_timer() if(lentext(line2) > CHARS_PER_LINE) line2 = "Error" + else if (shuttle.moving_status == SHUTTLE_WARMUP) + if (shuttle.at_station()) + line2 = "Launch" + else + line2 = "ETA" else - if(supply_shuttle.at_station) + if(shuttle.at_station()) line2 = "Docked" else line1 = "" @@ -167,8 +176,12 @@ return "" proc/get_supply_shuttle_timer() - if(supply_shuttle.moving) - var/timeleft = round((supply_shuttle.eta_timeofday - world.timeofday) / 10,1) + var/datum/shuttle/ferry/supply/shuttle = supply_shuttle.get_shuttle() + if (!shuttle) + return "Error" + + if(shuttle.has_eta()) + var/timeleft = round((shuttle.arrive_time - world.time) / 10,1) if(timeleft < 0) return "Late" return "[add_zero(num2text((timeleft / 60) % 60),2)]:[add_zero(num2text(timeleft % 60), 2)]" diff --git a/code/game/objects/items/devices/PDA/cart.dm b/code/game/objects/items/devices/PDA/cart.dm index cbbf4bcda20..c23be68bbca 100644 --- a/code/game/objects/items/devices/PDA/cart.dm +++ b/code/game/objects/items/devices/PDA/cart.dm @@ -412,9 +412,11 @@ if(mode==47) var/supplyData[0] - supplyData["shuttle_moving"] = supply_shuttle.moving - supplyData["shuttle_eta"] = supply_shuttle.eta - supplyData["shuttle_loc"] = supply_shuttle.at_station ? "Station" : "Dock" + var/datum/shuttle/ferry/supply/shuttle = supply_shuttle.get_shuttle() + if (shuttle) + supplyData["shuttle_moving"] = shuttle.has_eta() + supplyData["shuttle_eta"] = shuttle.eta_minutes() + supplyData["shuttle_loc"] = shuttle.at_station() ? "Station" : "Dock" var/supplyOrderCount = 0 var/supplyOrderData[0] for(var/S in supply_shuttle.shoppinglist) diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm index 2277e85a064..be919a87d9e 100644 --- a/code/game/supplyshuttle.dm +++ b/code/game/supplyshuttle.dm @@ -143,15 +143,23 @@ var/list/mechtoys = list( var/list/requestlist = list() var/list/supply_packs = list() //shuttle movement - var/at_station = 0 var/movetime = 1200 - var/moving = 0 - var/eta_timeofday - var/eta + var/shuttle_tag = "Supply" New() ordernum = rand(1,9000) + 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)) @@ -164,32 +172,13 @@ var/list/mechtoys = list( if(processing) iteration++ points += points_per_process - - if(moving == 1) - var/ticksleft = (eta_timeofday - world.timeofday) - if(ticksleft > 0) - eta = round(ticksleft/600,1) - else - eta = 0 - var/datum/shuttle/S = shuttles["Supply"] - if (istype(S)) S.move() - moving = 0 - at_station = !at_station + + var/datum/shuttle/ferry/supply/shuttle = get_shuttle() + if (shuttle) + shuttle.process_shuttle() sleep(processing_interval) - //Check whether the shuttle is allowed to move - proc/can_move() - if(moving) return 0 - - var/area/shuttle = locate(/area/supply/station) - if(!shuttle) return 0 - - if(forbidden_atoms_check(shuttle)) - return 0 - - return 1 - //To stop things being sent to centcomm which should not be sent to centcomm. Recursively checks for these types. proc/forbidden_atoms_check(atom/A) if(istype(A,/mob/living)) @@ -210,11 +199,10 @@ var/list/mechtoys = list( //Sellin proc/sell() - var/shuttle_at - if(at_station) shuttle_at = SUPPLY_STATION_AREATYPE - else shuttle_at = SUPPLY_DOCK_AREATYPE + var/datum/shuttle/ferry/supply/shuttle_datum = get_shuttle() + if (!shuttle_datum) return - var/area/shuttle = locate(shuttle_at) + var/area/shuttle = shuttle_datum.get_location_area() if(!shuttle) return var/plasma_count = 0 @@ -262,11 +250,10 @@ var/list/mechtoys = list( proc/buy() if(!shoppinglist.len) return - var/shuttle_at - if(at_station) shuttle_at = SUPPLY_STATION_AREATYPE - else shuttle_at = SUPPLY_DOCK_AREATYPE + var/datum/shuttle/ferry/supply/shuttle_datum = get_shuttle() + if (!shuttle_datum) return - var/area/shuttle = locate(shuttle_at) + var/area/shuttle = shuttle_datum.get_location_area() if(!shuttle) return var/list/clear_turfs = list() @@ -293,7 +280,7 @@ var/list/mechtoys = list( slip.info = "

[command_name()] Shipping Manifest



" slip.info +="Order #[SO.ordernum]
" slip.info +="Destination: [station_name]
" - slip.info +="[supply_shuttle.shoppinglist.len] PACKAGES IN THIS SHIPMENT
" + slip.info +="[shoppinglist.len] PACKAGES IN THIS SHIPMENT
" slip.info +="CONTENTS: