====== River Oath: source and licence ====== River Oath is Copyright (C) 2026 Michael Slater. It is free software under the GNU General Public License, version 2 or (at your option) any later version, and comes with no warranty. The retro screen, font and hex battle come from [[sengoku:start|Sengoku]] and [[brokenseal:start|The Broken Seal]]. The source is ''river-oath-0.1.2-source.tar.gz'' from [[https://kalretro.au/riveroath/]]. It needs Free Pascal 3.2.2 and the Lazarus 4.4 LCL (GTK 2), as Sengoku does. ===== Building ===== make # builds ./river_oath ./run.sh # builds if needed, then runs make test # the rules tests and the screen tests make gui-test # the window test, under xvfb * ''tools/build-win64.sh'' cross-compiles the Windows exe on Linux (needs the win64 cross compiler), and ''tools/package.py'' makes the release files. * On Windows, ''build-windows.cmd'' builds with Lazarus's ''lazbuild''. ===== What is where ===== ^ File ^ What it is ^ | ''src/rogame.pas'' and ''ro*.inc'' | The campaign rules: places, bands, tasks, the month's end, tales, dikes, the Intendancy, the computer bands, saves | | ''src/robattle.pas'' | The hex battle | | ''src/roui.pas'' and ''ui*.inc'' | Every screen (no window code, so the tests can drive it) | | ''src/rodesk.pas'' | The window | | ''assets/data/world.json'' | Places, links, people, ties, officials and scenarios, made by ''tools/makeworld.py'' | | ''assets/data/rules.json'' | The numbers of the rules, each checked against a range when the game starts | | ''SPECIFICATION.md'' | The full design, with every number | | ''docs/TESTS.txt'' | What the tests check | ===== Tests ===== ''make test'' checks routes and seasons, every kind of task, tales spreading and fading, hunger, the dikes and the Great Flood, all three victories and the deadline, battles (and that a battle replayed from its moves ends the same), a battle saved halfway and loaded, offers and prisoners, and damaged saves. It then plays ten computer-only campaigns of each beginning to the end, checking the whole game after every month and saving and loading on the way. ''build/tests/rotests assets/data --full'' plays a hundred of each. ===== The browser edition ===== The browser edition is a separate project in TypeScript, with its source linked from the bar at the top of the game page (''riveroath-web-0.1.2-source.tar.gz''). ''npm run build'' builds the page, ''npm test'' runs its self-test (the rules, the desktop's recorded games and battles played again to the same saves, and an online game over HTTP), and ''npm run deploy'' builds, tests and puts it on the website. ''ONLINE.md'' describes the online server and its API.