Commit graph

47 commits

Author SHA1 Message Date
Stephen Seo b2ea79a7f7 Impl conditionally update front-end board
When the front-end polls the back-end for the game-state, the back-end includes
a "date_updated" String in the JSON. If the String is the same as in the
front-end, then no updates are needed, but if they are not the same, then the
front-end will update the board. Because the front-end polls the back-end's
board state approximately every second, this should make the front-end more
efficient.
2022-04-30 16:44:48 +09:00
Stephen Seo b4eaba09c5 Refactorings/Fixes related to emoting 2022-04-29 19:21:59 +09:00
Stephen Seo 105cd880f2 Impl sending/receiving emotes 2022-04-29 18:30:41 +09:00
Stephen Seo f799bae530 front-end: Minor refactorings fixes 2022-04-29 12:12:01 +09:00
Stephen Seo b158e7347e front-end: Minor refactorings 2022-04-29 11:37:15 +09:00
Stephen Seo e6152331b0 front-end: minor refactoring 2022-04-29 11:23:03 +09:00
Stephen Seo e77d25996d front-end: fix repeated disconnects on close
When the front-end connects to the back-end, it creates a callback that
sends a disconnect message with the received ID on "pagehide" and
"beforeunload" events. The previous implementation did not "undo" these
callbacks when the game was reset and a new ID was received. This fix
prevents the front-end from resending disconnect messages with
previously received IDs on browser window/tab close.
2022-04-29 11:08:54 +09:00
Stephen Seo 174875b88b back-end/front-end: Rust clippy fixes/refactorings 2022-04-27 16:51:57 +09:00
Stephen Seo 059d0608b6 Impl match players via phrase
Front-end now has option to input phrase on game start.
Fixed back-end accepting empty strings (will treat empty strings as if
no phrase was given).
2022-04-27 12:47:45 +09:00
Stephen Seo e060d94186 front-end: Minor fix related to reset button 2022-04-25 15:19:25 +09:00
Stephen Seo b26c9ff6d1 front-end: Impl Reset button 2022-04-25 15:02:18 +09:00
Stephen Seo 2aa4200835 Fix not "disconnecting" (hopefully on mobile too)
Sometimes the player would not disconnect from the Network Multiplayer
session on the back-end. Seems to work on PC browsers, not so well with
moblie browsers. This commit hopefully fixes this for mobile browsers.
2022-04-08 12:41:20 +09:00
Stephen Seo 70eb1ca121 Fix not "disconnecting" on refresh (hopefully) 2022-04-08 12:17:15 +09:00
Stephen Seo ee8187cabb Fix not "disconnecting" on page close/refresh
Hopefully this works this time.
2022-04-08 12:01:15 +09:00
Stephen Seo 284f294c6d Fix not "disconnecting" on refresh 2022-04-08 11:55:31 +09:00
Stephen Seo 392fc5e7f0 Fix whitespace in edited classes, try fix unload
The method to send the disconnect on page close was changed, but it is
still uncertain if it works correctly.
2022-04-08 11:42:18 +09:00
Stephen Seo 74ca3fd696 Add GPL3 Licence headers to sources 2022-04-06 20:49:54 +09:00
Stephen Seo 91c9eab05e Fix messages being displayed on networked game end 2022-04-06 20:17:27 +09:00
Stephen Seo 59bdcc2a34 Tweak "board to string" and back for better info 2022-04-06 20:09:22 +09:00
Stephen Seo 567cec9500 Minor tweaks (and cargo fmt got aggressive) 2022-04-06 19:38:59 +09:00
Stephen Seo 89b9bf860b Working multiplayer between frontend backend
WIP Need to set the URL and host the backend on the website.
2022-04-06 18:43:17 +09:00
Stephen Seo 8c84aae173 605.607 WIP! working get-id and disconnect
The frontend "server" and backend server must be served via the same
port/address. This can be done by using nginx as the server, and using
reverse-proxies from nginx to the frontend and backend servers.
2022-04-06 13:39:12 +09:00
Stephen Seo 8712d4cd8b frontend: WIP! request id in progress
Frontend is able to successfully send a Request, but is failing to
get/parse the Response.
2022-04-05 18:16:04 +09:00
Stephen Seo 83a9ab2ea0 frontend: WIP! in progress setting up id request 2022-04-04 18:25:17 +09:00
Stephen Seo e4d4d6e153 Move enum from yew_components mod to state mod
Preparation for symlinking shared code into the backend project.
2022-03-29 14:41:04 +09:00
Stephen Seo 839e9021fa Refactor: Replace calling JS settimeout with Rust
web-sys and js-sys provides ways to use "settimeout" in pure Rust which
is used instead of calling into Javascript to do "settimeout".
2022-03-23 16:56:25 +09:00
Stephen Seo ebf0cb5bb8 Impl async delay on AI choice
This commit is also a stepping-stone towards handling http requests
which will require deferred callbacks on Yew Components. By figuring
out how to delay callbacks in this commit, it should be easier to
figure out how to handle http requests that may require a deferred
callback.
2022-03-15 13:16:09 +09:00
Stephen Seo 414740b7ce Reorder code to print winning move
Previously, the winning move was not printed at the bottom info_text.
2022-03-10 18:16:30 +09:00
Stephen Seo 92f91672fa Fix infinite loop bug, refactorings/fixes 2022-03-10 17:01:34 +09:00
Stephen Seo 89a12623b4 Incorporate game AI into game
Can select from three difficulties, and the AI makes their move when it
is their turn. AI probably still needs some tweaking..
2022-03-10 16:17:16 +09:00
Stephen Seo e35870b240 Impl placed token indicator, fixes/refactorings 2022-03-10 15:43:03 +09:00
Stephen Seo 7e9718a743 Refactorings and linter fixes 2022-03-09 18:14:01 +09:00
Stephen Seo 76e6d3be52 Impl buttons indicator that won the game 2022-03-09 18:10:13 +09:00
Stephen Seo b902b1c7b4 Impl use of win/draw check, fixes
Also added unit tests for win/draw checks.
2022-03-09 17:29:53 +09:00
Stephen Seo 5e2c5b6d41 Minor refactoring
Use "From<>" instead of "Into<>" for MainMenuMessage to GameState.
2022-03-07 13:14:57 +09:00
Stephen Seo 130cc42d86 Impl main menu
Only "LocalMultiplayer" can be chosen for the game-mode since neither
AI nor Networked-Multiplayer has been implemented yet.
2022-03-04 16:22:30 +09:00
Stephen Seo 079bf6229f Impl convenience functions, refactoring 2022-03-03 18:01:46 +09:00
Stephen Seo 462dec9ea1 Remove NodeRef for getter, improve turn indicator
All NodeRefs have been removed in favor of "getElementById".

