Commit graph

402 commits

Author SHA1 Message Date
ehouse
e6315e118f enable juggle button after role change 2007-02-06 05:47:20 +00:00
ehouse
6af89b4182 Add assert; don't call comms if has been set to null (fixes device
reset); fix failure to install connCB (removes need to manually resend
messages when client starts up first.)
2007-02-04 17:13:01 +00:00
ehouse
2fe75a19a2 add const to a bunch of char* decls in APIs and variables; no code change 2007-02-03 17:54:20 +00:00
ehouse
916ea4abc2 name change only: Connectedness becomes DeviceRole 2007-02-02 08:34:37 +00:00
ehouse
13429bccd7 When role changes from client, where only local players are shown, to
host or standalone where all are shown, change the number shown
appropriately.  The goal is to make the experience natural,
particularly for the common case where the players aren't changing.
Give up once user manually changes number shown.
2007-02-02 08:15:07 +00:00
ehouse
24a885918d cleanup: only one return per function. 2007-02-02 08:11:14 +00:00
ehouse
c045c6503a cleanup. No change in generated code. 2007-01-27 15:07:02 +00:00
ehouse
61a3e7835f use varargs for LOG_RETURNF macro 2007-01-27 15:04:57 +00:00
ehouse
5349598984 forward declaration stops compiler warning 2007-01-27 15:04:19 +00:00
ehouse
b9e31acf6e check and flip before hiliting cells. Fixes bug with feedback on hint
search on flipped board.
2007-01-23 04:09:26 +00:00
ehouse
17993fea06 Tweak scroll-of-focussed-board inval code so we don't inval the whole
board, which looks crappy.  Instead inval only what was previously a
border row, and pass a new param to draw_vertScrollBoard so the
platform can choose not to scroll cells that will just get overwritten
with different bits.
2007-01-21 22:59:29 +00:00
ehouse
73bc1925fd When scrolling a focussed board, inval everything. Otherwise border
cells scroll into the center drawn as border.
2007-01-21 18:05:25 +00:00
ehouse
3d318b679c Change how flip works, keeping board data like invalFlags and limits
in sync with the board rather than the model and flipping coordinates
only in time to access the model or pass to engine.  With that done,
drawing can skip any rows scrolled off-screen, and the board's
perimeter focus rect can be drawn and invalidated correctly on a
flipped, scrolled screen: zodiac, eventually.
2007-01-21 06:21:12 +00:00
ehouse
c5fe2a7589 Get rid of draw_eraseMiniWindow: just inval what's under it; make use
of CELL_ISCURSOR consistent: when focus not dived all elements have it
set (or only perimeter for board, settable at compile time); get rid
of draw_drawCursor since CELL_ISCURSOR is all that's needed;
2007-01-19 08:20:11 +00:00
ehouse
40832e6ea5 reintroduce board_handleKey 2007-01-18 02:42:37 +00:00
ehouse
313dad4357 Set focusHasDived before invalidating so newly focussed object drawn correctly. 2007-01-16 02:42:58 +00:00
ehouse
c1affa34d1 Fix bugs in recent focus/key changes. 2007-01-12 03:37:30 +00:00
ehouse
6df629c445 on keyDown, look at what keyUp will do and, if nothing, don't handle
the event.  This lets focus transfer work as before there was keyDown.
2007-01-12 03:28:20 +00:00
ehouse
924fa5c12b fix crash when linux is bt server: if no addr provided it's not a duplicate. 2007-01-09 02:43:09 +00:00
ehouse
e90db9776f remove dead code. 2007-01-09 02:38:22 +00:00
ehouse
f3feef27f7 fix problems created by key-nav changes: don't drop hardware scroll
keys, and redraw after key-repeat if either up or down handled.
2007-01-07 05:25:28 +00:00
ehouse
0a4f1d3f7b add board_handleKeyRepeat, and call it from palm and gtk. This lets a
held nav key walk the cursor across the board.
2007-01-07 04:32:29 +00:00
ehouse
4646ac5711 Clean up for non-keyboard and non-keyboard-nav cases. Wince is the
latter: make it compile again.
2007-01-07 01:01:20 +00:00
ehouse
bce76a3d34 Break key handling into keyUp and keyDown, and treat keyDown the same
as penDown.  Idea is to be able to set timers to get bonus square
hints etc. without stylus.  Works, but transitions are rough because
keyDown doesn't know whether keyUp will result in a focus change.
2007-01-06 17:32:08 +00:00
ehouse
c645534b83 Fix so IR-only multi-device build works again. 2007-01-06 16:46:45 +00:00
ehouse
0da7234190 bug fix: clear focusHasDived on pen event along with other focus state 2006-12-20 04:11:17 +00:00
ehouse
0bf123115f Unfocus any board object whenever pen touches board 2006-11-27 01:13:48 +00:00
ehouse
c754d73770 When alt key pressed cursor can move onto occupied squares it normally skips. 2006-11-22 13:49:14 +00:00
ehouse
e86d4764c4 Post-Slovak change, 7 bits required to save face and blank bit. Use 7, but expect the old 6 for previous version streams. 2006-11-19 06:40:56 +00:00
ehouse
74ccc0ed34 When "dived" focus reaches and crosses border of object, return as if
not handled.  This causes the platform to handle the key event itself,
typically by moving the focus to the next top-level object.
2006-11-17 13:41:13 +00:00
ehouse
0d013a0599 Two big changes. Pass focus bit into all or and players when focus
not dived and tray or scoreboard focussed.  This lets platform decide
to display top-level focus via mods to all elements.  Second, when
moving focus to top level from dived, claim not to have handled the
key event (but return true if needs redraw).  This allows platform to
handle shifting focus without requiring callback (which removed.)
2006-11-14 06:46:04 +00:00
ehouse
9aa3759761 Debug-build macros to pass __LINE__ and __FILE__ for logging 2006-11-14 06:40:36 +00:00
ehouse
f1148754ba Exit trade mode silently if user clicks 'D' when it's not his turn.
(Better than refusing because "not your turn".)
2006-11-13 02:01:54 +00:00
ehouse
fefa84abc1 bug: need to OR in inval value rather than replace. 2006-11-12 21:03:15 +00:00
ehouse
a84b519ab7 Break scoreboard code out into a new module. board.o was getting too
big on palm.
2006-11-12 20:09:00 +00:00
ehouse
f7aefbe075 new UNUSED macro for keynav 2006-11-12 15:20:36 +00:00
ehouse
f9dcd1820a Add to draw APIs of individual elements (e.g. board cells) whether
they're focussed so that they can draw that during rather than after
everything else.  On palm, use this to draw focus using the system
selected color rather than with the blue nav rect.  Since a new param
was too much, add new enum type CellFlags and pass as bitvector to
draw APIs.
2006-11-12 14:36:15 +00:00
ehouse
bcac22bf9b Refactor to not return from middle of function. No behavior change. 2006-11-11 22:38:20 +00:00
ehouse
7afafed41d reject initial messages coming in on the same address a second time.
Fixes problem that surfaces when clients are more agressive about
resending early in game.
2006-11-11 22:37:36 +00:00
ehouse
f335da4a9a Fix bug where sign extention on 16-bit processors caused too many bits
set in crosschecks.
2006-11-10 08:08:59 +00:00
ehouse
c91847f56f When moving focus through tray, skip empty space; when through board,
skip cells with tiles permanently played.  Space char raises focus but does
not move it laterally.
2006-11-09 06:05:40 +00:00
ehouse
80adc9fb6b If no arrow visible, use cursor loc as destination when moving tile to tray. 2006-11-08 13:44:34 +00:00
ehouse
6c93fc0a0c board doesn't handle focus-related keys unless it has the focus. 2006-11-08 05:04:44 +00:00
ehouse
46885ab05e remove typo blocking compilation 2006-11-07 13:43:30 +00:00
ehouse
9a00908cdb When internal focus reaches edge of object, move it back up and onto
the next object using a callback to the platform to determine what, if
any, object is next.  Adjust curses platform to cooperate.  Works
well.  Palm is next.
2006-11-07 05:46:44 +00:00
ehouse
005fd92fd4 More progress on one-handed navigation: fix ncurses board clipped to
bottom of tray; add focus-related params to draw*Finished routines
(and simplify to one) so platforms don't have to save from Begin
routines (and stop palm doing that); check version of saved game, and
handle case where older binary tries to open newer version; redraw
Palm tray buttons after focus change to stop focus-rect ghosting; fix
annoying overlap in saved games dialog; palm version goes to a3.
2006-11-05 16:54:18 +00:00
ehouse
b0102f8baa Lots of progress on one-handed navigation: add gadgets to stand in for board
scoreboard and tray on palm; make center drill into the focussed object and
spacebar come back up then move the focus among them.  Integrate with other
focussable objects on main form.  Go from separate drawCursor routines to
same for all three, with cursor only visible when focus is drilled down.
On curses, add a hilite rect routine that can be called after text is laid
down, and use for cursors.
2006-11-03 06:23:54 +00:00
ehouse
02b45a156c debug functions to turn enums and defines into loggable strings 2006-11-03 06:19:27 +00:00
ehouse
6b1fc7e5e4 Fix crash on pre-fiveway palmos where FrmGetFocus always returns -1;
add new preference for whether small value nums are drawn in tiles in
tray.
2006-10-29 17:41:14 +00:00
ehouse
fb23dc11a7 New type XP_TriEnable meant to be used more than just for new games:
controls are hidden, disabled but visible, or enabled.
2006-10-28 13:21:32 +00:00
ehouse
5f6cab4c5f add uninited state so can reload dialog with no assumptions about platform
widget state.
2006-10-23 13:56:43 +00:00
ehouse
ef7ad6f889 make IR the default conn type on Palm, where it's been the only type
until now.
2006-10-15 14:09:17 +00:00
ehouse
0c146fb800 add const to a few formal param declarations 2006-10-15 13:53:17 +00:00
ehouse
ffd8316280 Switch player count string for client in new game case. 2006-10-12 13:55:16 +00:00
ehouse
ba4f91d9e0 remove BEYOND_IR, replacing with XWFEATURE_RELAY and
XWFEATURE_BLUETOOTH.  The goal is to be able to build to support
bluetooth only, or relay/ip only, e.g. for a palm bluetooth beta.
Seems to work.
2006-10-10 01:34:37 +00:00
ehouse
8c112261b0 Don't return from middle of function. 2006-10-07 03:37:40 +00:00
ehouse
a97631b7ca Fix opening games and messages saved by last shipping version on Palm
by checking version and loading new fields conditionally.  (Not yet
tested for current wince version.)
2006-10-05 01:17:03 +00:00
ehouse
bc80eae516 Put relay-only fields into a struct for easier identification. No code change. 2006-10-02 14:26:56 +00:00
ehouse
22ae4209ca Fix longstanding bug removing too few messages from queue on ACK.
Print queue as part of stats.
2006-09-27 01:54:53 +00:00
ehouse
47565a3241 Tweak enable/disable logic to show fields for remote players for the
informational case that are hidden for new game case -- e.g.  name,
which can be read but not set.
2006-09-24 21:10:17 +00:00
ehouse
a7e58126ed Add more consts. 2006-09-24 15:28:15 +00:00
ehouse
12fec52152 bug: even empty strings need to be terminated. 2006-09-23 16:05:41 +00:00
ehouse
402b6c1c6f fix ARM crash loading bt game saved on 68K: specify sizeof array
rather than struct wrapping it.
2006-09-23 16:04:53 +00:00
ehouse
3af93c2d4d What I meant to check in. F***ing emacs. :-) 2006-09-23 15:22:26 +00:00
ehouse
20b2eee560 cleanup and remove logging. 2006-09-23 15:18:44 +00:00
ehouse
f64e3d2d3d On bringup for bluetooth, resend any waiting messages rather than an
empty new one to get the connection started.  This increases the
chances new games will connect without user having to hit resend.
2006-09-23 15:18:01 +00:00
ehouse
f5f715136b When a client registering n players with server, send the first n,
ignoring local flag which nwgamest doesn't set in client case.  When
resetting, destroy any engine allocated: plugs new leak.
2006-09-23 15:15:57 +00:00
ehouse
722f250c0f set crosschecks inline 2006-09-23 15:12:10 +00:00
ehouse
f508fd853f remove over-agressive attempt to detect out-of-order messages that was
breaking IR comms.
2006-09-17 05:06:46 +00:00
ehouse
a7d45aca6c Prune excessive logging 2006-09-17 04:45:19 +00:00
ehouse
f1a00fa1b9 strutils syntax changes. Rough cut at reordering loading in game
info: when the device is a client and is starting a new game, we want
to start presenting only the local players.  So load them first, and
reduce nPlayers down to the count of current local players.  Works
well, but can probably be simplified.
2006-09-15 07:36:51 +00:00
ehouse
fab25fc820 do a better job of rejecting messages that have strayed in from a
different game; strutils syntax changes.
2006-09-15 07:34:39 +00:00
ehouse
e61414933f do a better job of rejecting messages that have strayed in from a different game. 2006-09-15 07:33:59 +00:00
ehouse
5d64862ba6 new strutils macro syntax 2006-09-15 07:32:39 +00:00
ehouse
b5402eabc2 params become const 2006-09-15 07:32:04 +00:00
ehouse
9dd96a58d7 params become const; new macro syntax for strutils 2006-09-15 07:31:24 +00:00
ehouse
d382431922 modify MEM_DEBUG versions of strdup utils to record the __FILE__ and
__LINE__ of callers rather than their own to assist in leak detection.
2006-09-15 07:30:00 +00:00
ehouse
35b3b7132a Make formal param const; add initial value to relay-only field so
asserts don't fail b/c of uninitialized value; don't typedef array:
make array field of struct.
2006-09-14 01:25:40 +00:00
ehouse
5568d8fdca Check state before accepting post-connection messages; and always set
state when completing connection process.
2006-09-10 18:58:10 +00:00
ehouse
10d6394641 use tmp buffer to avoid copying one byte at a time. 2006-09-10 18:53:03 +00:00
ehouse
975226cc4e remove param from util_addrChange; add comms_getIsServer; save bt_addr
as part of comms.
2006-09-08 07:14:24 +00:00
ehouse
41a36b2352 make formal params const where possible 2006-09-02 05:30:51 +00:00
ehouse
4322fd2820 when logging state transitions, don't unless there's a change 2006-09-02 05:29:59 +00:00
ehouse
4cfe07923d fix bug checking crosschecks with more than 32 tiles. 2006-09-02 05:29:13 +00:00
ehouse
9c06582029 bug fix: reset stack data stream before getting length and writing. Assert
so easier to catch similar problems.
2006-09-01 04:32:57 +00:00
ehouse
af7767389c use stream_getSize to detect corrupt (truncated) messages. 2006-08-29 13:18:12 +00:00
ehouse
9d541a7d91 make getSize return diff between what's been written and what's already
been read.
2006-08-29 13:13:43 +00:00
ehouse
7d48f2e430 Put up BT device browser while user is picking connection method
rather than when trying to send for first time, then pass address
through from conns dialog to bt code.
2006-08-26 21:12:10 +00:00
ehouse
9d8e5a4f3e add LOG_HEX 2006-08-26 20:28:48 +00:00
ehouse
3c6405d0d1 First shot at bluetooth support (turned off in Makefile by default).
A full robot vs. robot game now works between two Treos.  Added UI to
choose BT as transport mechanism, and added new send proc to establish
socket connection between host and guest.  Works only for two devices:
no piconet yet.  No error recovery, ability to quit game in middle,
start new game, etc.
2006-08-23 04:44:55 +00:00
ehouse
b99f993760 Fix assert: implicit cast to boolean doesn't work when bit being
tested is outside the low-order byte.
2006-08-22 04:20:40 +00:00
ehouse
f561989644 Set -Wunused-parameter for those versions of gcc that support it, and
deal with the output by removing params where possible and elsewhere
by adding XP_UNUSED macro wrapping __attribute__((unused)).  There
should be NO change in function in spite of the large number of files.
2006-08-16 13:44:44 +00:00
ehouse
c298ecb1f1 optimize for the case where tiles are < 32. Previous imlementation of
64-tiles support increases engine times by ~5%.  This removes that effect.
I can't measure any slowdown vs. pre-change engines.
2006-08-12 01:59:03 +00:00
ehouse
cbddf0c194 Base the number of bytes used to store tiles on the number in the
current dictionary.  This allows us to continue to open games saved
with older code using older dictionaries while still supporting the
new format for up to 64 tiles.  Old versions may crash when opening
games created by new versions, but that's probably ok.
2006-08-10 01:21:31 +00:00
ehouse
e84cb5b8eb increase possible number of unique tiles from 32 to 64 in order to
support Slovak which has 40.  This change is preliminary: it seems to
work for both existing and dicts with >32 chars, but it breaks backwards
compatibility: existing saved games will crash this code.  I think the
fix is to deduce the number of bits per tile from the number in the
dictionary being used, but that's not in yet.
2006-08-09 04:56:34 +00:00
ehouse
7850b9e064 add another const 2006-08-09 04:52:43 +00:00
ehouse
897e50bf42 was being just a bit too cute 2006-08-09 04:49:17 +00:00
ehouse
7c61b21365 make some ptrs const 2006-08-09 04:48:34 +00:00
ehouse
49a709f3db Replace a bunch of doMirror parameters with a single function, called
after a flip, that invalidates y,x for every x,y that's invalid.
2006-07-07 08:27:13 +00:00
ehouse
ef2101f4f8 in juggle, need to adjust rows after swapping to get passwd fields enabled
in sync with passwd checkbox.
2006-07-02 00:34:41 +00:00