Commit graph

352 commits

Author SHA1 Message Date
Eric House
c91865c991 use invite's channelNo for first incoming message
A rare stall resulted when the invitee on channel 2 responded
first. It would get assigned channel 1 and so the invitation on that
channel would get deleted. If it hadn't already reached the mqtt
server it would never be delivered. My fix is to use an invitation's
channel instead IFF its address matches the return address of the
incoming message. I'm not sure what happens if there's somehow a mix
of invited (via rematch) and invited-some-other-way players. None of
this matters for two-device games anyway.
2024-01-04 09:50:24 -08:00
Eric House
9443bf14a4 make it work on android too 2024-01-04 09:50:24 -08:00
Eric House
5794cc43e3 log gameID wherever possible in comms.c and server.c 2024-01-04 09:50:24 -08:00
Eric House
52a1de0463 add fromRematch to existing api to avoid race condition 2024-01-04 09:50:24 -08:00
Eric House
b5de43e3dc fix assertion failure in mixed-version rematch case 2024-01-04 09:50:24 -08:00
Eric House
ffc64bc5dd cleanup/refactor 2024-01-04 09:50:24 -08:00
Eric House
7275569842 fix crash assuming wrong stream version 2024-01-04 09:50:24 -08:00
Eric House
f0ca490b3c fix stuff test script found 2024-01-04 09:50:24 -08:00
Eric House
1181e908dc Add option to choose how rematch-game players will be ordered
When rematching, some users have a convention that e.g. lowest scoring
player in the "parent" game goes first. So allow that, providing the
choice on each rematch until a default has been chosen. Support
changing that default in a new prefs setting.

