Commit graph

11739 commits

Author SHA1 Message Date
Eric House
5eef348a6c remove mistaken code (replacing with assert for now) 2020-04-29 12:31:31 -07:00
Eric House
fb2fcf15cc tmp fix for Hungarian: remove duplicate words
Find-prefix feature in current code crashes on Hungarian because it
allows duplicates (words that occur spelled with the same letters but
different tile combinations.) Modify Makefile to exclude those (as it
does for all other multi-letter-tile languages). And to pull the git
source of the wordlist on demand.
2020-04-29 12:29:26 -07:00
Jeannette L
ca9e4e741e
Translated using Weblate (French)
Currently translated at 90.4% (758 of 838 strings)
2020-04-29 21:11:18 +02:00
Jeannette L
8fc143d919
Translated using Weblate (German)
Currently translated at 91.1% (764 of 838 strings)
2020-04-29 21:11:18 +02:00
Eric House
7efd084d35 don't assert in race condition loss 2020-04-29 10:54:19 -07:00
Eric House
0e0615f5d2 fix another likely race condition
Use an ArrayList rather than an array, though that the size of the array
changed mid-calc suggests there could be other problems later. We'll see.
2020-04-29 10:44:31 -07:00
Eric House
8fb21002ad word around some race condition to avoid crash
Reported by Play Store user; can't reproduce but this should fix it.
2020-04-29 10:37:42 -07:00
Eric House
1969b1137e turn off thread->env mapping for DEBUG too (for now)
I'm getting crashes and don't want to think about it. It may be time to
remove this, though it's needed for logging-storage to work from jni.
To be revisited....
2020-04-29 10:31:37 -07:00
Eric House
e34da24393 revert wordlist changes
There are bugs there still to resolve and I need to ship. Will return
once they're fixed.
2020-04-29 10:15:58 -07:00
Eric House
0078e58535 cleanup around jni wrapping and checking
Separated the refcounting and ptr-as-long wrapping aspects of GamePtr
into a superclass that others might later inherit from. Cleaned up
dict_iter entrypoints, and added sanity checks to both structs so I'll
quickly notice if I get the ptr management wrong.
2020-04-28 20:13:59 -07:00
Eric House
9aaeee19b1 remove unused (and confusing) fields 2020-04-28 15:34:29 -07:00
Eric House
8097a6ba0b fix not indicating when no results 2020-04-28 15:24:32 -07:00
Eric House
e7c96290ea name change only
It was confusing using dict_ as the prefix for two "classes"
2020-04-28 15:24:22 -07:00
Eric House
b2bc4e34cf do wordlist lookups using tiles not chars
Fixing a problem with languages (like Hungarian) where it's legal to use
a two-letter tile or two single-letter tiles to play the same word. When
words are seen, or searched for, as char-arrays, there are
duplicates. Current code crashes, but there's also risk the user gets
unexpected behavior. Crash is fixed, and foundation laid for better UX,
by doing all searches for tile arrays. If a search string translates to
more than one tile array the user must choose. For that choice to make
sense it's now possible to translate tile[] to char[] with a delimiter
between the tile strings.
2020-04-28 13:29:12 -07:00
Eric House
f8aa204842 another changelog addition 2020-04-26 15:42:28 -07:00
Eric House
182b8e0489 fix compilation where DEBUG not set 2020-04-26 13:49:54 -07:00
Eric House
9fa23af6e0 retain thread->env mapping in DEBUG builds only
I'm keeping it AND asserting at every possible location that the env
passed all the way in is the same as what the mapping produces. If in
months I haven't seen a single crash then I can evaluate which way of
passing the env around is better. (It'd be code size vs. performance,
as the passing of env is noticably faster. Code size could be fixed by
turning 'XWEnv xwe,' into a macro that goes away on some builds.)
2020-04-26 13:39:21 -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
2343c34a44 remove more use of thread->env mapping 2020-04-26 13:39:21 -07:00
Eric House
b7b7da795a remove use of thread->env mapper for drawing 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
72cf605792 update changelog 2020-04-24 23:42:27 -07:00
Eric House
b618c99fa8 just print the upper-case versions of tile faces 2020-04-24 22:21:02 -07:00
Eric House
a35cc760f2 get rid of the stupid '->' in game submenu title 2020-04-24 22:17:39 -07:00
Eric House
4e1018d7d2 reflect log-storage state in what menus are available
It'd debug-build-only, but I like knowing what's going on.
2020-04-24 21:57:32 -07:00
Eric House
267a24619a don't require .xwd's extension to be omitted for file to be found! 2020-04-24 21:36:16 -07:00
Eric House
1c0348dbf1 add option to print a delimiter between tiles
For Hungarian, there are "duplicate" words because e.g. the string CS
can be spelled with two tiles or one. If a delimiter is printed at tile
boundaries the duplication goes away.
2020-04-24 21:14:20 -07:00
Eric House
adadbd8647 make symlink relative
Useless if it specifies my machine :-)
2020-04-24 20:09:08 -07:00
Eric House
cbf81c64bd track and pass all words when phonies==BLOCKED 2020-04-24 14:58:17 -07:00
Eric House
cc4776d29d Populate an actual wordlist for Hungarian
Add Makefile filters to create a wordlist with about 42K words derived
from a github project (thanks to pointers from an informant. :-) Per
him, and contrary to how Catalan does it, double-letter-tile words
also appear in single-letter variants if the tiles allow.
2020-04-24 13:44:55 -07:00
Eric House
ebc6c4629d make language names localizable (and add Hungarian) 2020-04-24 13:36:01 -07:00
Eric House
99df8806c3 wrap test-only feature in new compile-time flag 2020-04-24 13:33:40 -07:00
Eric House
3ee6f95a16 update changelog 2020-04-24 13:13:49 -07:00
Eric House
5786151e76 Merge branch 'android_branch' into android_translate 2020-04-24 13:07:34 -07:00
Eric House
951c0c00de fix malformed format specifier 2020-04-24 13:04:32 -07:00
Eric House
83a5d32ed0 check for null 2020-04-24 12:58:02 -07:00
Eric House
f51030186f fix non-debug build warnings 2020-04-24 08:54:57 -07:00
Eric House
e8a4c6e39a don't run duplicate games by default
Duplicate games get lots of crashes when mixed with phonies code. Will
need to fix that before enabling duplicate mode. In general there are
lots of assertion failures mixing trades and undos and phonies and
running dozens of games at once. I don't think that's new so will ship
now and fix later.
2020-04-24 08:38:31 -07:00
Eric House
70479710bc changelog for new release 2020-04-24 07:40:25 -07:00
Eric House
cc28562061 files to create empty Hungarian wordlist 2020-04-24 06:34:30 -07:00
Eric House
d4e71caed1 fix warning 2020-04-24 06:34:30 -07:00
Eric House
abc34f623f add Hungarian to display wordlist 2020-04-24 06:34:30 -07:00
Adnan1091
0ac68548b6
Translated using Weblate (Turkish)
Currently translated at 2.0% (17 of 825 strings)
2020-04-24 11:11:15 +02:00
Eric House
2204d951a7 don't crash dumping empty wordlists 2020-04-23 22:10:25 -07:00
Eric House
f35136099d don't crash when wordlist provides no bitmap 2020-04-23 22:01:07 -07:00
Eric House
d01fd5de1c inval score when face for blank chosen
If I'm displaying real-time whether the score is legal, I need to recalc
it after the user tells me what tile a blank is standing in for.
2020-04-22 21:28:27 -07:00
Eric House
e8c48e792a fix tile picker dialog
I wasn't exiting dialogs correctly. Probably broken since the switch to gtk3.
2020-04-22 21:28:27 -07:00
Eric House
4720ede1d7 fix so curses app can invite two players on one device
Turns out the host, when inviting a remote device, needs to know how
many players are on it (since more than one is supported and the script
currently generates that case.) So pass to --server devices an array,
one per remote -- but don't bother when all entries are "1";
2020-04-22 21:28:27 -07:00
Eric House
e68e972396 send NLI in stream format, not as raw bytes
Bad programmer. And because the raw bytes form was so large it always
caused the fake sms stuff to send immediately rather than waiting for a
timer to expire -- which never happened when run by the test script. So
I'm not allowing any timer for invitation-sends only.

