Commit graph

303 commits

Author SHA1 Message Date
Eric House
694953c820 add support for trays with up to 9 tiles 2021-07-16 12:15:46 -07:00
Eric House
8f83a390f1 a bit o' cleanup 2021-06-30 11:47:26 -07:00
Eric House
64ff2e5f69 Merge branch 'android_branch' into wasm 2021-03-27 10:27:14 -07:00
Eric House
561c5c9eb1 cleanup 2021-03-22 10:43:34 -07:00
Eric House
e86626d7be don't crash if remote doesn't support chat 2021-03-19 14:30:17 -07:00
Eric House
b0cc6dd744 clear name on delete; remove logging 2021-03-19 14:29:48 -07:00
Eric House
5fa44e54fa remove unneeded .h file 2021-03-19 12:50:23 -07:00
Eric House
f9e1deabfc don't include dict tiles/values in initial server msg
There's code on all platforms to force user to have dict prior to
opening a game or responding to an invitation. "Empty" dict play hasn't
made sense in a long time.
2021-03-19 12:50:19 -07:00
Eric House
ceec6e7468 fix crash verifying first tray can yield a move
Had never needed an engine for a remote player before. So create one on
demand and nuke after use.
2021-01-18 16:55:20 -08:00
Eric House
d41d5c700f don't let first player have unplayable rack 2021-01-09 20:39:33 -08:00
Eric House
623f3ad145 inform when client's game complete too
Board needs to know when to dismiss the waiting-for-host alert. A
similiar need host-side was handled from common/; do same for client
side.
2020-11-28 17:57:33 -08:00
Eric House
00588f50f3 show an cannot-play-yet alert on guest side too 2020-11-28 13:55:36 -08:00
Eric House
f3bb0c99a9 invite alert changes
Create new class that owns the alert. Let it decide whether to post,
remove, etc. Seems to work, but I've removed some of the "reinvite"
options I'm not sure were helpful anyway. To be considered...
2020-11-20 18:07:19 -08:00
Eric House
736c9f3503 harvest players on open; save and make available
Got as far as having gtk client display list of previously harvested
known players to be invited. Their addresses, or at least mqtt ids are
saved. Next is to actually invite one.
2020-09-26 09:48:35 -07:00
Eric House
5998132d4b fix standalone hang introduced by 15f95b52a 2020-08-27 19:47:10 -07:00
Eric House
15f95b52a9 hack to recover from stalled by-room-name games 2020-08-26 13:04:02 -07:00
Eric House
b0f7176b6c fix relay game failure to change roles
If a configured-as-host game joined an existing game the relay would
make it a guest. The android util_ callback for that change was only
implemented in BoardDelegate and so the change was dropped unless the
game was open/visible. Because comms recorded the change, though, the
callback would never be called again and so the game never learned to
behave as a guest and never registered: permanent failure to join game!
Implemented with a new server state so initClientConnection can be
called from server_do() instead of inside comms while processing an
incoming packet.
2020-08-25 14:53:33 -07:00
Eric House
15fde8044f make server_initClientConnection() make its own stream 2020-08-25 14:53:28 -07:00
Eric House
d10d2597d4 add logging; cleanup
I'm chasing a relay problem that's hard to repro and need more info when
it's happened. (These won't show up in shipping builds.)
2020-08-24 17:02:49 -07:00
Eric House
a7acc37395 adding logging 2020-08-24 12:10:25 -07:00
Eric House
0f61a6d9f4 pass and use mqttid in game-connection code
To avoid inviteless relay games not having an mqtt channel (and so
yielding a crappy experience) pass the mqtt devid when device registers
and when server replies with all-here.
2020-08-23 08:34:12 -07:00
Eric House
bd53824d95 replace assert fail with message rejection
Some relay bug (I think) misroutes or duplicates packets. Don't assert
as that means test scripts fail to finish. Instead drop the
message. Scripts seem to recover ok with this change and I've never seen
the assert on a device so suspect it's test-world only
2020-08-23 08:22:21 -07:00
Eric House
b8f359c3e5 add filtering to wordlist browser
Add a basic regular expression engine to the dictiter, and to the UI add
the ability to filter for "starts with", "contains" and "ends with",
which translate into ANDed RE_*, _*RE_* and _*RE, respectively (with
_ standing for blank/wildcard). The engine's tightly integrated with the
next/prevWord() functions for greatest possible speed, but unless
there's no pattern does slow things down a bit (especially when "ENDS
WITH" is used.) The full engine is not exposed (users can't provide raw
REs), and while the parser will accept nesting (e.g. ([AB]_*[CD]){2,5}
to mean words from 2-5 tiles long starting with A or B and ending with C
or D) the engine can't handle it. Which is why filtering for word length
is handled separately from REs (but also tightly integrated.)

