Commit graph

50 commits

Author SHA1 Message Date
Stephen Seo 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
Stephen Seo 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
Stephen Seo 8782a731bc Move some backend fns to the shared "state.rs" 2022-03-31 21:02:52 +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 d200a2fd7c Rename deferred_helper.js -> async_js_helper.js 2022-03-15 13:46:35 +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 8fa4093a0d Setup dependencies for connection to backend WIP 2022-03-14 13:18:11 +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 38e7772d4f More AI tweaks 2022-03-10 16:44:01 +09:00
Stephen Seo d8377d280a Tweaks to AI for correctness 2022-03-10 16:39:26 +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 a597b4217a Update front_end/README.md about website 2022-03-09 19:45:11 +09:00
Stephen Seo 0d3d6b2a8d Fix typo 2022-03-09 19:29:00 +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 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
Stephen Seo 21041132c6 Minor fixes/tweaks to Utility AI 2022-03-07 19:50:43 +09:00
Stephen Seo 14d224734f Minor fix to Utility AI code 2022-03-07 17:07:00 +09:00
Stephen Seo 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
Stephen Seo d78c612587 Move "ai/mod.rs" to "ai.rs" (module management) 2022-03-07 14:47:04 +09:00
Stephen Seo 1936e5ce22 Basic impl. of AI (enough completed to use/test) 2022-03-07 14:45:57 +09:00
Stephen Seo ea2625cb48 WIP AI implementation, some fixes/tweaks to AI 2022-03-07 14:35:09 +09:00
Stephen Seo 93af9c234d WIP Utility based AI, some impl. progress 2022-03-07 14:23:39 +09:00
Stephen Seo 872fb87313 Minor formatting fix 2022-03-07 13:15: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 2e58bc1288 Set up API for AI choice of slot on board 2022-03-07 13:12:05 +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
Stephen Seo 6316bd2fdc Removed unnecessary debug logs
Also removed unnecessary feature from web-sys dependency.
2022-03-01 16:09:20 +09:00
Stephen Seo a8e516c535 Added output-text-box, connected front-end items
More work was needed to have separate components of the front-end to
communicate with each other. Also added an output-text-box for
informative messages.
2022-03-01 16:02:59 +09:00
Stephen Seo a756f0b4b2 Have SharedState use an array of Rc's
Having each array element be an Rc<Cell<BoardState>> enables sharing
Rc's with the Slot subelement.
2022-03-01 11:05:56 +09:00
Stephen Seo 32a007cf37 Minor fix to front-end 2022-02-28 16:55:07 +09:00
Stephen Seo dd59bdb5f3 "cargo clippy" (linter) fixes 2022-02-28 16:53:13 +09:00
Stephen Seo 0bedc34ac3 "cargo fmt" on front-end code 2022-02-28 16:50:00 +09:00
Stephen Seo cd9f7446a4 Impl basic MVP of front-end
(MVP is Minimum Viable Product.)
Enough is implemented to view a 7x8 board and click on the tiles in the
board to change their states.
2022-02-28 16:45:33 +09:00
Stephen Seo a5ec28bbb1 Add front_end skeleton project 2022-02-28 13:49:40 +09:00