Commit Graph

111 Commits

Author SHA1 Message Date
Fabian Dill 27901008bc fix that hints print already collected items again 2020-06-09 05:22:48 +02:00
Fabian Dill 68f453f802 remove duplicate old hints 2020-06-07 03:50:28 +02:00
Fabian Dill 55b37a998d hotfix hint cost problem 2020-06-07 03:08:53 +02:00
Fabian Dill 2302150521 adjust hint payment rejected text 2020-06-07 02:38:03 +02:00
Fabian Dill 2e21e41c16 Allow partial hints 2020-06-07 02:13:41 +02:00
Fabian Dill b36738f3f4 reraise the crash 2020-06-07 00:50:39 +02:00
Fabian Dill 55152515f6 move stuff out of main(), for alternative server implementations 2020-06-07 00:49:10 +02:00
Fabian Dill 00d7667771 extend hint system with group names 2020-06-07 00:19:19 +02:00
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 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 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 b2e20be077 Hints now contain ER info 2020-05-18 05:40:36 +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 aa3eb6a3f8 stronger compression and compatibility on multidata 2020-05-08 23:09:56 +02:00
Fabian Dill 6afd4f0507 addresses #86
And also fixes auto, which worked as goal but never got triggered
2020-05-04 02:47:22 +02:00
Fabian Dill d6665b6b53
Merge pull request #78 from Berserker66/tweaks
Tweaks
2020-04-30 17:27:34 +02:00
Fabian Dill 92350831fc notify_all already prints to local console via logging 2020-04-30 04:44:57 +02:00
Fabian Dill a6cc75d36a optimize broadcast to serialize once 2020-04-30 04:39:38 +02:00
Fabian Dill f5be6867c8 "license" is a python built-in and we should not shadow that name 2020-04-28 22:17:47 +02:00
caitsith2 7a3511e1ef Update messages that get sent to client with aliases. 2020-04-27 23:49:46 -07:00
Fabian Dill 00da5dfd65 warn older client versions that features are missing 2020-04-28 05:59:03 +02:00
CaitSith2 495254addf
Actually check if client goal is achieved, instead of just existence of an entry. (#77) 2020-04-27 15:13:33 +02:00
Fabian Dill ad66909669 implement server side /alias, also prevent aliases with trailing whitespace 2020-04-27 03:47:12 +02:00
Fabian Dill 00ba3c71c9 fix server not sending aliased names on connect 2020-04-25 23:16:16 +02:00
Fabian Dill 77ca61d069 introduce forfeit_mode and remaining_mode, as well as server state for client has beaten the game
more info in host.yaml
2020-04-25 15:11:58 +02:00
caitsith2 49385ede3d Change win text 2020-04-24 21:42:13 -07:00
caitsith2 b3c7789596 Changes
* Game end detection - Detect if the player finished their game, and announce it accordingly.
* Add a client side /slow_mode option. (allows to delay receiving items when a massive amount of them come in, like from a forfeit.)
2020-04-24 20:07:28 -07:00
Fabian Dill 5d33b4b164 introduce persistent data storage, which for now just caches rom -> server pairs 2020-04-24 05:29:02 +02:00
Fabian Dill 7582767401 aliases 2020-04-23 06:16:54 +02:00
Fabian Dill 9842399d8b fix payment for already found hints 2020-04-22 15:50:14 +02:00
Fabian Dill fa2cf20b01 !hint now points out all hints relating to the player issuing the command.
payed hints also retain that they were already found and don't need to be re-checked as items can't be unfound.
2020-04-22 05:09:46 +02:00
Fabian Dill afc379f92e make get_intended_text handle 1 out of 1 pools correctly. 2020-04-21 21:53:20 +02:00
Fabian Dill 9291a0dbca make sure countdown is started in base10 2020-04-21 21:46:16 +02:00
Fabian Dill 8ea342abe5 Add result flag to commands 2020-04-21 06:26:51 +02:00
Fabian Dill 356ff91cfd make players command only output to the player requesting if there's 10 or more players 2020-04-20 23:03:52 +02:00
Fabian Dill 905714adfe improve license command with cache and local path 2020-04-20 21:15:13 +02:00
Fabian Dill 860faf6ef5 unify versions 2020-04-20 14:50:49 +02:00
Fabian Dill 5a57519c32 Add count to missing command
Add a server's missing command
Fix password wasn't able to remove a set password
2020-04-20 11:47:50 +02:00
Fabian Dill ecc2b03aed keep track of last item checked time for clients 2020-04-20 04:36:56 +02:00
Fabian Dill a4225d29e5 document Command Processor __call__ tree 2020-04-19 15:32:27 +02:00
Fabian Dill 60707f5196 fix methods with raw_text and optional argument 2020-04-19 15:31:15 +02:00
Fabian Dill 98a8af560a rename get_connected_players_string 2020-04-19 14:51:48 +02:00
Fabian Dill 3840832f05 disconnect on send failure 2020-04-19 14:05:58 +02:00
Fabian Dill 24fce94766 Don't ignore disconnects when they happen during data transfer, instead properly disconnect the client 2020-04-19 13:16:12 +02:00
Fabian Dill 659bc0e177 no longer eat multiple spaces in commands 2020-04-19 03:24:27 +02:00
Fabian Dill 4f52a8db4c player names should not contain spaces, but in case they do, this makes single-spaces work 2020-04-19 00:14:43 +02:00