17 Commits

Author SHA1 Message Date
ccbf3ca6f1 GTK and Windows appear to handle timers very differently:
specifically, the elapsed time between calls varies much more with
GTK than it does under Windows. Therefore, I now take my own time
readings on every timer call, and this appears to have made the
animations run at closer to the same speed between platforms. Having
done that, I decided some of them were at the _wrong_ speed, and
fiddled with each game's timings as well.

[originally from svn r4189]
2004-05-03 09:43:08 +00:00
aa9a8e8c7e The Windows RNG turns out to only give about 16 bits at a time. This
is (a) pretty feeble, and (b) means that although Net seeds transfer
between platforms and still generate the same game, there's a
suspicious discrepancy in the typical seed _generated_ by each
platform.
I have a better RNG kicking around in this code base already, so
I'll just use it. Each midend has its own random_state, which it
passes to new_game_seed() as required. A handy consequence of this
is that initial seed data is now passed to midend_new(), which means
that new platform implementors are unlikely to forget to seed the
RNG because failure to do so causes a compile error!

[originally from svn r4187]
2004-05-03 09:10:52 +00:00
6e42ddd31b Implement selection of game seeds, by reusing the config box
mechanism I've just invented (the midend handles the standard game
selection configuration). Each game is now required to validate its
own seed data before attempting to base a game on it and potentially
confusing itself.

[originally from svn r4186]
2004-05-03 08:51:31 +00:00
ee17149822 `BOOLEAN' is a term already used by Win32. Bah. Change terminology.
[originally from svn r4183]
2004-05-02 10:43:46 +00:00
44ff00665b Configuration dialog box, on the GTK front end only as yet.
[originally from svn r4182]
2004-05-01 11:32:12 +00:00
2206a1aa25 The cube was being drawn slightly differently on the top and left
rows, because the coordinates were crossing one or other axis at
that point and so the lower coordinate was being rounded up while
the upper one was rounded down. Judicious use of floor() fixes it.

[originally from svn r4179]
2004-05-01 07:32:09 +00:00
17f261018a We were forgetting to count the final move.
[originally from svn r4176]
2004-04-30 10:14:55 +00:00
3cc2c00e69 Incorrect placing of the polyhedron sometimes left it on a blue
square. Oops.

[originally from svn r4175]
2004-04-30 10:11:53 +00:00
a8c8237bd0 Added a status bar.
[originally from svn r4174]
2004-04-29 19:23:08 +00:00
fa7ef572c7 Implemented text and clipping primitives in the frontend, and added
two new simple games `fifteen' and `sixteen'.

[originally from svn r4173]
2004-04-29 18:10:22 +00:00
d396382abd Add a new game concept called a `flash'. This is a graphical effect
taking non-zero time, which is triggered by the making of a move and
is _not_ hurried to its conclusion by the start of the next move (so
the game redraw function is expected to be able to draw it in
parallel with continuing moves). The only thing that prematurely
terminates a flash is the start of a fresh flash. In particular,
this concept is used to display the completion flash in Net, because
at least _my_ playing instincts make me lock every piece I've
unambiguously placed, and hence the last turn move is instantly
followed by a lock move which was previously suppressing the
completion flash.

[originally from svn r4168]
2004-04-28 18:43:50 +00:00
64e6afdeed Have each game declare a name which is used for window titles etc.
[originally from svn r4167]
2004-04-28 17:46:04 +00:00
3b1ec74d73 Fix zillions of MSVC compiler warnings. Sigh.
[originally from svn r4165]
2004-04-28 17:37:13 +00:00
56a59e2e51 Introduce diagonal movement keys on the numeric keypad, and use them
as an alternative control method in Cube. (This was a bit of hassle
in the Windows front end; I also introduced a debugging framework
and made TranslateMessage conditional.)

[originally from svn r4162]
2004-04-28 17:21:57 +00:00
3d8e7585b7 Add a menu bar, in both Windows and GTK. In particular, game modules
are now expected to provide a list of `presets' (game_params plus a
name) which are selectable from the menu. This means I can play
both Octahedron and Cube without recompiling in between :-)
While I'm here, also enabled a Cygwin makefile, which Just Worked.

[originally from svn r4158]
2004-04-28 12:07:15 +00:00
d99e217cfb Implemented Cube, in a sufficiently general way that it also handles
the tetrahedron, octahedron and icosahedron.

[originally from svn r4151]
2004-04-27 17:44:30 +00:00
96dbb537ee Initial checkin of a portable framework for writing small GUI puzzle
games.

[originally from svn r4138]
2004-04-25 14:27:58 +00:00