Commit Graph

1187 Commits

Author SHA1 Message Date
Fabian Dill 38cbcc662f
WebUI (#100)
* Object-Oriented base changes for web-ui prep

* remove debug raise

* optimize broadcast to serialize once

* Implement WebUI socket, static assets, and classes

- Still need to wrap logging functions and send output to UI
- UI commands are successfully being sent to the server

* GUI operational. Wrap logging functions, implement server address selection on GUI, automatically launch web browser when client websocket is served

* Update MultiServer status when a user disconnects / reconnects

* Implement colored item and hint checks, improve GUI readability

* Fix improper formatting on received items

* Update SNES connection status on disconnect / reconnect. Implement itemFound, prevent accidentally printing JS objects

* Minor text change for itemFound

* Fixed a very wrong comment

* Fixed client commands not working, fixed un-helpful error messages appearing in GUI

* Fix a bug causing a failure to connect to a multiworld server if a previously existing cached address was present and the client was loaded without an address passed in

* Convert WebUI to React /w Redux. WebSocket communications not yet operational.

* WebUI fully converted to React / Redux.

- Websocket communication operational
- Added a button to connect to the multiserver which appears only when a SNES is connected and a server connection is not active

* Restore some features lost in WebUI

- Restore (found) notification on hints if the item has already been obtained
- Restore (x/y) indicator on received items, which indicates the number of items the client is waiting to receive from the client in a queue

* Fix a grammatical UI big causing player names to show only an apostrophe when possessive

* Add support for multiple SNES Devices, and switching between them

* freeze support for client

* make sure flask works when frozen

* UI Improvements

- Hint messages now actually show a found status via ✔ and  emoji
- Active player name is always a different color than other players (orange for now)
- Add a toggle to show only entries relevant to the active player
- Added a WidgetArea
- Added a notes widget

* Received items now marked as relevant

* Include production build for deployment

* Notes now survive a browser close. Minimum width applied to monitor to prevent CSS issues.

* include webUi folder in setup.py

* Bugfixes for Monitor

- Fix a bug causing the monitor window to grow beyond it's intended content limit
- Reduced monitor content limit to 200 items
- Ensured each monitor entry has a unique key

* Prevent eslint from yelling at me about stupid things

* Add button to collapse sidebar, press enter on empty server input to disconnect on purpose

* WebUI is now aware of client disconnect, message log limit increased to 350, fix !missing output

* Update WebUI to v2.2.1

- Added color to WebUI for entrance-span
- Make !missing show total count at bottom of list to match /missing behavior

* Fix a bug causing clients version <= 2.2.0 to crash when anyone asks for a hint

- Also fix a bug in the WebUI causing the entrance location to always show as "somewhere"

* Update WebUI color palette (this cost me $50)

* allow text console input alongside web-ui

* remove Flask
a bit overkill for what we're doing

* remove jinja2

* Update WebUI to work with new hosting mechanism

* with flask gone, we no longer need subprocess shenanigans

* If multiple web ui clients try to run, at least present a working console

* Update MultiClient and WebUI to handle multiple clients simultaneously.

- The port on which the websocket for the WebUI is hosted is not chosen randomly from 5000 - 5999. This port is passed to the browser so it knows which MultiClient to connect to

- Removed failure condition if a web server is already running, as there is no need to run more than one web server on a single system. If an exception is thrown while attempting to launch a web server, a check is made for the port being unavailable. If the port is unavailable, it probably means the user is launching a second MultiClient. A web browser is then opened with a connection to the correct webui_socket_port.

- Add a /web command to the MultiClient to repoen the appropriate browser window and get params in case a user accidentally closes the tab

* Use proper name for WebUI

* move webui into /data with other data files

* make web ui optional
This is mostly for laptop users wanting to preserve some battery, should not be needed outside of that.

* fix direct server start

* re-add connection timer

* fix indentation

Co-authored-by: Chris <chris@legendserver.info>
2020-06-03 21:29:43 +02:00
Fabian Dill ffe67c7fa7 make activity timer actually based on activity and add connection timer for connection timing information
Also optimize "register_location_checks", because I was editing it anyway
2020-06-03 21:07:32 +02:00
Fabian Dill 86e09f1dc2 Merge remote-tracking branch 'origin/master' 2020-06-03 02:19:23 +02:00
Fabian Dill 3864eb5071 fix /snes <snes_interface> if interface contains spaces (which it shouldn't, but meh) 2020-06-03 02:19:16 +02:00
CaitSith2 e4c68fde60
Don't clear locally visited locations if rom is same as previous on /snes after /snes_close (#98) 2020-06-02 16:38:23 +02:00
Fabian Dill 117624d611 fix /snes <snes_interface> if interface contains spaces (which it shouldn't, but meh) 2020-05-31 14:55:37 +02:00
Fabian Dill f918efb645 implement skip_playthrough in mystery 2020-05-31 00:28:03 +02:00
Fabian Dill 0cb80eadf1 add more room info 2020-05-30 11:36:59 +02:00
Fabian Dill 10bced3d68 rip out port forwarding. Broken and as a result mostly unused. 2020-05-30 03:47:40 +02:00
Fabian Dill 781ec7a849 Drop Python 3.7 auto builds 2020-05-30 02:07:29 +02:00
compiling a115f4115f
Remove crossworld connections from dungeonsfull (#97)
* Stop inverted dungeonsfull from generating crossworld dungeon connections.

* Inverted dungeonsfull fix - Force reusing an existing cave if there are not enough entrances to use a new one.

* Enhance mandatory exit logic to ensure they do not block themselves, and also handle boundary conditions that often occur in inverted dungeonsfull

* Split invalid connections into normal and inverted
2020-05-25 16:01:43 +02:00
Fabian Dill 23e989312c fix rom-internal RNG not being deterministic due to outside multithreading in _gen_rom (Main.py) setting a random seed across threads while it is in use in any order. 2020-05-24 12:43:03 +02:00
Fabian Dill ca03e1f59f fix a retro - crossed TR keylogic crash 2020-05-21 15:34:42 +02:00
Fabian Dill 94d3a68f43 attempt at fixing a retro - crossed TR keylogic crash 2020-05-21 13:20:36 +02:00
Fabian Dill daf3747bec add progression balancing to spoiler 2020-05-20 22:30:21 +02:00
CaitSith2 0deac5ef9d
Add Bosses to spoiler log (#96) 2020-05-20 22:21:05 +02:00
Fabian Dill 9a645389ad update meta.yaml with new progression balancing 2020-05-19 02:57:34 +02:00
Fabian Dill 3139b05fd2 tiny hint optimization 2020-05-18 23:27:56 +02:00
Fabian Dill df79e570bb shorten hint text a bit, now that it got longer 2020-05-18 23:24:41 +02:00
Fabian Dill 947362aaa6 improve colors #2 2020-05-18 23:09:51 +02:00
Fabian Dill 2c8d127550 improve colors 2020-05-18 10:02:28 +02:00
CaitSith2 c8343df81e
Added Extended msu option to gui (#95)
* Added Extended msu option to gui
2020-05-18 05:45:09 +02:00
Fabian Dill b2e20be077 Hints now contain ER info 2020-05-18 05:40:36 +02:00
Fabian Dill 11678fa20b turn progression balancing into a per-player option 2020-05-18 03:54:29 +02:00
caitsith2 d24e5e1eeb Correct an oops on the command line regarding forfeit-mode. 2020-05-14 15:17:56 -07:00
Fabian Dill 9b4a87a467 use self.output in command processor 2020-05-14 07:12:20 +02:00
Fabian Dill 1caf4e563d name missing shuffle 2020-05-14 01:21:09 +02:00
Fabian Dill f2884c7ee1 update appdirs 2020-05-11 21:07:24 +02:00
Fabian Dill f3cf03b374 Bump to 2.2.0 2020-05-11 02:37:09 +02:00
Fabian Dill cb7d4d43e1 implement progression balancing as an option in CLI, gui and MultiMystery 2020-05-11 02:17:18 +02:00
Fabian Dill e1add44d83
Merge pull request #93 from compiling/owg_multi
Optimise world exploration
2020-05-10 16:56:38 +02:00
Fabian Dill 98bdcc00be make qualified OS name match acronym for BMBP 2020-05-10 13:49:34 +02:00
compiling d6dc559ed6 Update dungeon tests to work with the new exploration algorithm 2020-05-10 19:54:40 +10:00
compiling 195f6c86d2 Replace world exploration with a faster algorithm - use BFS and keep track of all entrances that are currently blocked by progression items 2020-05-10 19:27:13 +10:00
Fabian Dill 4df8604b48
Merge pull request #92 from compiling/owg_multi
Fix copy world
2020-05-10 08:33:23 +02:00
compiling 8cd15c0e0a Go back to the old copy_world routine, and fix it to work with dynamic connections. 2020-05-10 14:56:52 +10:00
Fabian Dill cb3ad87299
Merge pull request #90 from compiling/owg_multi
Fix for copy_world
2020-05-09 02:46:39 +02:00
compiling 555bd52a68 Go back to a custom copy_world implementation. copy.deepcopy doesn't handle big graphs very well (stackoverflow). 2020-05-09 10:00:41 +10:00
Fabian Dill aa3eb6a3f8 stronger compression and compatibility on multidata 2020-05-08 23:09:56 +02:00
Fabian Dill 8d65300ecd
Merge pull request #89 from compiling/owg_multi
More OWG Changes
2020-05-08 19:01:46 +02:00
compiling 41af9765aa Require flippers for returning to dark lake hylia from Ice Palace / Capacity Fairy. 2020-05-08 19:54:33 +10:00
compiling e812c8a3f7 Make Pyramid Fairy offset mirror require access to Hyrule Castle Courtyard through the secret passage entrance (the normal route is not possible if you killed Agahnim). 2020-05-08 19:32:04 +10:00
compiling e7a3637cc9 Add OWG clip to dark world floating island. 2020-05-08 18:23:55 +10:00
compiling 5b268ef8ae Combine bunny rules calculation for inverted and normal. 2020-05-07 20:00:29 +10:00
compiling a526d71fe0 Fix inverted bomb shop rules for Lake Hylia Island (also added King's Tomb rules). 2020-05-07 19:04:34 +10:00
compiling 3740450845 Require moon pearl and flippers to exit the Waterfall of Wishing cave in inverted. 2020-05-07 18:58:57 +10:00
compiling 441f59d6ea Refactor OWG rules to keep them separate from no glitches.
Add logic for superbunny access to Sahasrahla's closet (with boots)
Add logic for superbunny through Two Brother's House (with boots)
Fix superbunny logic for spiral cave and mini moldorm cave - requires a sword
Add logic for waterwalking into Waterfall Cave
Add clip to Ice Palace entrance (requires boots, pearl and flippers)
Add extra clips to inverted owg logic - PoD and Dark Lake Hylia Ledge are now in logic with just boots
Add clip to flute point 6 into inverted owg logic - some light world locations are now accessible with boots and mitts, but no pearl or mirror.
2020-05-07 18:07:53 +10:00
Fabian Dill 4a5fe1333c don't crash on empty meta-ignore dicts 2020-05-07 08:26:50 +02:00
Fabian Dill d3224d1f0c
Merge pull request #87 from compiling/owg_multi
Fix progressive silvers hint.
2020-05-05 22:54:16 +02:00
compiling bd7325b03d Fix progressive silvers hint. 2020-05-05 18:57:59 +10:00