Commit graph

1790 commits

Author SHA1 Message Date
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
e8d2c4d600 add channel to nli logging 2022-11-18 11:09:22 -08:00
Eric House
924695d3fb add new stream version that skips relay and allows longer string
And remove some dead code
2022-11-18 11:09:22 -08:00
Eric House
12d8a092d7 move getUsername() to dutils to avoid crash
Being in util meant the default implementation got called, and that
returned a null string: boom.
2022-11-18 11:09:22 -08:00
Eric House
be9d80533e cleanup and add helper functions
Looking toward a time when channelNo's high-order bits ensuring the
right device is receiving messages go away.
2022-11-18 11:09:22 -08:00
Eric House
e960877256 more 2022-11-18 11:09:22 -08:00
Eric House
066232d234 more stuff 2022-11-18 11:09:22 -08:00
Eric House
f2809e6e15 start of getting rid of gameID part of channelNo
Don't seem to need it post-relay, and it complicates things when
invitations are messages too.
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
4cfc781cd7 remove assert (until I figure out why firing) 2022-11-18 11:09:22 -08:00
Eric House
f2b707ed4d add assert to test where param is unnecessary 2022-11-18 11:09:22 -08:00
Eric House
75eaadaddb cleanup -- belongs on main 2022-11-18 11:09:22 -08:00
Eric House
5a5a8e7db8 make games connect after creation from invitation 2022-11-18 11:09:22 -08:00
Eric House
3923a2d9a6 check for duplicate invites; don't create if found
Add dutil proc haveGame() and use it to detect duplicate
invitations. I'm passing, but ignoring on android, the channel, which
means that for now you can't invite yourself and on-device testing
requires having CrossWords and CrossDbg or a second user.
2022-11-18 11:09:22 -08:00
Eric House
980ba68297 fix stuff crashing android 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
8a64d53f61 cleanup 2022-11-18 11:09:22 -08:00
Eric House
6b29ee92e6 tweaks to game_makeRematch 2022-11-18 11:09:22 -08:00
Eric House
b9c6551e8b merge android_branch changes to comms_make
Not tested at all on android
2022-11-18 11:09:22 -08:00
Eric House
d1a9c07adc fix so invites work, at least in simple case 2022-11-18 11:09:22 -08:00
Eric House
10bbab88bf tweak
There's an assertion I need to remove or understand here.
2022-11-18 11:09:22 -08:00
Eric House
98184b9e47 fix to compile and allow invites too late
The curses test scripts keep sending invitations, so don't assert
that's not true.
2022-11-18 11:09:22 -08:00
Eric House
61faf1a730 support comparing SMS addresses too 2022-11-18 11:09:22 -08:00
Eric House
b4e197f8af snapshot: mqtt invites for gtk work via comms
Merge that won't compile, but I want it to start fromp
2022-11-18 11:09:22 -08:00
Eric House
fad2c7b3c1 add assert and a debugging aid 2022-10-06 08:45:03 -07:00
Eric House
5c40f175bb work around old unstarted games where gi only was saved
I think....
2022-10-06 08:45:03 -07:00
Eric House
e55212df9f improve new game creation
There was some confusion around host and self addresses, where they're
created, default values, removing conTypes from defaults that are not
in received host addr, etc. I left in some asserts to help understand
if code that seems wrong but hard to fix is still getting called.
2022-09-14 21:37:44 -07:00
Eric House
ce579213b1 fix asserts 2022-09-06 20:38:56 -07:00
Eric House
674c811a09 pass addresses to game on creation
Current networking, based on invitations rather than a relay that
plays matchmaker, allows host to know its address when a game is
created, and for guest to know its host's address in
addition. Enforcing this makes inviting and rematching in common
code (coming soon) easier. Big change on Android is I used to create a
new game prior to passing it to GameConfigDelegate, but now I have to
wait for user to configure (including choosing how to communicate)
before I can create it.
2022-09-06 18:21:53 -07:00
Eric House
881b9a92ad cleanup 2022-09-06 11:40:09 -07: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
4106765d53 add some consts 2022-08-16 18:28:53 -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
51abc98647 use same variable name throughout 2022-07-08 21:57:42 -07:00
Eric House
882c717add cleanup/fix compiler warning 2022-07-07 10:00:24 -07:00
Eric House
2dfc9129f3 add timestamp to saved msgs, modify mqtt header to include later
I want receiver to know when message was originally created. This adds
timestamp to messages and passes it via send proc. Client needs to
send it where possible. So far, MQTT format can't include it without
change, so I'm adding a new proto version. This change can read the
new version. Once that's well-enough distributed I can start sending
using it. Other transmission types than MQTT are for later.
2022-06-29 12:34:27 -07:00
Eric House
d24099f52b clean up Hex wordlist
Remove it from known set so it can be used to test. Get rid of
filenames having umlaut since that screws up URLs between Android and
nginx (not sure whose fault and not going there now.) Lang name should
be able to have an umlaut, but it gets used for filename for now so
fix later....
2022-06-05 14:38:33 -07:00
Eric House
7e591f39a5 log isoCode 2022-06-05 09:07:06 -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
33b636b458 cleanup around lc code; add to JNI 2022-06-04 14:18:03 -07:00
Eric House
4190926c0a add isoCode to DictInfo, and load it 2022-06-04 14:18:00 -07:00
Eric House
0e665a990e add langName and isoCode to dict struct 2022-05-28 09:00:20 -07:00
Eric House
df1606c8fb use ifdef to remove relay-only params 2022-05-15 12:10:37 -07:00
Eric House
2937aed7e1 log caller/lineno when string in stream too long
I'm seeing it and so want it logged in the future
2022-05-13 18:15:25 -07:00
Eric House
5f4dd46f72 rip out most devid stuff 2022-05-10 20:54:26 -07:00
Eric House
babccc9e21 logf -> logff 2022-05-10 20:54:25 -07:00
Eric House
63b0d7c2fb always clear initial address and add MQTT 2022-05-10 20:54:25 -07:00
Eric House
0eaa71fce6 remove relay from linux client via conditional compile 2022-05-10 20:54:25 -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
98cb3b4930 cleanup 2022-04-22 07:59:50 -07:00
Eric House
ab29dfa6ce cleanup 2022-04-21 13:26:26 -07:00
Eric House
05e2d2bdb9 cleanup 2022-04-20 21:00:51 -07:00
Eric House
1c9fe6745c fix crash with 23x23 (linux only); allow 6 blanks
Portuguese will want six blanks for a 21x21 board, so might as well
not crash in case that becomes a thing.
2022-04-20 13:17:07 -07:00
Eric House
5d6d8c7499 bring in changes to make larger boards work for linux
Includes making tile sets vary with board size, calculated from 15x15
unless present in the wordlist. Likely breaks android.
2022-04-04 10:39:29 +02:00
Eric House
9568e4ab03 move extra counts into header so new dicts backward compatible 2022-04-01 07:51:13 +02:00
Eric House
cdc77eaf68 add board sizes to wordlist format (English only)
Modify language metadata to have possibly different counts of tiles
for different board sizes. Make the necessary changes for loading such
files. Works on linux version at least. Only English will build for
now thanks to changes in info.txt format.
2022-04-01 07:51:13 +02:00
Eric House
4b1795cd5b fix crashes when quad-{word,letter} present 2022-04-01 07:51:13 +02:00
Eric House
d0bda214e6 use the right number of bits to store larger scroll vals 2022-04-01 07:51:13 +02:00
Eric House
70d301f210 use the same bonus pattern for all sizes
Just drop the outer "rings" where size < max
2022-04-01 07:51:13 +02: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
b34190d62d make 21x21 work on Android
Still needs default colors and the bonus square values working for
smaller sizes.
2022-04-01 07:51:13 +02:00
Eric House
cb2d847e6d add bonus squares for 21x21 board (linux only) 2022-04-01 07:51:13 +02:00
Eric House
1c644d7af0 fix wasm build 2022-03-14 07:42:47 +01:00
Eric House
2175600190 use new webapi to fetch mqttid to replace relayid
And drop relay once we have it. Makes perfecting RelayService backoff
less an issue.
2022-02-12 13:27:24 -08:00
Eric House
4bfcf2afb4 deal better with old relay games
Attempting to stop calling the relay, but to let relay-only games finish
and issue invitations. Big changes are that relay is removed from games
if they have viable mqtt connections, and relay timers fire less often,
then eventually stop getting set if there are no active games. Result is
that a relay-only invitation won't likely be received, but there should
be few or none of those now.
2022-02-10 08:28:34 -08:00
Eric House
acc17c2ce2 Don't connect to relay for games with mqtt
I was determining I need to check the relay for messages if I have open
games using it. But they can also use mqtt, and the goal's go stop using
the relay. So only force the connection if the games can only connect
via relay. Once I've confirmed via a study of relevant databases that
all recent relay games are also connecting via mqtt this can ship, and
should stop nearly all relay traffic .
2022-01-27 08:10:40 -08:00
Eric House
d22ffbec3f handle byod download links
Download the thing and offer to open it on success.
2022-01-24 20:48:13 -08: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
d9b1fb4df6 cleanup -- no behavior change 2022-01-10 08:42:41 -08:00
Eric House
8095a0da54 fix uninitialized memory getting treated as a mqtt address
augmentAddrIntrnl() sets the has-mqtt bit in comms->addr but not the
address data (has none). If that address had been loaded from stream
the address bits will be random, not 0, and so get treated as an
address.
2022-01-08 18:55:53 -08:00
Eric House
2e5f6128f2 post new msg message from relay2
This is to have a utility back, but mostly to start playing with being
able to send keepalives to a device that have nothing to do with moves.
2022-01-06 19:07:08 -08:00
Eric House
a8963c952e use variable length ints to store msgID and len 2022-01-04 11:12:58 -08:00
Eric House
759cf12ecf set bingoMin 2022-01-03 20:23:00 -08:00
Eric House
38c80209c4 fix crashes and failure to connect
Seems to be back to working now.
2022-01-03 17:40:23 -08:00
Eric House
a85f5df4e3 another tweak: make version imply format 2021-12-29 07:35:43 -08:00
Eric House
b67ab9e32a refactor, and make msgids variable-length 2021-12-28 20:59:15 -08:00
Eric House
863ef88c22 add varible-length int encoding to streams
And test code that should be removed from linux client at some point.
2021-12-28 18:25:05 -08:00
Eric House
140e1210cc cleanup 2021-12-22 13:01:22 -08:00
Eric House
2b7daf067d shrink the comms header
Sending in 32 bits what can probably fit in 8 -- twice -- is dumb. As is
sending the gameID (as connID) when it's already known. In 2016 I added
a fixed marker, so I can count on all current code sending that. If I
fail to find that, I know the sender is new (current release or better.)
In that case, use 12 bits instead of 32 for two fields, drop the marker
and the connID. Result is that an ACK's size, including MQTT headers,
drops from 28 bytes to 21.
2021-12-21 16:34:04 -08:00
Eric House
0fa43a7394 remove duplicate code 2021-12-16 08:47:12 -08:00
Eric House
14c879a752 fix so ack format is same for DEBUG and RELEASE builds
Was appending garbage to ACKs that, somehow, receiver didn't
mind. Fix. And use the new BEEF format for linux too.
2021-12-15 10:03:09 -08:00
Eric House
79d77410a5 fix failure to send NO_SUCH_GAME over NBS
Wasn't sending zero-length messages, which this one is. Needs testing,
because there must have been a reason for that test.
2021-08-31 10:44:39 -07:00
Eric House
ea1c8125f8 use 16 bits to represent selected tiles
fixes selection of 9th tray tile during trade
2021-08-25 07:24:38 -07:00
Eric House
80f0e35755 allow trade when 7 tiles left, not 9 2021-08-24 21:24:17 -07:00
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
e667291da5 show invitee name where possible
When I've invited a Known Player, use that player's name in parens in
scoreboard and games list elem/summary until a remote device connects
(usually in response to an invitation) and provides an actual player
name. Makes it much easier to tell one pending game from another. And
doesn't really work (yet) where there's more than one remote player in
a game.
2021-05-30 13:31:33 -07:00
Eric House
be698069a4 cleanup of recent changes 2021-05-14 11:34:15 -07:00
Eric House
daf5894d79 call new web api to ack mqtt messages
This is toward debugging. Not sure it'll be use to add functionality yet.
2021-04-19 07:04:58 -07:00
Eric House
92200779ac log connType in nli 2021-04-07 21:40:20 -07:00
Eric House
d74161958e cleanup: remove dead and use new code 2021-03-28 20:27:24 -07:00
Eric House
2a20caa6d7 fix breakage caused by merge 2021-03-27 11:00:06 -07:00
Eric House
64ff2e5f69 Merge branch 'android_branch' into wasm 2021-03-27 10:27:14 -07:00
Eric House
7a7a2db6ce enable chat (without history) 2021-03-24 15:58:25 -07:00
Eric House
561c5c9eb1 cleanup 2021-03-22 10:43:34 -07:00
Eric House
e3ba122ca0 fix to compile with XWFEATURE_RELAY undefined
Didn't change the stream format. That will wait!
2021-03-19 18:51:34 -07:00
Eric House
b1532f19a4 move getDict from dutil to util
It's in the context of a game, and we might want info about the game
when notifying the user. For wasm, though, I just download after failure
to open. User has to try again to open the game. Good enough for now
since missing a wordlist shouldn't happen if you're not me changing
where they're stored.
2021-03-19 17:27:17 -07:00
Eric House
87621c3b51 fix compile 2021-03-19 17:26:48 -07:00
Eric House
e86626d7be don't crash if remote doesn't support chat 2021-03-19 14:30:17 -07:00
Eric House
1aa3ddcde0 cleanup and tweaks 2021-03-19 14:30:17 -07:00
Eric House
585f55c040 use notifications and other tweaks 2021-03-19 14:29:49 -07:00
Eric House
bf88c000b7 fix mempool tracking bug 2021-03-19 14:29:49 -07:00
Eric House
f3b76da8e1 add more info to game "buttons"
Toward a games-list substitute. New game_summarize method will get
fleshed out and eventually replace what's in jni?
2021-03-19 14:29:48 -07:00
Eric House
b0cc6dd744 clear name on delete; remove logging 2021-03-19 14:29:48 -07:00
Eric House
829242c9bb fix to deal with failed downloads 2021-03-19 14:29:48 -07:00
Eric House
52b1300d90 cleanup; remove dead code 2021-03-19 14:29:48 -07:00
Eric House
970c2f6f9a make android compile/run with wasm changes 2021-03-19 14:29:20 -07:00
Eric House
34aee3d7d0 add remaining langs to code-to-lang table 2021-03-19 14:29:20 -07:00
Eric House
f0d8a71deb split dict faces using js so utf8 chars are ok
As with java, the platform knows utf-8 better than vanilla C, so use a
JS inlined function to split a binary stream into its "face" components.
2021-03-19 14:29:20 -07:00
Eric House
567c3dbf9e show mempool stats (DEBUG builds) 2021-03-19 14:27:04 -07:00
Eric House
4937d13273 use indexeddb for storage 2021-03-19 14:27:04 -07:00
Eric House
2a6931fdcf add and start using indexeddb via emscripten APIs
Replace a couple of load/store actions with new APIs that do so
asynchronously (using indexeddb underneath, via emscripten APIs.)
Required restructuring how app starts. More changes to come. The idea is
to replace wordlist storage: this'll keep 'em smaller and not require
conversion to string.
2021-03-19 14:27:04 -07:00
Eric House
d5e7dc4c97 game from a downloaded wordlist works!!!! 2021-03-19 14:27:04 -07:00
Eric House
afc3ff156e make game ask for dicts when needed
It's awkward for platform code to create a dictionary prior to opening a
game whose data contains the information about what dict to open. So add
a dutil method to fetch a dict, and call it from inside game opening
code. Makes linux code better at least.
2021-03-19 14:27:04 -07:00
Eric House
7924c046d6 fix linux compile 2021-03-19 14:27:04 -07:00
Eric House
06b530c443 add notion of index to storage
I'm heading toward being able to know what all the games are by how
they're stored in a xplatform way. This is a start. Adding a second key
to storage, and looking at grouping everything where one key or the
other matches.
2021-03-19 14:27:04 -07:00
Eric House
61be81cf1a invite known players 2021-03-19 14:27:04 -07:00
Eric House
534e245048 change load-from-storage to not require free() 2021-03-19 14:27:04 -07:00
Eric House
41cd3d8f39 open game to receive message 2021-03-19 14:27:04 -07:00
Eric House
23cb7bb85d unsigned->signed to fix drawing garbage in empty tiles 2021-03-19 14:27:04 -07:00
Eric House
74109ce172 fix to send after connect 2021-03-19 14:27:04 -07:00
Eric House
7dc949fb38 choose font sizes to fit
Make on demand rather than guessing. Only wind up with six or so, so the
linear search is probably ok.
2021-03-19 14:27:04 -07:00
Eric House
96829b5478 fix so release build builds
without MEMDEBUG defined that is
2021-03-19 14:27:04 -07:00
Eric House
880bff747d use js runtime for timers too 2021-03-19 14:26:18 -07:00
Eric House
c57471364f get URL-encoded invitation receipt working 2021-03-19 14:26:18 -07:00
Eric House
4612ca70c7 snapshot: message exchange mostly works 2021-03-19 14:26:18 -07:00
Eric House
e3814bf0eb snapshot: sends message to inviter 2021-03-19 14:26:18 -07:00
Eric House
9bc72d0745 move stream storage into super 2021-03-19 14:26:18 -07:00
Eric House
ec9570ab81 improve drawCell() 2021-03-19 14:26:18 -07:00
Eric House
d620461574 fix so all compile 2021-03-19 14:26:18 -07:00
Eric House
633896292a snapshot: drawing empty board 2021-03-19 14:26:18 -07:00
Eric House
b62ab69799 add missing file 2021-03-19 14:26:18 -07:00
Eric House
d5546b484d cleanup (mostly non-DBG compile errors) 2021-03-19 13:03:39 -07:00
Eric House
3f6f16c2f4 add script to print comms msg exchange details 2021-03-19 12:50:32 -07:00
Eric House
f335ea7ad9 remove or tweak logging 2021-03-19 12:50:28 -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
ca88d9c0bf backout ack change for now 2021-03-12 07:16:28 -08:00
Eric House
f947382f4c in comms, send ack on receipt of duplicate msg 2021-03-11 21:43:26 -08:00