Turn indicator is now much more obvious to see.
2022-03-03 17:36:51 +09:00
Stephen Seo 52b841d98a Replace slot "ref" with "id" 2022-03-03 14:08:35 +09:00
Stephen Seo 5390e4f9cf Minor impl: add default messages to info_texts 2022-03-02 19:22:36 +09:00
Stephen Seo 2fb5a18636 Minor refactoring
Changed the "Msg" type of "Wrapper" from "String" to "WrapperMsg".
2022-03-02 19:19:50 +09:00
Stephen Seo 3b4d8b3483 Impl additional info text box, drop logic
Can place tokens, and not place tokens where there already is a token.

Additional info text box added to the side of the board.

More information to the UI regarding placed tokens.
2022-03-02 17:51:14 +09:00
Stephen Seo 4c8e330c05 Fix comment typo 2022-03-02 16:27:19 +09:00
Stephen Seo 8838dbae69 Cleanup and fixes
Remove state::MessageBus in favor of String messages sent to Wrapper
from Slot.

Update Slot state from inside Wrapper::update such that changes should
be immediately visible per Slot (moved code from Wrapper::rendered,
fixing updates not being immediately visble).
2022-03-02 16:25:01 +09:00
Stephen Seo 7e82a6e787 Minor fix to usage of html element for info_text 2022-03-02 15:47:43 +09:00
Stephen Seo 45e2c88745 Reverse info_text vertically
info_text's latest messages now appear at the top instead of at the
bottom.
2022-03-02 15:38:24 +09:00
Stephen Seo 15c7dc7654 Reorganize front-end source into modules 2022-03-02 15:18:21 +09:00