From 097d4fa283da6547e5e4ec9d4c8555c3eee6fe0f Mon Sep 17 00:00:00 2001 From: ShadowLarkens Date: Tue, 25 Aug 2020 13:25:57 -0700 Subject: [PATCH] TGUI Research --- code/__defines/exosuit_fab.dm | 28 + .../_hydro_setup.dm => __defines/plants.dm} | 0 code/__defines/subsystems.dm | 2 + .../subsystems/plants.dm} | 117 ++- code/controllers/verbs.dm | 1 - code/datums/autolathe/arms.dm | 60 +- code/datums/autolathe/autolathe.dm | 2 - code/datums/wires/autolathe.dm | 3 + code/game/machinery/autolathe.dm | 289 +++--- code/game/machinery/biogenerator.dm | 364 ++++---- code/game/machinery/bomb_tester_vr.dm | 168 ++-- code/game/machinery/computer/robot.dm | 343 ++++--- code/game/machinery/partslathe_vr.dm | 145 +-- code/game/machinery/seed_extractor.dm | 4 +- code/game/mecha/equipment/mecha_equipment.dm | 2 + .../mecha/equipment/tools/extinguisher.dm | 1 + code/game/mecha/equipment/tools/rcd.dm | 1 + code/game/mecha/equipment/tools/sleeper.dm | 1 + .../game/mecha/equipment/tools/syringe_gun.dm | 1 + code/game/mecha/mech_fabricator.dm | 735 +++++++++++---- code/game/mecha/mech_prosthetics.dm | 383 ++------ code/game/mecha/mecha.dm | 10 + code/game/mecha/mecha_control_console.dm | 201 +++-- code/game/mecha/micro/mechfab_designs_vr.dm | 6 +- .../objects/items/devices/radio/headset.dm | 3 + .../game/objects/items/devices/radio/radio.dm | 2 +- .../objects/items/devices/transfer_valve.dm | 98 +- .../objects/items/robot/robot_upgrades.dm | 3 + code/game/objects/items/weapons/RPD_vr.dm | 3 + .../circuitboards/machinery/research.dm | 2 +- .../items/weapons/id cards/station_ids.dm | 3 + .../game/objects/items/weapons/tanks/tanks.dm | 2 + code/game/world.dm | 3 - code/modules/admin/admin.dm | 12 +- code/modules/assembly/assembly.dm | 20 +- code/modules/assembly/infrared.dm | 59 +- code/modules/assembly/proximity.dm | 82 +- code/modules/assembly/signaler.dm | 8 - code/modules/assembly/timer.dm | 67 +- code/modules/asset_cache/asset_list_items.dm | 9 +- code/modules/hydroponics/grown.dm | 23 +- code/modules/hydroponics/grown_inedible.dm | 2 +- code/modules/hydroponics/seed.dm | 12 +- code/modules/hydroponics/seed_machines.dm | 214 +++-- code/modules/hydroponics/seed_packets.dm | 6 +- code/modules/hydroponics/seed_storage.dm | 366 +++----- .../hydroponics/spreading/spreading.dm | 16 +- .../hydroponics/spreading/spreading_growth.dm | 6 +- code/modules/hydroponics/trays/tray.dm | 8 +- code/modules/hydroponics/trays/tray_tools.dm | 302 ++++--- .../hydroponics/trays/tray_update_icons.dm | 10 +- .../integrated_electronics/core/assemblies.dm | 158 ++-- .../core/assemblies/clothing.dm | 7 +- .../core/assemblies/implant.dm | 7 +- .../integrated_electronics/core/detailer.dm | 47 +- .../core/integrated_circuit.dm | 395 +++----- .../integrated_electronics/core/printer.dm | 181 ++-- code/modules/mob/living/bot/cleanbot.dm | 71 +- code/modules/mob/living/bot/edCLNbot.dm | 54 +- code/modules/mob/living/bot/farmbot.dm | 125 +-- code/modules/mob/living/bot/floorbot.dm | 88 +- code/modules/mob/living/bot/medbot.dm | 143 +-- code/modules/mob/living/bot/secbot.dm | 81 +- .../carbon/human/species/station/alraune.dm | 2 +- code/modules/organs/subtypes/diona.dm | 2 +- .../projectiles/guns/energy/special.dm | 4 +- code/modules/recycling/sortingmachinery.dm | 3 + code/modules/research/designs.dm | 7 +- code/modules/research/designs/ai_holders.dm | 6 +- .../research/designs/circuits/circuits.dm | 2 +- code/modules/research/designs/power_cells.dm | 12 +- code/modules/research/mechfab_designs.dm | 52 +- code/modules/research/prosfab_designs.dm | 20 +- code/modules/research/rdconsole.dm | 676 +------------- code/modules/research/rdconsole_tgui.dm | 625 +++++++++++++ code/modules/research/research.dm | 22 +- code/modules/research/server.dm | 241 ++--- code/modules/tgui/tgui.dm | 2 +- .../xenoarcheaology/artifacts/replicator.dm | 85 +- .../tools/ano_device_battery.dm | 132 +-- .../tools/artifact_analyser.dm | 119 ++- .../tools/artifact_harvester.dm | 349 ++++---- .../tools/geosample_scanner.dm | 115 ++- .../tools/suspension_generator.dm | 240 ++--- code/modules/xenoarcheaology/tools/tools.dm | 172 ++-- maps/northern_star/polaris-1.dmm | 2 +- maps/offmap_vr/om_ships/aro.dmm | 2 +- maps/offmap_vr/om_ships/cruiser.dmm | 2 +- maps/southern_cross/southern_cross-1.dmm | 2 +- maps/submaps/admin_use_vr/dhael_centcom.dmm | 2 +- maps/submaps/pois_vr/aerostat/Lab1.dmm | 2 +- maps/submaps/pois_vr/aerostat/Rockybase.dmm | 2 +- .../surface_submaps/wilderness/Lab1.dmm | 2 +- .../surface_submaps/wilderness/Rockybase.dmm | 2 +- maps/tether/tether-02-surface2.dmm | 6 +- maps/tether/tether-03-surface3.dmm | 2 +- nano/templates/botany_editor.tmpl | 56 -- nano/templates/botany_isolator.tmpl | 73 -- nano/templates/geoscanner.tmpl | 185 ---- nano/templates/mechfab.tmpl | 91 -- nano/templates/partslathe.tmpl | 76 -- nano/templates/robot_control.tmpl | 66 -- nano/templates/transfer_valve.tmpl | 56 -- tgui/packages/tgui/components/Button.js | 10 +- tgui/packages/tgui/index.js | 4 + .../tgui/interfaces/AssemblyInfrared.js | 41 + tgui/packages/tgui/interfaces/AssemblyProx.js | 65 ++ .../packages/tgui/interfaces/AssemblyTimer.js | 41 + tgui/packages/tgui/interfaces/Autolathe.js | 103 +++ .../packages/tgui/interfaces/BeaconLocator.js | 69 ++ tgui/packages/tgui/interfaces/Biogenerator.js | 212 +++++ tgui/packages/tgui/interfaces/BombTester.js | 198 ++++ tgui/packages/tgui/interfaces/BotanyEditor.js | 85 ++ .../tgui/interfaces/BotanyIsolator.js | 111 +++ tgui/packages/tgui/interfaces/Cleanbot.js | 104 +++ .../tgui/interfaces/ExosuitFabricator.js | 842 ++++++++++++++++++ tgui/packages/tgui/interfaces/Farmbot.js | 123 +++ tgui/packages/tgui/interfaces/Floorbot.js | 85 ++ tgui/packages/tgui/interfaces/Gps.js | 3 - tgui/packages/tgui/interfaces/ICAssembly.js | 110 +++ tgui/packages/tgui/interfaces/ICCircuit.js | 139 +++ tgui/packages/tgui/interfaces/ICDetailer.js | 43 + tgui/packages/tgui/interfaces/ICPrinter.js | 113 +++ .../tgui/interfaces/MechaControlConsole.js | 108 +++ tgui/packages/tgui/interfaces/Medbot.js | 117 +++ tgui/packages/tgui/interfaces/PartsLathe.js | 102 +++ .../packages/tgui/interfaces/PlantAnalyzer.js | 98 ++ tgui/packages/tgui/interfaces/Radio.js | 4 +- .../tgui/interfaces/ResearchConsole.js | 840 +++++++++++++++++ .../interfaces/ResearchServerController.js | 212 +++++ .../tgui/interfaces/RoboticsControlConsole.js | 143 +++ tgui/packages/tgui/interfaces/Secbot.js | 99 ++ tgui/packages/tgui/interfaces/SeedStorage.js | 63 ++ .../packages/tgui/interfaces/TransferValve.js | 91 ++ .../interfaces/XenoarchArtifactAnalyzer.js | 58 ++ .../interfaces/XenoarchArtifactHarvester.js | 117 +++ .../tgui/interfaces/XenoarchDepthScanner.js | 71 ++ .../XenoarchHandheldPowerUtilizer.js | 85 ++ .../tgui/interfaces/XenoarchReplicator.js | 30 + .../tgui/interfaces/XenoarchSpectrometer.js | 205 +++++ .../tgui/interfaces/XenoarchSuspension.js | 65 ++ tgui/packages/tgui/public/tgui.bundle.js | 16 +- tgui/packages/tgui/public/tgui.html | 5 + vorestation.dme | 6 +- 144 files changed, 9345 insertions(+), 4773 deletions(-) create mode 100644 code/__defines/exosuit_fab.dm rename code/{modules/hydroponics/_hydro_setup.dm => __defines/plants.dm} (100%) rename code/{modules/hydroponics/seed_controller.dm => controllers/subsystems/plants.dm} (70%) create mode 100644 code/modules/research/rdconsole_tgui.dm delete mode 100644 nano/templates/botany_editor.tmpl delete mode 100644 nano/templates/botany_isolator.tmpl delete mode 100644 nano/templates/geoscanner.tmpl delete mode 100644 nano/templates/mechfab.tmpl delete mode 100644 nano/templates/partslathe.tmpl delete mode 100644 nano/templates/robot_control.tmpl delete mode 100644 nano/templates/transfer_valve.tmpl create mode 100644 tgui/packages/tgui/interfaces/AssemblyInfrared.js create mode 100644 tgui/packages/tgui/interfaces/AssemblyProx.js create mode 100644 tgui/packages/tgui/interfaces/AssemblyTimer.js create mode 100644 tgui/packages/tgui/interfaces/Autolathe.js create mode 100644 tgui/packages/tgui/interfaces/BeaconLocator.js create mode 100644 tgui/packages/tgui/interfaces/Biogenerator.js create mode 100644 tgui/packages/tgui/interfaces/BombTester.js create mode 100644 tgui/packages/tgui/interfaces/BotanyEditor.js create mode 100644 tgui/packages/tgui/interfaces/BotanyIsolator.js create mode 100644 tgui/packages/tgui/interfaces/Cleanbot.js create mode 100644 tgui/packages/tgui/interfaces/ExosuitFabricator.js create mode 100644 tgui/packages/tgui/interfaces/Farmbot.js create mode 100644 tgui/packages/tgui/interfaces/Floorbot.js create mode 100644 tgui/packages/tgui/interfaces/ICAssembly.js create mode 100644 tgui/packages/tgui/interfaces/ICCircuit.js create mode 100644 tgui/packages/tgui/interfaces/ICDetailer.js create mode 100644 tgui/packages/tgui/interfaces/ICPrinter.js create mode 100644 tgui/packages/tgui/interfaces/MechaControlConsole.js create mode 100644 tgui/packages/tgui/interfaces/Medbot.js create mode 100644 tgui/packages/tgui/interfaces/PartsLathe.js create mode 100644 tgui/packages/tgui/interfaces/PlantAnalyzer.js create mode 100644 tgui/packages/tgui/interfaces/ResearchConsole.js create mode 100644 tgui/packages/tgui/interfaces/ResearchServerController.js create mode 100644 tgui/packages/tgui/interfaces/RoboticsControlConsole.js create mode 100644 tgui/packages/tgui/interfaces/Secbot.js create mode 100644 tgui/packages/tgui/interfaces/SeedStorage.js create mode 100644 tgui/packages/tgui/interfaces/TransferValve.js create mode 100644 tgui/packages/tgui/interfaces/XenoarchArtifactAnalyzer.js create mode 100644 tgui/packages/tgui/interfaces/XenoarchArtifactHarvester.js create mode 100644 tgui/packages/tgui/interfaces/XenoarchDepthScanner.js create mode 100644 tgui/packages/tgui/interfaces/XenoarchHandheldPowerUtilizer.js create mode 100644 tgui/packages/tgui/interfaces/XenoarchReplicator.js create mode 100644 tgui/packages/tgui/interfaces/XenoarchSpectrometer.js create mode 100644 tgui/packages/tgui/interfaces/XenoarchSuspension.js diff --git a/code/__defines/exosuit_fab.dm b/code/__defines/exosuit_fab.dm new file mode 100644 index 0000000000..dce03c9301 --- /dev/null +++ b/code/__defines/exosuit_fab.dm @@ -0,0 +1,28 @@ +/// Module is compatible with Security Cyborg models +#define BORG_MODULE_SECURITY (1<<0) +/// Module is compatible with Miner Cyborg models +#define BORG_MODULE_MINER (1<<1) +/// Module is compatible with Janitor Cyborg models +#define BORG_MODULE_JANITOR (1<<2) +/// Module is compatible with Medical Cyborg models +#define BORG_MODULE_MEDICAL (1<<3) +/// Module is compatible with Engineering Cyborg models +#define BORG_MODULE_ENGINEERING (1<<4) + +/// Module is compatible with Ripley Exosuit models +#define EXOSUIT_MODULE_RIPLEY (1<<0) +/// Module is compatible with Odyseeus Exosuit models +#define EXOSUIT_MODULE_ODYSSEUS (1<<1) +/// Module is compatible with Gygax Exosuit models +#define EXOSUIT_MODULE_GYGAX (1<<2) +/// Module is compatible with Durand Exosuit models +#define EXOSUIT_MODULE_DURAND (1<<3) +/// Module is compatible with Phazon Exosuit models +#define EXOSUIT_MODULE_PHAZON (1<<4) + +/// Module is compatible with "Working" Exosuit models - Ripley +#define EXOSUIT_MODULE_WORKING EXOSUIT_MODULE_RIPLEY +/// Module is compatible with "Combat" Exosuit models - Gygax, Durand and Phazon +#define EXOSUIT_MODULE_COMBAT EXOSUIT_MODULE_GYGAX | EXOSUIT_MODULE_DURAND | EXOSUIT_MODULE_PHAZON +/// Module is compatible with "Medical" Exosuit modelsm - Odysseus +#define EXOSUIT_MODULE_MEDICAL EXOSUIT_MODULE_ODYSSEUS diff --git a/code/modules/hydroponics/_hydro_setup.dm b/code/__defines/plants.dm similarity index 100% rename from code/modules/hydroponics/_hydro_setup.dm rename to code/__defines/plants.dm diff --git a/code/__defines/subsystems.dm b/code/__defines/subsystems.dm index 4e333dac06..d0a5d72c86 100644 --- a/code/__defines/subsystems.dm +++ b/code/__defines/subsystems.dm @@ -57,6 +57,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define INIT_ORDER_SKYBOX 30 #define INIT_ORDER_MAPPING 25 #define INIT_ORDER_DECALS 20 +#define INIT_ORDER_PLANTS 18 // Must initialize before atoms. #define INIT_ORDER_JOB 17 #define INIT_ORDER_ALARM 16 // Must initialize before atoms. #define INIT_ORDER_ATOMS 15 @@ -87,6 +88,7 @@ var/global/list/runlevel_flags = list(RUNLEVEL_LOBBY, RUNLEVEL_SETUP, RUNLEVEL_G #define FIRE_PRIORITY_SHUTTLES 5 #define FIRE_PRIORITY_SUPPLY 5 #define FIRE_PRIORITY_NIGHTSHIFT 5 +#define FIRE_PRIORITY_PLANTS 5 #define FIRE_PRIORITY_ORBIT 8 #define FIRE_PRIORITY_VOTE 9 #define FIRE_PRIORITY_AI 10 diff --git a/code/modules/hydroponics/seed_controller.dm b/code/controllers/subsystems/plants.dm similarity index 70% rename from code/modules/hydroponics/seed_controller.dm rename to code/controllers/subsystems/plants.dm index 28315b361a..4bcf49a3b0 100644 --- a/code/modules/hydroponics/seed_controller.dm +++ b/code/controllers/subsystems/plants.dm @@ -1,32 +1,12 @@ -// Attempts to offload processing for the spreading plants from the MC. -// Processes vines/spreading plants. - -#define PLANTS_PER_TICK 500 // Cap on number of plant segments processed. #define PLANT_TICK_TIME 75 // Number of ticks between the plant processor cycling. -// Debug for testing seed genes. -/client/proc/show_plant_genes() - set category = "Debug" - set name = "Show Plant Genes" - set desc = "Prints the round's plant gene masks." +SUBSYSTEM_DEF(plants) + name = "Plants" + init_order = INIT_ORDER_PLANTS + priority = FIRE_PRIORITY_PLANTS + wait = PLANT_TICK_TIME - if(!holder) return - - if(!plant_controller || !plant_controller.gene_tag_masks) - to_chat(usr, "Gene masks not set.") - return - - for(var/mask in plant_controller.gene_tag_masks) - to_chat(usr, "[mask]: [plant_controller.gene_tag_masks[mask]]") - -var/global/datum/controller/plants/plant_controller // Set in New(). - -/datum/controller/plants - - var/plants_per_tick = PLANTS_PER_TICK - var/plant_tick_time = PLANT_TICK_TIME var/list/product_descs = list() // Stores generated fruit descs. - var/list/plant_queue = list() // All queued plants. var/list/seeds = list() // All seed data stored here. var/list/gene_tag_masks = list() // Gene obfuscation for delicious trial and error goodness. var/list/plant_icon_cache = list() // Stores images of growth, fruits and seeds. @@ -34,24 +14,26 @@ var/global/datum/controller/plants/plant_controller // Set in New(). var/list/accessible_plant_sprites = list() // List of all plant sprites allowed to appear in random generation. var/list/plant_product_sprites = list() // List of all harvested product sprites. var/list/accessible_product_sprites = list() // List of all product sprites allowed to appear in random generation. - var/processing = 0 // Off/on. var/list/gene_masked_list = list() // Stored gene masked list, rather than recreating it when needed. var/list/plant_gene_datums = list() // Stored datum versions of the gene masked list. -/datum/controller/plants/New() - if(plant_controller && plant_controller != src) - log_debug("Rebuilding plant controller.") - qdel(plant_controller) - plant_controller = src + // To be clear, the only thing this processes are spreading plants + // Hydro trays and growing food normally just chill in SSobj + var/list/processing = list() + var/list/currentrun = list() + +/datum/controller/subsystem/plants/stat_entry() + ..("P:[processing.len]|S:[seeds.len]") + +/datum/controller/subsystem/plants/Initialize(timeofday) setup() - process() + return ..() // Predefined/roundstart varieties use a string key to make it // easier to grab the new variety when mutating. Post-roundstart // and mutant varieties use their uid converted to a string instead. // Looks like shit but it's sort of necessary. -/datum/controller/plants/proc/setup() - +/datum/controller/subsystem/plants/proc/setup() // Build the icon lists. for(var/icostate in cached_icon_states('icons/obj/hydroponics_growing.dmi')) var/split = findtext(icostate,"-") @@ -116,10 +98,10 @@ var/global/datum/controller/plants/plant_controller // Set in New(). gene_masked_list.Add(list(list("tag" = gene_tag, "mask" = gene_mask))) // Proc for creating a random seed type. -/datum/controller/plants/proc/create_random_seed(var/survive_on_station) +/datum/controller/subsystem/plants/proc/create_random_seed(var/survive_on_station) var/datum/seed/seed = new() seed.randomize() - seed.uid = plant_controller.seeds.len + 1 + seed.uid = SSplants.seeds.len + 1 seed.name = "[seed.uid]" seeds[seed.name] = seed @@ -138,32 +120,41 @@ var/global/datum/controller/plants/plant_controller // Set in New(). seed.set_trait(TRAIT_HIGHKPA_TOLERANCE,200) return seed -/datum/controller/plants/process() - processing = 1 - spawn(0) - set background = 1 - var/processed = 0 - while(1) - if(!processing) - sleep(plant_tick_time) - else - processed = 0 - if(plant_queue.len) - var/target_to_process = min(plant_queue.len,plants_per_tick) - for(var/x=0;x