* Introduce 'Hint Priority' concept
* fix error when sorting hints while not connected
* fix 'found' -> 'status' kivy stuff
* remove extraneous warning
this warning fired if you clicked to select or toggle priority of any hint, as you weren't clicking on the header...
* skip scanning individual header widgets when not clicking on the header
* update hints on disconnection
* minor cleanup
* minor fixes/cleanup
* fix: hints not updating properly for receiving player
* update re: review
* 'type() is' -> 'isinstance()'
* cleanup, re: Jouramie's review
* Change 'priority' to 'status', add 'Unspecified' and 'Avoid' statuses, update colors
* cleanup
* move dicts out of functions
* fix: new hints being returned when hint already exists
* fix: show `Found` properly when hinting already-found hints
* import `Hint` and `HintStatus` directly from `NetUtils`
* Default any hinted `Trap` item to be classified as `Avoid` by default
* add some sanity checks
* re: Vi's feedback
* move dict out of function
* Update kvui.py
* remove unneeded dismiss message
* allow lclick to drop hint status dropdown
* underline hint statuses to indicate clickability
* only underline clickable statuses
* Update kvui.py
* Update kvui.py
---------
Co-authored-by: Silvris <58583688+Silvris@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Launcher "Text Client" --connect archipelago.gg:38281
should work, it doesn't, this fixes that
* more explicit handling of expected values
* removing launcher updates meaning this pr cannot stand alone but will not have merge issues later
* add parser failure when an invalid url is found
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* adds handling for the `--` cli arg by having launcher capture, ignore, and pass through all of the values after it, while only processing (and validating) the values before it
updates text client and its components to allow for args to be passed through, captured in run_as_textclient, and used in parse_args if present
* Update worlds/LauncherComponents.py
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* explicitly using default args for parse_args when launched directly
* revert manual arg parsing by request
* Update CommonClient.py
* Update LauncherComponents.py
* :)
---------
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* moves the title name in CommonContext.run_gui into a parameter defaulted to the normal default so others using it don't have to rewrite everything
* Change to using a GameManager attribute instead of a default param
* Update CommonClient.py
treble suggestion 1
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* Update CommonClient.py
treble suggestion 2
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
* Update CommonClient.py
treble suggestion 3
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
* Use make_gui() instead of a property to push kivy importing back to lazy loading regardless of gui_enabled status
* cleanup
* almost forgot to type it
* change make_gui to be a class so clients can subclass it
* clean up code readability
---------
Co-authored-by: Aaron Wagener <mmmcheese158@gmail.com>
Co-authored-by: Doug Hoskisson <beauxq@users.noreply.github.com>
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* Core: have webhost slot name links go through the launcher so that components can use them
* fix query handling, remove debug prints, and change mousover text for new behavior
* remove a missed debug and unused function
* filter room id to suuid since that's what everything else uses
* pass args to common client correctly
* add GUI to select which client to open
* remove args parsing and "require" components to parse it themselves
* support for messenger since it was basically already done
* use "proper" args argparsing and clean up uri handling
* use a timer and auto launch text client if no component is found
* change the timer to be a bit more appealing. also found a bug lmao
* don't hold 5 hostage and capitalize URI ig
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* makes the kivy connect button do the same username forgetting that /connect does to fix an issue where losing connection would make you unable to connect to a different server
* extract duplicate code
* per request, adds handling on any disconnect to forget the saved password as to not leak it to other servers
---------
Co-authored-by: NewSoupVi <57900059+NewSoupVi@users.noreply.github.com>
* client: Added command history access with up/down and command echo in common client
* client: Changed command echo colour to orange
* client: removed star import from typing
* client: updated code style to match style guideline
* client: adjusted ordering of calling parent constructor in command prompt input constructor
* client: Fixed issues identified by beauxq in PR; fixed some typing issues
* client: PR comments; replaced command history list with deque
* Core: typing for async_start
* CommonClient: add a framework for clients to subscribe to data storage key notifications
* Core: update version to 0.4.2
* lufia2ac: coop support
* Factorio: move Client into world folder
* Factorio: declare Client as Client Component
* FactorioClient: use centralized launch_subprocess
* TextClient: make always available
* Clients: use certifi for wss
On Windows, the local cert store might be outdated and refuse connection to some servers.
* Clients: lazily create ssl_context
* notify clients of their amount of hint points on initial connection and when hinting
* send in connect packet instead of sending a RoomUpdate on connect
* send hint_points update in `on_new_hint`
* add to connected packet docs
* hint_points isn't a new variable on RoomUpdate now
* note roomupdate can contain connected members
* add the hint point stuff to commonclient
* only show hint points when relevant and default to 0
* Revert "note roomupdate can contain connected members"
* remove hint_points from roomupdate args list and condense explanation of possible packet args
* updates from phar's review
* Small tweak to wording in RoomUpdate
---------
Co-authored-by: Fabian Dill <Berserker66@users.noreply.github.com>
Co-authored-by: Phar <zach@alliware.com>
* Protocol: Improve machine-readability of prints
* Factorio: Make use of new PrintJSON fields for echo detection.
* Protocol: Add message field to chat prints.
* CommonClient & SNIClient: Fixes for reconnecting.
- CommonClient: Allow manual reconnect by typing /connect.
- CommonClient: Don't prompt to reconnect if there is nothing to reconnect to.
- CommonClient: Hide the connection loss modal popup when attempting to connect again.
- CommonClient & SNIClient: Cancel auto-reconnect tasks when the user intervenes.
* (Fix imports for linting.)
* CommonClient: Focus text field when requesting input.
* CommonClient: Store and prefill last server address.
* CommonClient: Focus and select portion of server address upon start.
* CommonClient: Don't allow editing of address while connected.
* CommonClient: Don't make pressing Enter in the address bar disconnect you.
* CommonClient: Use TextInput.text_validate_unfocus over jank workaround.
* CommonClient: Fixed hang when closing after failed handshake.
* CommonClient: Made scrollbar wider and interactable.