diff --git a/.github/workflows/render_nanomaps.yml b/.github/workflows/render_nanomaps.yml new file mode 100644 index 0000000000..6b58c9e8e0 --- /dev/null +++ b/.github/workflows/render_nanomaps.yml @@ -0,0 +1,35 @@ +# GitHub action to autorender nanomaps outside the game +# This kills off the awful verb we have that takes a full 50 seconds and hangs the whole server +# The file names and locations are VERY important here +# DO NOT EDIT THIS UNLESS YOU KNOW WHAT YOU ARE DOING +# -aa +name: 'Render Nanomaps' +on: + push: + branches: master + paths: + - 'maps/**' + +jobs: + generate_maps: + name: 'Generate NanoMaps' + runs-on: ubuntu-18.04 + steps: + - name: 'Update Branch' + uses: actions/checkout@v2 + with: + fetch-depth: 1 + + - name: 'Generate Maps' + run: './tools/github-actions/nanomap-renderer-invoker.sh' + + - name: 'Commit Maps' + run: | + git config --local user.email "action@github.com" + git config --local user.name "NanoMap Generation" + git pull origin master + git commit -m "NanoMap Auto-Update (`date`)" -a || true + - name: 'Push Maps' + uses: ad-m/github-push-action@master + with: + github_token: ${{ secrets.GITHUB_TOKEN }} diff --git a/README.md b/README.md index 2780275b94..51ceb23af6 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,8 @@ Going to make a Pull Request? Make sure you read the [CONTRIBUTING.md](.github/C VOREStation is a fork of the Polaris code branch, itself a fork of the Baystation12 code branch, for the game Space Station 13. +![Render Nanomaps](https://github.com/VOREStation/VOREStation/workflows/Render%20Nanomaps/badge.svg) + --- ### LICENSE diff --git a/code/modules/admin/admin_verb_lists.dm b/code/modules/admin/admin_verb_lists.dm index b576bec44a..0eaedc9fbe 100644 --- a/code/modules/admin/admin_verb_lists.dm +++ b/code/modules/admin/admin_verb_lists.dm @@ -181,7 +181,6 @@ var/list/admin_verbs_server = list( /datum/admins/proc/toggle_space_ninja, /client/proc/toggle_random_events, /client/proc/check_customitem_activity, - /client/proc/nanomapgen_DumpImage, /client/proc/modify_server_news, /client/proc/recipe_dump, /client/proc/panicbunker, diff --git a/code/modules/tgui/nanomapgen.dm b/code/modules/tgui/nanomapgen.dm deleted file mode 100644 index 79c2332901..0000000000 --- a/code/modules/tgui/nanomapgen.dm +++ /dev/null @@ -1,92 +0,0 @@ -// This file is a modified version of https://raw2.github.com/Baystation12/OldCode-BS12/master/code/TakePicture.dm - -#define NANOMAP_ICON_SIZE 4 -#define NANOMAP_MAX_ICON_DIMENSION 1200 - -#define NANOMAP_TILES_PER_IMAGE (NANOMAP_MAX_ICON_DIMENSION / NANOMAP_ICON_SIZE) - -#define NANOMAP_TERMINALERR 5 -#define NANOMAP_INPROGRESS 2 -#define NANOMAP_BADOUTPUT 2 -#define NANOMAP_SUCCESS 1 -#define NANOMAP_WATCHDOGSUCCESS 4 -#define NANOMAP_WATCHDOGTERMINATE 3 - - -//Call these procs to dump your world to a series of image files (!!) -//NOTE: Does not explicitly support non 32x32 icons or stuff with large pixel_* values, so don't blame me if it doesn't work perfectly - -/client/proc/nanomapgen_DumpImage() - set name = "Generate NanoUI Map" - set category = "Server" - - if(holder) - nanomapgen_DumpTile(1, 1, text2num(input(usr,"Enter the Z level to generate"))) - -/client/proc/nanomapgen_DumpTile(var/startX = 1, var/startY = 1, var/currentZ = 1, var/endX = -1, var/endY = -1) - - if (endX < 0 || endX > world.maxx) - endX = world.maxx - - if (endY < 0 || endY > world.maxy) - endY = world.maxy - - if (currentZ < 0 || currentZ > world.maxz) - to_chat(usr, "NanoMapGen: ERROR: currentZ ([currentZ]) must be between 1 and [world.maxz]") - - sleep(3) - return NANOMAP_TERMINALERR - - if (startX > endX) - to_chat(usr, "NanoMapGen: ERROR: startX ([startX]) cannot be greater than endX ([endX])") - - sleep(3) - return NANOMAP_TERMINALERR - - if (startY > endX) - to_chat(usr, "NanoMapGen: ERROR: startY ([startY]) cannot be greater than endY ([endY])") - sleep(3) - return NANOMAP_TERMINALERR - - var/icon/Tile = icon('icons/_nanomaps/mapbase1200.png') - if (Tile.Width() != NANOMAP_MAX_ICON_DIMENSION || Tile.Height() != NANOMAP_MAX_ICON_DIMENSION) - to_world_log("NanoMapGen: ERROR: BASE IMAGE DIMENSIONS ARE NOT [NANOMAP_MAX_ICON_DIMENSION]x[NANOMAP_MAX_ICON_DIMENSION]") - sleep(3) - return NANOMAP_TERMINALERR - - Tile.Scale((endX - startX + 1) * NANOMAP_ICON_SIZE, (endY - startY + 1) * NANOMAP_ICON_SIZE) // VOREStation Edit - Scale image to actual size mapped. - - to_world_log("NanoMapGen: GENERATE MAP ([startX],[startY],[currentZ]) to ([endX],[endY],[currentZ])") - to_chat(usr, "NanoMapGen: GENERATE MAP ([startX],[startY],[currentZ]) to ([endX],[endY],[currentZ])") - - var/count = 0; - for(var/WorldX = startX, WorldX <= endX, WorldX++) - for(var/WorldY = startY, WorldY <= endY, WorldY++) - - var/atom/Turf = locate(WorldX, WorldY, currentZ) - - var/icon/TurfIcon = new(Turf.icon, Turf.icon_state) - TurfIcon.Scale(NANOMAP_ICON_SIZE, NANOMAP_ICON_SIZE) - - Tile.Blend(TurfIcon, ICON_OVERLAY, ((WorldX - 1) * NANOMAP_ICON_SIZE), ((WorldY - 1) * NANOMAP_ICON_SIZE)) - - count++ - - if (count % 8000 == 0) - to_world_log("NanoMapGen: [count] tiles done") - sleep(1) - - var/mapFilename = "nanomap_z[currentZ]-new.png" - - to_world_log("NanoMapGen: sending [mapFilename] to client") - - usr << browse(Tile, "window=picture;file=[mapFilename];display=0") - - to_world_log("NanoMapGen: Done.") - - to_chat(usr, "NanoMapGen: Done. File [mapFilename] uploaded to your cache.") - - if (Tile.Width() != NANOMAP_MAX_ICON_DIMENSION || Tile.Height() != NANOMAP_MAX_ICON_DIMENSION) - return NANOMAP_BADOUTPUT - - return NANOMAP_SUCCESS \ No newline at end of file diff --git a/tools/github-actions/README.MD b/tools/github-actions/README.MD new file mode 100644 index 0000000000..b6a3542a88 --- /dev/null +++ b/tools/github-actions/README.MD @@ -0,0 +1,7 @@ +# GitHub Actions Scripts + +This folder contains all the script and tools required for GitHub actions. If you add something to this directory, **PLEASE** document it in here + +- `nanomap-renderer` - A linux application to render NanoMap images of the ingame maps automatically. Based off of SpacemanDMM (Modified source [here](https://github.com/AffectedArc07/ParaSpacemanDMM), original source [here](https://github.com/Spacemaniac/SpacemanDMM)) +- `nanomap-renderer-invoker.sh` - A script which invokes the render tool and clones the maps to the correct directory +- `doc-generator` - A linux application to generate documentation of game code automatically. Based off of SpacemanDMM (Modified source [here](https://github.com/AffectedArc07/ParaSpacemanDMM), original source [here](https://github.com/Spacemaniac/SpacemanDMM)) diff --git a/tools/github-actions/nanomap-renderer b/tools/github-actions/nanomap-renderer new file mode 100644 index 0000000000..bd655ccb1f Binary files /dev/null and b/tools/github-actions/nanomap-renderer differ diff --git a/tools/github-actions/nanomap-renderer-invoker.sh b/tools/github-actions/nanomap-renderer-invoker.sh new file mode 100644 index 0000000000..4aea8cbf55 --- /dev/null +++ b/tools/github-actions/nanomap-renderer-invoker.sh @@ -0,0 +1,35 @@ +#!/bin/bash +# Generate maps +map_files=( + "./maps/tether/tether-01-surface1.dmm" + "./maps/tether/tether-02-surface2.dmm" + "./maps/tether/tether-03-surface3.dmm" + "./maps/tether/tether-04-transit.dmm" + "./maps/tether/tether-05-station1.dmm" + "./maps/tether/tether-06-station2.dmm" + "./maps/tether/tether-07-station3.dmm" + "./maps/tether/tether-08-mining.dmm" + "./maps/tether/tether-09-solars.dmm" + "./maps/offmap_vr/talon/talon1.dmm" + "./maps/offmap_vr/talon/talon2.dmm" +) + +tools/github-actions/nanomap-renderer minimap -w 2240 -h 2240 "${map_files[@]}" + +# Move and rename files so the game understands them +cd "data/nanomaps" + +mv "talon1_nanomap_z1.png" "tether_nanomap_z13.png" +mv "talon2_nanomap_z1.png" "tether_nanomap_z14.png" +mv "tether-01-surface1_nanomap_z1.png" "tether_nanomap_z1.png" +mv "tether-02-surface2_nanomap_z1.png" "tether_nanomap_z2.png" +mv "tether-03-surface3_nanomap_z1.png" "tether_nanomap_z3.png" +mv "tether-04-transit_nanomap_z1.png" "tether_nanomap_z4.png" +mv "tether-05-station1_nanomap_z1.png" "tether_nanomap_z5.png" +mv "tether-06-station2_nanomap_z1.png" "tether_nanomap_z6.png" +mv "tether-07-station3_nanomap_z1.png" "tether_nanomap_z7.png" +mv "tether-08-mining_nanomap_z1.png" "tether_nanomap_z8.png" +mv "tether-09-solars_nanomap_z1.png" "tether_nanomap_z9.png" + +cd "../../" +cp data/nanomaps/* "icons/_nanomaps/" \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 39a9dcf488..b9510f69ea 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -3555,7 +3555,6 @@ #include "code\modules\tgs\includes.dm" #include "code\modules\tgui\external.dm" #include "code\modules\tgui\modal.dm" -#include "code\modules\tgui\nanomapgen.dm" #include "code\modules\tgui\states.dm" #include "code\modules\tgui\tgui.dm" #include "code\modules\tgui\tgui_window.dm"