(Another problem is that there's no mechanism in the xplat code to retry
invitation sends. That needs fixing.)
2020-04-22 21:28:27 -07:00
Eric House
da0916fdd1 Fix including empty messages.
They're only there when somebody is trying to force an immediate send.
Also, add a bunch of logging of the contents of message arrays being
returned
2020-04-22 21:28:27 -07:00
Eric House
5db0345ffd add util for logging NetLaunchInfo contents 2020-04-22 21:28:27 -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
0dc39b5d85 clear pending move before applying phonies rejection
If slow network traffic has given a guest time to move tiles to the
board while the host decides its last move must be rejected, those tiles
must be removed before the rejected turn can be undone.
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
410bc00d2e add test for being in background 2020-04-22 11:44:46 -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
055eceffba got back to singleTask
Having intents launch second instances of GameList on top of open games
is sucking.
2020-04-20 14:37:39 -07:00
Eric House
fe9eb9ae7c test for null back from refusal to load quarantined game 2020-04-20 12:19:04 -07:00
Eric House
54efffa635 pass the wordlist name too 2020-04-20 09:34:14 -07:00
Eric House
10f509ea1f pass and display the blocked word 2020-04-19 22:27:14 -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
988facccd1 refactor: make vtable population test xplatform 2020-04-19 12:56:11 -07:00
Eric House
ddb01d8930 refactor: struct ptr replaces a bunch of params 2020-04-19 10:44:57 -07:00
Eric House
f0444c5c1e make player edit dialog less ugly 2020-04-19 08:57:54 -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
56b1990207 another changelog tweak 2020-04-18 17:06:40 -07:00
Eric House
d2fcbb5f9d update changelog 2020-04-18 14:51:53 -07:00
Eric House
b94ba0fd96 add debug-only menuitem for marking a game corrupt 2020-04-18 14:43:46 -07:00
Eric House
5fce6d8e26 add delete option for suspect-corrupt files 2020-04-18 14:35:36 -07:00
Eric House
8c50bb1895 Avoid opening games that have crashed.
On each open, increment a counter. And if we're able to close without a
crash intervening, decrement. Once we're trying to open with a non-0
counter we have a bad game. Open only after warning the user.
2020-04-18 13:36:21 -07:00
Eric House
c39bede5c1 up version strings 2020-04-18 10:09:16 -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
b82975179b remove mistaken assert
It's ok to fail to open a game, as will happen e.g. when a message
arrives for a game that was recently deleted.
2020-04-18 07:08:00 -07:00
Eric House
2efc82f4e0 add --phonies arg so this doesn't happen again 2020-04-18 06:41:21 -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
9f92bce880 name exported file based on FLAVOR 2020-04-17 20:29:47 -07:00
Eric House
b8ba5a98c1 remove too-frequent logging 2020-04-17 18:49:20 -07:00
Eric House
5d2f84acd8 move log-related menuitems into a submenu 2020-04-17 18:49:20 -07:00
Eric House
0e5cc9f2b9 log pid and tid roughly same as logcat does 2020-04-17 18:49:20 -07:00
Eric House
6560394478 part two: add threadID and support multiple threads
Looks like it's enough to just use a mutex so threads block until it's
their turn to send logs to java.
2020-04-17 18:49:20 -07:00
Eric House
cfa9b73833 first cut at persisting logged messages
Works, with support for writing them to file. BUT does not handle
messages coming in from multiple threads at once so drops a lot of them.
2020-04-17 18:49:20 -07:00
Eric House
36bf92e8e5 fix misspelled column type INTEGER
I have no idea how this worked or how old. Might require a new DB
version? Needs testing.
2020-04-17 18:49:20 -07:00
Eric House
94b00b1c7c fix mis-formatting causing crash 2020-04-17 18:49:20 -07:00
Eric House
ad69438607 move the two allow-hints settings back together 2020-04-17 18:49:20 -07:00
Eric House
ab07c1c466 show bonus-square-held
Again, so I can see what's going on. Use timeout so doesn't force
lifting the mouse, closer to what happens on Android with Toasts.
2020-04-17 07:06:31 -07:00
Eric House
388fc4f871 don't offer to display empty list of words 2020-04-17 06:52:36 -07:00
Eric House
5f7bb30307 fix crash: don't offer to commit an illegal move! 2020-04-16 22:54:46 -07:00
Eric House
18711c1dd3 show gtk dialog with lookup-words
That way I can at least see it's working.
2020-04-16 22:54:05 -07:00
Eric House
91e6e50480 stop broken upgrade early-launch case
Wasn't checking for existance of script and so got and exception
deleting what didn't exist. Instead I define nonexistance as being too
early.
2020-04-16 22:18:17 -07:00
Eric House
22f62d53e0 add DB versioning for linux 2020-04-16 22:18:13 -07:00
Eric House
b51e3d8d1e remove unused jni declaration 2020-04-15 19:59:03 -07:00
Eric House
c3b1423c36 add (unused) method to copy apk to Downloads/ 2020-04-11 21:18:20 -07:00
Eric House
9fd4bb2a11 enable relayid-invites for non-tagged release builds
Too useful for testing
2020-04-11 19:54:02 -07:00
Eric House
29ed46e12b fix so upgrade of release builds works 2020-04-11 19:23:20 -07:00
Eric House
ca6a0868c9 show last-move as an alert rather than a toast
it gets lost the other way.
2020-04-11 15:51:58 -07:00
Eric House
c5f1d2bf3b release lock when BoardDelegate paused
The lock was leaking when sometimes the OS would call onStop() without
isFinishing() being true, then never use the fragment again. And never
call onDestroy(). Releasing the lock in onStop and regetting it in
onResume seems to fix, but this needs some testing and time.
2020-04-11 15:04:02 -07:00
Eric House
fc30ba5f40 Merge branch 'for-156-release' into android_branch 2020-04-11 12:59:04 -07:00
Eric House
3d5db1d48f update changelog 2020-04-11 12:30:28 -07:00
Eric House
6455c8f688 remove mistaken '+' from layout file 2020-04-11 12:19:55 -07:00
Eric House
40479b6fe1 fix failure to collapse
The problem appears to be that the new <vector/> .xml drawable has a
greater height for purposes of layout. Specifying dimensions seems to be
the way to go, though devices may vary.
2020-04-11 12:13:58 -07:00
Eric House
67759c883a show pending name in scoreboard
when remote hasn't arrived, show same string in scoreboard as in games
list rather than the local player's default name -- duh.
2020-04-11 12:10:01 -07:00
Eric House
f5808e0514 up release constants so can install 2020-04-11 12:08:03 -07:00
Eric House
effbc3ef00 fix crash creating light-colored arrow
Changing it to a VectorDrawable meant it crashed code that assumed
otherwise. Fix by removing the assumption.
2020-04-11 12:05:27 -07:00
Eric House
b81bd46645 remove assertion when message mis-delivered
I don't know why, but in my tests the relay seems to be delivering
messages to the wrong device. The linux device detects this. It used to
assert, but now just drops the message. If this is happening on Android
it might be why I'm seeing crashes...
2020-04-11 11:44:09 -07:00
Eric House
61a1ddae69 add another change to changelist 2020-04-11 10:56:54 -07:00
Eric House
87e04ec667 default to allowing duplicate invites for DEBUG 2020-04-11 08:37:25 -07:00
Eric House
af4785c09f fix crash creating light-colored arrow
Changing it to a VectorDrawable meant it crashed code that assumed
otherwise. Fix by removing the assumption.
2020-04-11 07:17:22 -07:00
Eric House
e0b2011964 remove unused constant 2020-04-10 07:28:53 -07:00
Eric House
98416d341d up strings for new release 2020-04-10 07:12:56 -07:00
Eric House
43a90cc048 fix failure to collapse
The problem appears to be that the new <vector/> .xml drawable has a
greater height for purposes of layout. Specifying dimensions seems to be
the way to go, though devices may vary.
2020-04-10 07:12:56 -07:00
Eric House
831af47411 change MainActivity's launchMode to "standard"
reverse change in 19fa3fce05 (April 4
2019) making MainActivity singleTask, which caused starting the app to
launch the gamesList screen rather than the game that had been open when
it was moved to background. Now it's "standard," and I have to hope that
doesn't produce new problems. As I wrote back then, we'll see. More
quickly I hope.
2020-04-10 07:12:56 -07:00
Eric House
7073d836e3 specify ABI per-debug/release: no x86 for release
This is as it was before I updated my invocation of NDK recently.
2020-04-10 07:12:56 -07:00
Eric House
87802150d5 fix logging macro to allow a single argument 2020-04-10 07:12:56 -07:00
Eric House
497007a84f show pending name in scoreboard
when remote hasn't arrived, show same string in scoreboard as in games
list rather than the local player's default name -- duh.
2020-04-10 07:12:56 -07:00
Eric House
858d4bd6b7 fix linux build 2020-04-10 07:12:56 -07:00
Eric House
341605001d force display order on ConnTypes 2020-04-10 07:12:56 -07:00
Eric House
ec6e815994 changes generated by AS (moving to androidx) 2020-04-10 07:12:56 -07:00
Eric House
9002be7064 tweak strings 2020-04-10 07:12:56 -07:00
Eric House
c0dd9a4ccc upgrade to latest gradle version
Required redoing how I invoke the NDK. The limititations I had to hack
around before seem fixed, so this is probably better. But there will be
glitches. :-)
2020-04-10 07:12:56 -07:00
Eric House
4e347f2257 tweaks for logging/debuggin 2020-04-10 07:12:56 -07:00
Eric House
0a696cf203 cleanup 2020-04-10 07:12:56 -07:00
Eric House
0f6b1897b7 remove unnecessary types from generics constructors 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
a8a9b25c62 include translations in release notes 2020-04-10 07:12:56 -07:00
Eric House
e8432c3c44 fix app name capitalization 2020-04-10 07:12:56 -07:00
Eric House
916102b088 fix uninstall script 2020-04-10 07:12:56 -07:00
Eric House
d5122843b1 change strings for new release 2020-04-10 07:12:56 -07:00
Eric House
6602e3daae hack: limit chat field length to 255
The common code truncates to 255 *bytes*, not chars, so this isn't even
right, but at least for ascii users it'll make it less likely that
what's typed doesn't all get sent. The right fix is to change the format
to not limit sent str len to 255 bytes. See commit 512a8e1af.
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
Allan Nordhøy
c9b4d76c74
Translated using Weblate (Norwegian Bokmål)
Currently translated at 77.0% (636 of 825 strings)
2020-04-05 06:24:48 +02:00
Allan Nordhøy
0e476bf28f
Translated using Weblate (Norwegian Bokmål)
Currently translated at 76.9% (635 of 825 strings)
2020-04-04 04:38:00 +02:00
Eric House
4c0c57229f cleanup 2020-03-30 18:54:46 -07:00
Eric House
fcfca60514 remove unnecessary types from generics constructors 2020-03-30 18:54:46 -07:00
Eric House
c5fcc952c5 fix assertions when duplicateMode on
Hadn't tested in a while and fixing undo problems added some invalid
assumptions.
2020-03-30 18:54:46 -07:00
Eric House
041ea0ad7c include translations in release notes 2020-03-30 18:48:17 -07:00
Eric House
f13e87d268 fix app name capitalization 2020-03-30 18:41:10 -07:00
Nathan
a084f97863 Translated using Weblate (French)
Currently translated at 91.5% (755 of 825 strings)
2020-03-30 18:41:10 -07:00
Bernard Massot
e7e2fc915e Translated using Weblate (French)
Currently translated at 89.5% (739 of 825 strings)
2020-03-30 18:41:10 -07:00
Eric House
6686e6bf49 fix uninstall script 2020-03-30 12:04:42 -07:00
Nathan
109075e629
Translated using Weblate (French)
Currently translated at 91.5% (755 of 825 strings)
2020-03-30 03:18:49 +02:00
Eric House
8989427f59 change strings for new release 2020-03-26 19:42:01 -07:00
Eric House
5e5da59cbc hack: limit chat field length to 255
The common code truncates to 255 *bytes*, not chars, so this isn't even
right, but at least for ascii users it'll make it less likely that
what's typed doesn't all get sent. The right fix is to change the format
to not limit sent str len to 255 bytes. See commit 512a8e1af.
2020-03-26 18:24:46 -07:00
Eric House
512a8e1afa 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-03-26 18:19:03 -07:00
Bernard Massot
c42de3b146
Translated using Weblate (French)
Currently translated at 89.5% (739 of 825 strings)
2020-03-26 13:46:24 +01:00
Eric House
1f5ff11a9a recover from corrupt chat player index
This should never happen, but it did and I want to stop local crashes to
investigate.
2020-03-25 22:27:01 -07:00
Eric House
d90314b153 fix formatter specifiers in Japanese 2020-03-24 16:50:51 -07:00
Eric House
53bc8ecdb0 Merge branch 'android_branch' into android_translate 2020-03-24 16:27:25 -07:00
Eric House
cd0cf0c3f2 tweaks to logging 2020-03-24 15:59:33 -07:00