164 Commits

Author SHA1 Message Date
61f08e7634 Now that we have string-encodable game parameters, let's support a
command-line argument which is either a set of parameters or a
params+seed game ID.

[originally from svn r4234]
2004-05-20 08:22:49 +00:00
350683b253 Introduce routines in each game module to encode a set of game
parameters as a string, and decode it again. This is used in
midend.c to prepend the game parameters to the game seed, so that
copying out of the Specific box is sufficient to completely specify
the game you were playing.
Throughout development of these games I have referred to `seed'
internally, and `game ID' externally. Now there's a measurable
difference between them! :-)

[originally from svn r4231]
2004-05-19 11:57:09 +00:00
cdfc740fe4 Don't rush move animation to a conclusion on a subsequent keypress
unless there's actual activity happening as a result of the move.
Net animations were tending to get rushed to conclusion by the mouse
button release now that it's being reported to the mid-end.

[originally from svn r4211]
2004-05-11 18:37:20 +00:00
180802b362 Framework alteration: we now support a `game_ui' structure in
addition to the `game_state'. The new structure is intended to
contain ephemeral data pertaining to the game's user interface
rather than the actual game: things stored in the UI structure are
not restored in an Undo, for example.
make_move() is passed the UI to modify as it wishes; it is now
allowed to return the _same_ game_state it was passed, to indicate
that although no move has been made there has been a UI operation
requiring a redraw.

[originally from svn r4207]
2004-05-11 17:44:30 +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
44ff00665b Configuration dialog box, on the GTK front end only as yet.
[originally from svn r4182]
2004-05-01 11:32:12 +00:00
a8c8237bd0 Added a status bar.
[originally from svn r4174]
2004-04-29 19:23:08 +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
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
9867234e70 Further general development. Net is now playable, though
configuration is absent as yet.

[originally from svn r4145]
2004-04-26 17:10:44 +00:00
a87bb05760 General further development. Sketched out the mid-end, added more
GTK code, rudiments of event passing.

[originally from svn r4141]
2004-04-25 20:15:22 +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