Users can enter strings that don't map to tiles. They now get an
error. It made sense for the error alert to have a "Show tiles"
button, so there's now a dialog listing all the tiles in a wordlist,
something the browser has needed all along.
2020-08-05 09:47:44 -07:00
Eric House
5eef348a6c remove mistaken code (replacing with assert for now) 2020-04-29 12:31:31 -07:00
Eric House
88335d38f2 stop using thread->env mapping for util callbacks 2020-04-26 13:39:21 -07:00
Eric House
eb9ef738e4 remove comms/transport from using thread->env map 2020-04-26 13:39:21 -07:00
Eric House
cfaa6849b2 pass env into dict-related methods
I was getting an occasional crash using a stale env to delete a dict's
resources because the dict was cacheing the env that created it. Dumb!
Using the thread->env mapping stuff worked, but that felt risky and so I
tried just passing it in. It's safe, and involves an amount of change I
can tolerate. So likely going that way.
2020-04-26 13:39:16 -07:00
Eric House
b618c99fa8 just print the upper-case versions of tile faces 2020-04-24 22:21:02 -07:00
Eric House
99df8806c3 wrap test-only feature in new compile-time flag 2020-04-24 13:33:40 -07:00
Eric House
29dbeebc94 fix assert with reporting no bad words
Several changes toward not allowing bad things to happen
while waiting for a confirmation from the host
2020-04-22 21:28:27 -07:00
Eric House
9d04b97ec8 add option to have robot words reversed
With reject-phonies set this will trigger the reject path.
Also init CommonPrefs in jni land since its makePhonyPct, left unitialized,
causes the robot to deliberately reverse every turn, firing an assertion that the
robot's moves are legal.
2020-04-22 21:26:55 -07:00
Eric House
5a28a7fc27 fix gtk games connecting to relay/each other
I broke gtk back in February making curses changes
2020-04-22 11:38:48 -07:00
Eric House
c0f074c1bf support new phony to block words not in dict
Currently detects the same as tiles not in a line and calls out to a new
util method that's currently parameter-less. On Android the option only
appears in d variants.
2020-04-19 17:31:31 -07:00
Eric House
ddb01d8930 refactor: struct ptr replaces a bunch of params 2020-04-19 10:44:57 -07:00
Eric House
ac376c5dd9 set turn to -1 while waiting for phonies check
When a guest sends a move to the server it's not the next player's turn
until the server checks the move and rejects or accepts it. It was
possible still to manipulate the board, playing new tiles, and even to
attempt to commit them. And if the move came back rejected, the bogus
committed one would be that was cleared. Bad. So I'm just setting the
turn to -1, which disables board etc., and letting nextTurn() assigne it
after the confirmation comes back.
2020-04-19 08:57:54 -07:00
Eric House
3a0294044e fix crashes when actual bad words sent
Same as before, needed to explicitly set the state back to
XWSTATE_INTURN after doing the work the special state required.
2020-04-18 07:31:03 -07:00
Eric House
72cb12f383 fix crash anytime you used PHONIES_DISALLOW
Yikes. I used to assert, in nextTurn(), that you were in the right
state. On release builds that went away, and you were moved into the
right state regardless. The bug happened when I changed that to exit
nextTurn() without changing the state, meaning that for PHONIES_DISALLOW
the host filled up its message queue trying to communicate that the
latest move was ok, never getting out of the state that required sending
that message. The fix is simply to change the state after sending and,
guest-side, after receiving, that message.
2020-04-18 06:14:29 -07:00
Eric House
87802150d5 fix logging macro to allow a single argument 2020-04-10 07:12:56 -07:00
Eric House
0a696cf203 cleanup 2020-04-10 07:12:56 -07:00
Eric House
387d88bdde fix assertions when duplicateMode on
Hadn't tested in a while and fixing undo problems added some invalid
assumptions.
2020-04-10 07:12:56 -07:00
Eric House
ac6373afa7 fix crash when chat message is too long
Len byte was limited to 255, but would get clipped (masked with 0xFF)
then all the string data would get written. So on receipt, the clipped
length was taken to be that of the string data, with the rest of the
string to be interpreted as something else. An array index, in this
case.
2020-04-10 07:12:56 -07:00
Eric House
c1597cc941 recover from corrupt chat player index
This should never happen, but it did and I want to stop local crashes to
investigate.
2020-04-10 07:12:56 -07:00
Eric House
cd0cf0c3f2 tweaks to logging 2020-03-24 15:59:33 -07:00
Eric House
5611d17849 fix so games don't stall after undo
With these changes the test script no longer produces games that don't
finish. I think they are recovering from the problems produced by one
device doing an undo while another is making a move, or other problems
produced by undo being allowed to happen on any device at any time, but
haven't analyzed the games beyond the test script's verifying that they
all finish with a Winner after all tiles are consumed.
2020-03-19 16:53:44 -07:00
Eric House
dbb897826e tweak logging 2020-03-14 19:33:58 -07:00
katianderic
b1f7b13e78 toward fixing stalls when undo used
There are still some stalls turning up when running the test script,
especially with more than two players in a game, but but it'll be
easier to do the final debugging off my pathetic travel-only
chromebook. And things are already much better. :-)
2020-03-14 14:47:26 -07:00
katianderic
1a082f7f15 let move stack determine whose turn it is
When something goes wrong with a move (typically because of undo), the
move stack and server's idea of whose turn it is get out of
sync. Since it being my turn means it's up to me to put the next move
on the stack, let the stack own "next turn". (Can probably eventually
get rid of the ServerCtxt variable that tracks it.)
2020-03-14 13:44:56 -07:00
katianderic
126172220f changes to fix curses app test script
especially on the 'sms' side it was broken. Now Android's broken for sure.
2020-03-14 13:43:43 -07:00
Eric House
6b41628fbf dup: fix to call informMove(); make strings localizable
Was relying incorrectly on showRobotScores, which is FALSE on linux by default.
2020-02-05 22:03:12 -08:00
Eric House
dd0ad8f479 fix linux side to compile without DEBUG on 2020-02-02 15:29:14 -08:00