The place I chose to enforce the order was on the host as invitees are
registering and being assigned slots. But by then there's no longer
any connection to the game that was rematched, e.g. to use its
scores. So during the rematched game creation process I create and
store with the new game the necessary ordering information. For the
3-and-4 device case, it was also necessary to tweak the information
about other guests that the host sends guests (added during earlier
work on rematching.)
2024-01-04 09:50:24 -08:00
Eric House
7b4f9ede41 cleanup: renaming only (server->host) 2024-01-04 09:50:24 -08:00
Eric House
57b78141e9 remove dead (relay) code 2023-12-04 09:31:11 -08:00
Prod User
7f1eec654c fix linux client test to compile and run on Anlinux proot on Android tablet 2023-08-14 08:11:01 -07:00
Eric House
fb04a6ad0a fix server_getOpenChannel()
Only used by gtk for now but meant to replace hardcoded invitation
code everywhere.
2023-03-16 07:44:14 -07:00
Eric House
1083cbd525 improve test script and fix rematching bug it found
Server needs to not rematch if any device has more than one
player (for now, as I'm too lazy to fix this rare condition.) I'm
moving toward having the linux client write status to a unix socket on
exit rather than having the test script parse the log file for
status. GameOver is there now. Tile counts should follow.
2023-03-05 10:23:48 -08:00
Eric House
ac75da2028 fix leak rematching games on 3+ devices 2023-03-04 09:30:58 -08:00
Eric House
32275017a6 implement rematch 2023-02-23 15:51:40 -08:00
Eric House
fd36590e7f fix assertions that assumed multi-device 2023-02-21 17:32:21 -08:00
Eric House
9ca291cf0d enable rematch for 3- and 4-device games
Because only the host/inviter knows the addresses of all the devices
in a game it's hard for guests to rematch (unless it's a 2-device
game, as they know the host's address.) So now, as part of telling
guests the game is ready to play, include the addresses of other
guests. It's usually only 9 bytes per device, and only happens when
more than two devices are in a game.
2023-02-16 21:36:46 -08:00
Eric House
0e14783d3b use negotiated streamVersion to decide what to send via MQTT
No point in sending the old-topic-format MQTT messages to clients that
know about the new one, and in fact it's harmful. Devices in a game
already agree on the stream version to use and communicate it, so pass
that into comms once it's known and from there on to the device code
that builds mqtt messages.
2023-02-09 16:53:18 -08:00
Eric House
d924776a84 make invitation to three-device games work on gtk/linux 2023-02-08 10:28:00 -08:00
Eric House
646e806ae4 get rid of stream_open(), which was a NO-OP 2023-02-04 07:44:57 -08:00
Eric House
4a57b76817 cleanup: pass xwe with closeProc rather than to destroy
It's only needed when there's a close proc, and that's rare.
2023-02-03 22:00:47 -08:00
Eric House
c820abb514 remove unused params 2023-02-03 10:18:54 -08:00
Eric House
c620f9bc75 Don't allow comms types that aren't in selfAddress
(Likely crashes on android)
2023-01-15 16:18:26 -08:00
Eric House
4caf660c1c cleanup 2023-01-04 14:13:53 -08:00
Eric House
16ced1dd49 fix linux compile; log gameID as %X everywhere 2022-12-30 16:15:03 -08:00
Eric House
53e1a68d6d track, and offer to display, comms-sent invites like others
I'm only keeping the most recent since they're sent every time a game
opens, app launches, etc.
2022-12-10 22:17:14 -08:00
Eric House
a2806f1c3f show known player name of missing host
This is for debugging use only for now, but it's useful when a host
seems non-responsive to know which it is.
2022-12-05 21:21:46 -08:00
Eric House
f2b034d710 recognize in-comms invites when opening incomplete game
Android offers to invite when it thinks no invitations have been
sent. Now it knows about those buried in comms.
2022-11-18 11:09:22 -08:00
Eric House
6f57665da2 pass number of pending comms invites into informMissing() 2022-11-18 11:09:22 -08:00
Eric House
9a7946de36 fix stall showing up in curses test app
Duplicate messages early on, which happened only in the test script
but could have anywhere, broke connectivity. So don't kill address
records when a duplicate shows up. Dupes only escape message ID
checking early (before channel is established). I used to remove
address records when a message was rejected, but don't understand why
so removed that, though asserts show it's not mattering except for
those early messages.
2022-11-18 11:09:22 -08:00
Eric House
7587653541 fix memory leaks; get curses using new invite resp. code 2022-11-18 11:09:22 -08:00
Eric House
766554d3f5 snapshot: rematch and invitation handling most work from common
But curses will crash, duplicates and missing dicts aren't handled,
etc.
2022-11-18 11:09:22 -08:00
Eric House
381b014b8b change name for clarity 2022-09-06 11:40:09 -07:00
Eric House
4996d3fe89 improve comms address tracking (breaks android for now)
Remove legacy relay-inspired logic around comms addressing. Now when a
device creates a game it's required to provide its "self address," and
if it's a client, the address of the host (which it presumably got
through the invitation in response to which the game is being
created.) Then as registration messages come in from clients, the host
gathers their addresses as always.
2022-09-06 11:40:09 -07:00
Eric House
1b9fd67e9f logging cleanup 2022-08-20 10:24:29 -07:00
Eric House
cd9ea8ce3f oops: don't revert the bug-fix change to server.c 2022-08-10 12:13:50 -07:00
Eric House
cb362618e9 revert move-reporting changes
They need more testing before the next release, and are fine except
for duplicate-mode play.
2022-08-10 13:33:18 -05:00
Eric House
0497a456e7 cleanup 2022-08-09 22:39:41 -05:00
Eric House
c00bbf8ef1 simplify move expl tracking; don't show for dup-mode robots
Removed a boolean that seemed unnecessary. Stopped showing
move-explanations for robots in duplicate mode. They were being shown
too early thanks to bad logic, but I don't think there's any call for
them at all. A robot's move is only interesting if it's the one that
wins the turn.
2022-08-04 16:03:07 -07:00
Eric House
818868bdb2 remove undo as an option for duplicate mode games 2022-08-03 19:54:53 -07:00
Eric House
e6d516ca1d remove assertion firing in dup mode
The assertion's clearly blocking testing, but I'm not sure it's not an
error for two move explanations to want to co-exist. For now they're
concatenated.
2022-08-01 13:05:19 -07:00
Eric House
10a2c5e4b7 fix assertion failure in dupe mode 2022-07-30 19:50:09 -07:00
Eric House
882c717add cleanup/fix compiler warning 2022-07-07 10:00:24 -07:00
Eric House
ba132bb23d Replace LangCode with ISOCode, linux and common side
This will break the Android build, but it's the order in which I
work...
2022-06-05 09:07:01 -07:00
Eric House
da23bfe23b add debug pref to not add mqtt to all games
I want it for testing that stuff like NBS (data SMS) works for more
than connecting. MQTT works so well nothing ever gets used once it's
there.
2022-05-09 15:10:15 -07:00
Eric House
372d722b58 make number of tiles proportional to board size
Until there's a way to specify specifically for each size, adjusting
from the built-in 15x15 tileset works reasonably well.
2022-04-01 07:51:13 +02:00
Eric House
2d6ce6cfda fix problems with tile picking introduced by 9-tiles
Not sure if these would show up if you're not picking face-up,
but if so they justify a release.
2022-01-20 22:14:13 -08:00
Eric House
5e028281de fix mis-reporting number of tiles traded 2022-01-17 16:31:19 -08:00
Eric House
694953c820 add support for trays with up to 9 tiles 2021-07-16 12:15:46 -07:00