Commit graph

63 commits

Author SHA1 Message Date
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
70eb1ca121 Fix not "disconnecting" on refresh (hopefully) 2022-04-08 12:17:15 +09:00
ee8187cabb Fix not "disconnecting" on page close/refresh
Hopefully this works this time.
2022-04-08 12:01:15 +09:00
284f294c6d Fix not "disconnecting" on refresh 2022-04-08 11:55:31 +09:00
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
c9ba80e6a4 Impl "too_many_players" response from back-end
Previous implementation did not respond with the proper JSON response if
there were too many players.
2022-04-08 11:01:33 +09:00
74ca3fd696 Add GPL3 Licence headers to sources 2022-04-06 20:49:54 +09:00
91c9eab05e Fix messages being displayed on networked game end 2022-04-06 20:17:27 +09:00
59bdcc2a34 Tweak "board to string" and back for better info 2022-04-06 20:09:22 +09:00
2e0b29ed70 Add "release" configuration for BACKEND_URL 2022-04-06 19:40:40 +09:00
567cec9500 Minor tweaks (and cargo fmt got aggressive) 2022-04-06 19:38:59 +09:00
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
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
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
83a9ab2ea0 frontend: WIP! in progress setting up id request 2022-04-04 18:25:17 +09:00
c8eb6ab5be Impl turn timeouts, db entry timeouts
AI takes a players turn if they take too long on their turn (currently
set to 25 seconds).
Backend times out player/game entries in database.
2022-04-01 19:52:46 +09:00
0d9e35dd28 Refactorings and bug fixes
Protocol was also updated to match the output from the backend.
Fixed "id" not returning as an integer from the backend.
2022-04-01 17:17:42 +09:00
8782a731bc Move some backend fns to the shared "state.rs" 2022-03-31 21:02:52 +09:00
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
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
d200a2fd7c Rename deferred_helper.js -> async_js_helper.js 2022-03-15 13:46:35 +09:00
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
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
92f91672fa Fix infinite loop bug, refactorings/fixes 2022-03-10 17:01:34 +09:00
38e7772d4f More AI tweaks 2022-03-10 16:44:01 +09:00
d8377d280a Tweaks to AI for correctness 2022-03-10 16:39:26 +09:00
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
e35870b240 Impl placed token indicator, fixes/refactorings 2022-03-10 15:43:03 +09:00
0d3d6b2a8d Fix typo 2022-03-09 19:29:00 +09:00
7e9718a743 Refactorings and linter fixes 2022-03-09 18:14:01 +09:00
76e6d3be52 Impl buttons indicator that won the game 2022-03-09 18:10:13 +09:00
b902b1c7b4 Impl use of win/draw check, fixes
Also added unit tests for win/draw checks.
2022-03-09 17:29:53 +09:00
9e9bb0758c Fix rand not compilable for wasm, impl game logic
"rand" crate was not compilable for wasm-unknown-unknown target, so an
alternative "oorandom" crate was substituted in.

Basic game win/draw detection logic added.
2022-03-09 16:26:14 +09:00
21041132c6 Minor fixes/tweaks to Utility AI 2022-03-07 19:50:43 +09:00
14d224734f Minor fix to Utility AI code 2022-03-07 17:07:00 +09:00
ec9aac8400 Tweak Hard-level AI
Shuffles the utilities-index pairs for the cases where there are
multiple pairs of the same utility value.
2022-03-07 16:59:18 +09:00
d78c612587 Move "ai/mod.rs" to "ai.rs" (module management) 2022-03-07 14:47:04 +09:00
1936e5ce22 Basic impl. of AI (enough completed to use/test) 2022-03-07 14:45:57 +09:00
ea2625cb48 WIP AI implementation, some fixes/tweaks to AI 2022-03-07 14:35:09 +09:00
93af9c234d WIP Utility based AI, some impl. progress 2022-03-07 14:23:39 +09:00
872fb87313 Minor formatting fix 2022-03-07 13:15:53 +09:00
5e2c5b6d41 Minor refactoring
Use "From<>" instead of "Into<>" for MainMenuMessage to GameState.
2022-03-07 13:14:57 +09:00
2e58bc1288 Set up API for AI choice of slot on board 2022-03-07 13:12:05 +09:00
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
079bf6229f Impl convenience functions, refactoring 2022-03-03 18:01:46 +09:00
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
52b841d98a Replace slot "ref" with "id" 2022-03-03 14:08:35 +09:00
5390e4f9cf Minor impl: add default messages to info_texts 2022-03-02 19:22:36 +09:00
2fb5a18636 Minor refactoring
Changed the "Msg" type of "Wrapper" from "String" to "WrapperMsg".
2022-03-02 19:19:50 +09:00
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