Commit graph

1402 commits

Author SHA1 Message Date
Eric House
3f5b9f5992 get "sms" games going on curses 2020-01-29 20:40:14 -08:00
Eric House
9e09d9cd47 make alt-return like long-tap to get prev score
The hack to pass alt modifier with key might work for others, but for
now it's used in that one place.
2020-01-26 22:12:36 -08:00
Eric House
db26f6baa7 fix keyboard nav not recognizing down-on-rem-text 2020-01-26 20:44:52 -08:00
Eric House
598be04bef make curses app more like the rest
Lots of changes adding a games-list view to the app from which you
create new games, open and delete existing ones, etc. There's still
plenty that's unimplemented, but it's already more useful for testing
and development. Which is the point.
2020-01-24 09:05:16 -08:00
Eric House
9406297c03 transmit sms phone in nli (and hard-code port=1)
This fixes on gtk version being able to invite to an SMS game using
relayID. I don't know why not transmitting port is ok; maybe android
doesn't use the port or gets it some other way, e.g. it's hard-coded for
each variant.
2020-01-09 21:24:38 -08:00
Eric House
cdbf574c0e add new files device{c,h}
I've long wanted common code and state that outlast a single game. The
smsproto stuff is a step in that direction, but this file will be a
place for anything new. Starting, perhaps, with a mapping of deviceID ->
addressInfo (e.g. BT name or SMS number of opponent device) that will
let me stop duplicating that stuff in every game's comms state. We'll
see. It's guarded by a compile-time flag so I can play with in on the
Linux version until ready.
2020-01-08 11:20:51 -08:00
Eric House
1eb3c7e2e0 Write relayID conditionally so we can drop it later 2019-12-30 22:26:07 -08:00
Eric House
8b06cde971 up strings for new release and cleanup 2019-12-28 08:35:49 -08:00
Eric House
29480d2867 use the right variable for array access 2019-12-26 09:29:06 -08:00
Eric House
85fd353829 initialize variable flagged by valgrind 2019-12-26 09:28:58 -08:00
Eric House
0153928bcd support sending invites and moves via NFC
Use low-level NFC, a combination of emulated card and reader mode, to
work around Google's removal of "beaming" support from Android 10. App
emulates a card by declaring support in its AndroidManifest. When a game
is open that has data to send, it goes periodically into read mode. If
two devices are touched while one is in read mode and the other isn't,
they handshake and open a connection that should last until they're
separated. The devices loop, sending messages back and forth with or
without data (as available.)
2019-12-23 08:45:55 -08:00
Eric House
47d4d51876 pull in stream changes from dup branch
No impact now, but I want to change the game stream format to add
deviceID somewhere and that won't merge with these other changes.
2019-12-22 23:19:01 -08:00
Eric House
2a54f6f176 cleanup: make linux more like android
Wasn't using the game_receiveMessage() utility
2019-12-14 10:55:05 -08:00
Eric House
c7ebe6e80e add debug-only pending-msg count to connstatus display
I'm bringing this in from another branch because it'll be useful for
debugging bluetooth problems.
2019-12-10 14:42:54 -08:00
Eric House
ee9f3c36f8 fix crash opening older games
I'd forgotten that merely adding a new type changed the game's binary format.
2019-11-30 18:43:28 -08:00
Eric House
496ef73da2 cleanup and remove one bad assertion 2019-11-27 11:47:46 -08:00
Eric House
ced26e8e37 remove release-build-only warning 2019-11-27 08:44:09 -08:00
Eric House
7eaa466f78 add ability to send moves via NFC
You can now play an entire game via NFC. There's no UI though: big
question is how to make the feature "discoverable."
2019-11-23 10:53:51 -08:00
Eric House
8da3c5fc68 add comms_getPending(), and refactor to implement 2019-11-18 09:26:46 -08:00
Eric House
c69ec52502 add comms stats to conn status display (DEBUG only) 2019-11-05 08:30:38 -08:00
Eric House
a35f0f7339 fix stall when sending chat
Oops. Old code doesn't mark chat messages as successfully processed.
2019-11-05 08:30:15 -08:00
Eric House
da7f84d683 fix log_hex format alignment 2019-11-03 11:24:23 +00:00
Eric House
37ac29e65e always log hash failure 2019-11-03 09:34:18 +00:00
Eric House
685c8879c3 don't consider message received until it's processed
I think I'm seeing a bug where msg <n> is received, I record that I'm
now looking for msg <n+1>, fail to process <n> (perhaps because some
resource is temporarily unavailable?), and am now in a state where I
won't accept <n> when it's resent. This fixes this by only recording <n>
received after processing code has accepted it.
2019-11-03 08:35:56 +00:00
Eric House
96ee5bec8c start adding logging specific to comms' windowing
(Hi from Santiago)
2019-11-01 07:22:56 -07:00
Eric House
f12531e40b let cells be taller than wide too (take 2) 2019-09-10 16:40:50 +03:00
Eric House
0b61a8bfb7 assert that valid message is handled
I suspect that messages are being dropped (in server) after being
recorded (in comms), causing the game to stall forever. So add an
assertion that it's not happening. Haven't seen it yet in a few hundred
games, but it'll be nice to be more confident.
2019-08-29 23:10:42 +03:00
Eric House
2a54c9ed20 fix Slovak makefile for new wordlist 2019-08-19 07:49:23 +03:00
Eric House
f1ee8564cb fix to compile with release flags 2019-06-29 16:44:38 -07:00
Eric House
ea0b176b2a debug-build-only macros to find proto-based crashes
When a stream reader and writer are out of sync it often shows up as
trying to read off the end of the stream (firing an assert.) It's useful
to know where that's coming from on android where there's usually no
stack trace in the jin world. So pass __func__ in using macros, and log
before asserting. Crude but quick and already useful.
2019-06-28 21:22:45 -07:00
Eric House
25cce2c7f3 add timer to gtk's new-game dialog 2019-06-24 09:20:34 -07:00
Eric House
30fd27aa53 change engine to optionally look at pending tiles
option not used ... yet
2019-05-26 17:59:00 -07:00
Eric House
012ebe26f7 differentiate betweeen PENDING and RECENT tiles
Should not show the new you-can-lookup-uncommitted-words hint for
already-played words, so needed to be able to tell difference between
the two. Now you can -- and on the gtk side I draw them differently
because I can.
2019-04-09 09:51:04 -07:00
Eric House
fec0124f8c allow long-tap lookup of pending words too
When a word's been formed as part of the current turn, but not yet
committed, allow long-tap to trigger an offer to look it up online same
as for already-committed words. Allows checking the legality of
potential plays AND figuring WTF the hint feature just suggested.
2019-04-05 11:54:58 -07:00
Eric House
0251ff0b44 use mutex to synchronize access to smsproto apis
I'm seeing my simultaneous access assert fail, so might as well break
fix it the foolproof way. It's background threads only that are calling
this stuff on Android so blocking them shouldn't hurt.
2019-04-02 16:08:08 -07:00
Eric House
8a620533e5 fix multi-message aspect of smsproto
passes --run-sms-test now, and works on Android occasionally combining messages.
2019-03-21 18:49:19 -07:00
Eric House
21b0815923 make msgNo reflect srcID, not channelNo
It's more useful if it's per-device unique within a game. (Just used for
debugging now, so no impact on anything.)
2019-03-18 10:55:40 -07:00
Eric House
21debf7af6 add missing consts 2019-03-11 10:32:22 -07:00
Eric House
2744649e48 one less malloc 2019-03-09 12:12:47 -08:00
Eric House
d914706ef8 cleanup 2019-03-08 21:32:52 -08:00
Eric House
20cd99f73b add debug-only checking for thread safety
Lots of threads call the smsproto code now so the existing check was
failing. Replace it with one that ensures that only one thread at a time
is running the code. Debug-builds only.
2019-02-27 07:13:38 -08:00
Eric House
d1881e7fc4 logging toward tracking a rare assertion failure 2019-02-26 14:33:18 -08:00
Eric House
1e0db1fca7 fix defines and compile that then broke 2019-02-22 17:55:09 -08:00
Eric House
e6b59ea11d add debug-only option for invitee players to be robots
It's useful when testing to have the remote device play without human
interaction. So add an option, and UI to trigger it, for the players
created remotely in response to an invitation to be robots. There are
guards in place to catch the feature slipping into a release build.
2019-02-07 08:17:54 -08:00
Eric House
f5c9962b66 tweak/reduce logging 2019-02-06 19:36:17 -08:00
Eric House
bf2ab49c20 remove some logging 2019-02-05 09:37:39 -08:00
Eric House
bdf1bd3b84 fix problems with RelayService
Darned thing was dropping packets, failing to connect games built in
response to invitations, and otherwise misbehaving. First was due to not
resheduling when exited with outbound packets in queue; second to not
overriding relayNoConnProc() (due to signature change.) Though it still
happens occasionally.... Also added timestamps to track how long it
takes a packet to be sent and ACK'd.
2019-02-04 13:28:05 -08:00
Eric House
15a2897112 Revert "toward compiling with gcc8"
This reverts commit d293517e7c.
2019-01-29 09:05:54 -08:00
Eric House
d293517e7c toward compiling with gcc8
My VSIZE is no longer legal, and apparently there's no workaround (no
way to safely figure the length of an array whose size is known at
compile time.) To avoid the risk of duplicating little constants, added
macros that define length in a way a new VSIZE can pick it up. Couldn't
make that work for struct field arrays, however, so there I'm using
constants.
2019-01-28 17:24:53 -08:00
Eric House
db641c4664 log gameSeed; generate on linux too
I'm seeing a rare case where a game connectes to relay specifying a room
and somehow gets both slots, having provided different gameSeeds the two
times. This means an opponent won't connect, the room being full in that
game. I can't reproduce, so am logging seed changes better and switching
linux client to leave seed generation to comms as Android does.
2019-01-08 08:16:50 -08:00