Fold Ward into the single Institution install as its psychiatric-care layer. package.sh now builds Ward clean and vendors Ward.dll plus its defs and textures alongside the other layers, and the settings shim gains a Ward (psychiatric care) checkbox that writes the shared InstitutionSettings.ward flag. Re-assembling also carries in Justice's now-shipping policing defs (the constable work type and crime thoughts), so the aggregate finally bundles colony crime and the weighed arrest as well. README updated to five layers over one Core with policing shipped and Ward folded in; adds the changelog, the Workshop preview, and the preview generator.
67 lines
3.1 KiB
Bash
Executable File
67 lines
3.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# Assemble the shippable, drop-in "Institution" mod into this repo.
|
|
#
|
|
# The Institution suite's code lives in SEPARATE sibling repos (rimworld-core, -contraband, -justice,
|
|
# -gangs, -ward) as independent projects/DLLs -- that is what keeps it modular and splittable. For DISTRIBUTION
|
|
# they are vendored into ONE mod folder (this repo) with one About.xml and a settings shim that toggles
|
|
# each layer. This script rebuilds the sibling DLLs clean (no self-test) and copies them + Contraband's
|
|
# Defs in here, so the repo is a complete installable mod.
|
|
#
|
|
# To split back into separate mods later: stop running this, and ship each sibling repo as its own mod
|
|
# (their About.xml files still exist). Nothing in the code changes.
|
|
#
|
|
# Usage: Tools/package.sh (assumes siblings at ../rimworld-<name>)
|
|
set -euo pipefail
|
|
|
|
HERE="$(cd "$(dirname "$0")/.." && pwd)"
|
|
SIB="$(dirname "$HERE")"
|
|
CORE="$SIB/rimworld-core"
|
|
CB="$SIB/rimworld-contraband"
|
|
JUST="$SIB/rimworld-justice"
|
|
GANGS="$SIB/rimworld-gangs"
|
|
WARD="$SIB/rimworld-ward"
|
|
|
|
command -v dotnet >/dev/null || { echo "dotnet not on PATH" >&2; exit 1; }
|
|
|
|
echo "==> building the engine + feature DLLs (clean, no self-test)"
|
|
dotnet build "$CORE/Source/Core/Core.csproj" -c Release -v q --nologo
|
|
dotnet build "$JUST/Source/Justice/Justice.csproj" -c Release -v q --nologo
|
|
dotnet build "$CB/Source/Contraband/Contraband.csproj" -c Release -v q --nologo
|
|
dotnet build "$GANGS/Source/Gangs/Gangs.csproj" -c Release -v q --nologo
|
|
dotnet build "$WARD/Source/Ward/Ward.csproj" -c Release -v q --nologo
|
|
|
|
echo "==> vendoring DLLs into Assemblies/"
|
|
mkdir -p "$HERE/Assemblies"
|
|
rm -f "$HERE/Assemblies/"*.dll # clear old layout
|
|
dotnet build "$HERE/Source/Institution/Institution.csproj" -c Release -v q --nologo # (re-)emit Institution.dll here
|
|
cp "$CORE/Assemblies/InstitutionCore.dll" "$HERE/Assemblies/"
|
|
cp "$CB/Assemblies/Contraband.dll" "$HERE/Assemblies/"
|
|
cp "$JUST/Assemblies/InstitutionJustice.dll" "$HERE/Assemblies/"
|
|
cp "$GANGS/Assemblies/InstitutionGangs.dll" "$HERE/Assemblies/"
|
|
cp "$WARD/Assemblies/Ward.dll" "$HERE/Assemblies/"
|
|
|
|
echo "==> vendoring the feature content"
|
|
for d in Defs Patches Languages Textures; do
|
|
rm -rf "$HERE/$d"
|
|
[[ -e "$CB/$d" ]] && cp -r "$CB/$d" "$HERE/$d"
|
|
done
|
|
# Justice ships defs of its own (crime thoughts, etc.); merge them into the same Defs/ tree.
|
|
if [[ -e "$JUST/Defs" ]]; then
|
|
mkdir -p "$HERE/Defs"
|
|
cp -r "$JUST/Defs/." "$HERE/Defs/"
|
|
fi
|
|
# Ward ships defs (interaction mode, hediffs, treatment station, room role) and its own textures.
|
|
# All its files are *_Ward.xml or under a Ward/ texture subdir, so nothing collides with the others.
|
|
if [[ -e "$WARD/Defs" ]]; then
|
|
mkdir -p "$HERE/Defs"
|
|
cp -r "$WARD/Defs/." "$HERE/Defs/"
|
|
fi
|
|
if [[ -e "$WARD/Textures" ]]; then
|
|
mkdir -p "$HERE/Textures"
|
|
cp -r "$WARD/Textures/." "$HERE/Textures/"
|
|
fi
|
|
|
|
echo "==> done. Assemblies:"
|
|
ls -1 "$HERE/Assemblies/" | sed 's/^/ /'
|
|
echo "The repo is now a complete drop-in Institution mod (Core bundled). Requires only Harmony."
|