RW Room Viewer by: Sandfops
v. 1.0.0 is a bit unfinished, it lacks some basic things like grime and loading water parameters (I plan on adding both + more)
Visuals are not 100% accurate, but they are Close-Enough:tm:

This program was created in KitEngine, a Vulkan game engine that only I have access to because I got special permission from the creator (also me).

### CONTROLS ###
hold right-click / middle-click and pan mouse: change screens within a room.
F1: show/hide (some) editor tiles.  I'm adding the rest in the future.
F2: show/hide tile geometry.
F3: show/hide playable area grid.
F12: show/hide some debug info (I forgot to remove it before compiling)

### launch args ###
[first argument must be the path to a room image. (spaces and parens in the path must be prefixed with a backslash)]
[subsequent arguments are optional and may be in any order ... ]

-w=1366                                 : set window width to 1366
-h=768                                  : set window height to 768
-volatile                               : set window to be volatile (closes automatically on focus loss)
-pal=6                                  : set palette to 6
-fpal=7                                 : set fade palette to 7 (sorry)
-rwpath=steamapps/common/Rain\ World    : set rain world path if not specified in .ini (needed for resources) (spaces and parens must be prefixed with a backslash)

### example command (application has been renamed to 'roomViewer' for the example) ###

./roomViewer ./renders/sf_a01_1.png -rwpath=/home/sandfox/Desktop/Rain\ World\ \(modding\)/ -w=800 -h=600 -volatile

#######################

If on Linux:
Linux has this very cool thing where there is not a unified file browser.  if you are on a Gnome/Cinnamon Desktop you will need zenity installed for the open-file dialog to work.  If you are on a Plasma Desktop you should have QT5+ installed by default, though zenity will also work as a fallback.  QT and GTK did not want to compile together (macro conflicts my beloved) so a zenity dependency is the best I could do.

current tested Linux environments: Plasma, Gnome, Cinnamon

----------------------------------
Patch Notes 1.1.0

+ added launch arguments.
+ added water wave intensity, length, and speed. (can only be read from settings or template file, no in-app control yet)
+ added fullscreen toggle (F11).  Technically a bug fix since exclusive fullscreen was previously crashing one (1) Windows laptop and I replaced it with windowed fullscreen.

- made neuron light brighter.
- tweaked visuals (fog color and intensity / effect color intensity / water now properly renders on top ).
- fixed bug where effect color B would sometimes appear pitch black (noticeable in the topmost foliage of si_d01).
- fixed oversight where effect color was clamped to 0-20 despite the true range being 0-21.
- removed negative palettes from being selectable.  Base game comes with 'palettes/palette-1.png' however it doesn't seem to be used anywhere?
- fixed bug where typing in a palette ID would bonk you back to 0 if at any point the value in the box was an invalid ID.  i.e. (palette 999 being valid, but palette 99 being invalid, making 999 impossible to type).
- raised max character limit in palette text input from 4 to 10.  This should allow custom palettes with high IDs to be selectable this way.
- fixed file dialog not working properly on Cinnamon desktops.
- (potentially) fixed bug where iGpus could be favorable to discreet cards in some laptops.
- fixed bug where an empty rainworldPath key in the .ini file would cause a crash.
- fixed bug where if StreamingAssets/mods folder didn't exist it would crash.

----------------------------------
Patch Notes 1.1.1

- fixed QT dialog bug that prevented selecting a folder. (I used a bad workaround previously)

----------------------------------
Patch Notes 1.1.2 [ The "oh yea, this program exists" Update! ]

+ added a custom cursor for Linux version (GLFW Linux cursor is bad)

+ effect colors are now affected by shade/sunlight

- fixed bug where holding a slider as the room auto-reloads would cause the cursor to be occupied by a deleted slider until the application was restarted.

- fixed a bug where AMD cards (Windows only) would crash if the application was fullscreened.  If you're curious; it's because under those specific conditions the minimum supported swapChain image count was 1; and that messed with the renderer's synchronization as it is hard coded to be double buffered (low level rendering stuff like this can be horrible).

- fixed an issue with fog not being accurate for some palette/fade combos. (it still isn't but it's significantly better now)

- fixed bug where transport dot color wouldn't update with fade palette slider (literally nobody noticed, ping me on Discord if *you* noticed)

- numerous underlying engine tweaks for a game project I'm working on may benefit this program (possibly lower ram and vram usage, very slightly better performance, though unlikely to be seen or felt in a program this simple)


// Planned for a future patch
// properties.txt will list templates, if unspecified the first template is chosen
// fix shader error where water in the shaded citadel black palette is invisible to the neuron light (lightIntensity * 0 == 0)
----------------------------------
