aboutsummaryrefslogtreecommitdiff
path: root/windows.c (follow)
Commit message (Collapse)AuthorAge
* After much thought, I've decided that `Restart' on r is not aSimon Tatham2005-05-17
| | | | | | | | particularly useful keypress, particularly given how easy it is to confuse it with `Redo'. So both r and ^R are now Redo, and Restart is relegated to being a menu-only option. [originally from svn r5796]
* The game IDs for Net (and Netslide) have always been random seedsSimon Tatham2005-05-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | rather than literal grid descriptions, which has always faintly annoyed me because it makes it impossible to type in a grid from another source. However, Gareth pointed out that short random-seed game descriptions are useful, because you can read one out to someone else without having to master the technology of cross- machine cut and paste, or you can have two people enter the same random seed simultaneously in order to race against each other to complete the same puzzle. So both types of game ID seem to have their uses. Therefore, here's a reorganisation of the whole game ID concept. There are now two types of game ID: one has a parameter string then a hash then a piece of arbitrary random seed text, and the other has a parameter string then a colon then a literal game description. For most games, the latter is identical to the game IDs that were previously valid; for Net and Netslide, old game IDs must be translated into new ones by turning the colon into a hash, and there's a new descriptive game ID format. Random seed IDs are not guaranteed to be portable between software versions (this is a major reason why I added version reporting yesterday). Descriptive game IDs have a longer lifespan. As an added bonus, I've removed the sections of documentation dealing with game parameter encodings not shown in the game ID (Rectangles expansion factor, Solo symmetry and difficulty settings etc), because _all_ parameters must be specified in a random seed ID and therefore users can easily find out the appropriate parameter string for any settings they have configured. [originally from svn r5788]
* Introduce a versioning mechanism, and an `About' box in all frontSimon Tatham2005-05-15
| | | | | | | | | ends. Versioning will be done solely by Subversion revision number, since development on these puzzles is very incremental and gradual and there don't tend to be obvious points to place numbered releases. [originally from svn r5781]
* I've had two complaints that Solo ought to recognise the numericSimon Tatham2005-05-12
| | | | | | | | | | | | | | | | keypad. The reason it doesn't is because front ends were carefully translating the numeric keypad into 8-way directional keys for the benefit of Cube. Therefore, a policy change: - front ends process the numeric keypad by sending MOD_NUM_KEYPAD | '3' and similar - front ends running on a platform with Num Lock SHOULD do this _irrespective_ of the state of Num Lock - back ends do whatever they see fit with numeric keypad keys. Result: the numeric keypad now works in Solo, and also works in OS X Cube (which it previously didn't because I forgot to implement that bit of the front end!). [originally from svn r5774]
* Fix line endings when pasting on Windows.Simon Tatham2005-05-02
| | | | [originally from svn r5736]
* Added an automatic `Solve' feature to most games. This is useful forSimon Tatham2005-05-02
| | | | | | | | | | | | | | | | various things: - if you haven't fully understood what a game is about, it gives you an immediate example of a puzzle plus its solution so you can understand it - in some games it's useful to compare your solution with the real one and see where you made a mistake - in the rearrangement games (Fifteen, Sixteen, Twiddle) it's handy to be able to get your hands on a pristine grid quickly so you can practise or experiment with manoeuvres on it - it provides a good way of debugging the games if you think you've encountered an unsolvable grid! [originally from svn r5731]
* Oops; forgot to check in the copy-to-clipboard option for Windows.Simon Tatham2005-05-02
| | | | [originally from svn r5730]
* Remove outdated comment :-)Simon Tatham2005-05-01
| | | | [originally from svn r5722]
* I think Windows fonts look better in bold as well.Simon Tatham2005-05-01
| | | | [originally from svn r5721]
* Simplify clip region handling under Windows, which also makes Solo'sSimon Tatham2005-04-23
| | | | | | | | | | | | | | | | clipping policy work properly. I haven't proved why it didn't work the previous way, but I have a good guess: I think that clip regions are handled by reference. So I saved the old clip region out of the DC, then did an IntersectClipRect, and then selected the old clip region back in again - but the old clip region had never been _de_-selected, because IntersectClipRect didn't change which object was selected but rather it modified-in-place the one that already was selected. So my attempt to restore the old clip region did nothing whatsoever, and thus clipping to two different rectangles during the same draw sequence failed. Now I'm completely destroying the clip region during unclip(), which seems to work better. [originally from svn r5662]
* Oops. Just noticed that the Windows front end completely ignores theSimon Tatham2005-03-15
| | | | | | `colour' parameter in draw_text(). [originally from svn r5507]
* Rather than each game backend file exporting a whole load ofSimon Tatham2005-01-17
| | | | | | | | | | functions and a couple of variables, now each one exports a single structure containing a load of function pointers and said variables. This should make it easy to support platforms on which it's sensible to compile all the puzzles into a single monolithic application. The two existing platforms are still one-binary-per-game. [originally from svn r5126]
* Add a `jumble' key (`J') to Net, which scrambles the positions of all unlockedJacob Nevins2004-12-22
| | | | | | | | | | tiles randomly. (Rachel asked for this; it's been being tested for a good few months now, and Simon didn't care either way, so in it goes :) As part of this, the front end can now be asked to provide a random random seed (IYSWIM). [originally from svn r5019]
* Add grotty casts to prevent negative -> large positive conversion of cursorJacob Nevins2004-12-17
| | | | | | | position in Windows frontend; this showed up as a UI glitch while dragging to the left/top of the window in Rectangles. [originally from svn r5007]
* Added a help file, mostly thanks to Jacob.Simon Tatham2004-08-16
| | | | [originally from svn r4460]
* Now that we have string-encodable game parameters, let's support aSimon Tatham2004-05-20
| | | | | | | command-line argument which is either a set of parameters or a params+seed game ID. [originally from svn r4234]
* Framework alteration: we now support a `game_ui' structure inSimon Tatham2004-05-11
| | | | | | | | | | | | | 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]
* Forgot to initialise the font variables in the Windows frontend structure.Simon Tatham2004-05-04
| | | | [originally from svn r4200]
* Forgot to set up the initial value of checkboxes.Simon Tatham2004-05-04
| | | | [originally from svn r4199]
* GTK and Windows appear to handle timers very differently:Simon Tatham2004-05-03
| | | | | | | | | | | 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]
* The Windows RNG turns out to only give about 16 bits at a time. ThisSimon Tatham2004-05-03
| | | | | | | | | | | | | | | 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]
* Implement selection of game seeds, by reusing the config boxSimon Tatham2004-05-03
| | | | | | | | | 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]
* Game configuration box for Windows, by constructing the dialog boxSimon Tatham2004-05-03
| | | | | | | | | | right from scratch without the slightest reference to any dialog templates (meaning that we get to figure out the layout and _then_ choose the window size). I'm rather pleased with that. Also introduced free_cfg(), which is why this checkin touched gtk.c as well. [originally from svn r4184]
* Added a status bar.Simon Tatham2004-04-29
| | | | [originally from svn r4174]
* Implemented text and clipping primitives in the frontend, and addedSimon Tatham2004-04-29
| | | | | | two new simple games `fifteen' and `sixteen'. [originally from svn r4173]
* Have each game declare a name which is used for window titles etc.Simon Tatham2004-04-28
| | | | [originally from svn r4167]
* Shift-click is equivalent to middle-click. This is mostly forSimon Tatham2004-04-28
| | | | | | | Windows users who may not have a middle button at all, but I've replicated it in GTK to maintain cross-platform consistency. [originally from svn r4166]
* Introduce diagonal movement keys on the numeric keypad, and use themSimon Tatham2004-04-28
| | | | | | | | 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]
* Add a menu bar, in both Windows and GTK. In particular, game modulesSimon Tatham2004-04-28
| | | | | | | | | 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]
* A-_ha_! The Windows Rectangle() call appears to get uppity if askedSimon Tatham2004-04-27
| | | | | | | | | to draw a 1x1 rectangle, presumably on the grounds that that's beneath its dignity and you ought to be using SetPixel() instead. So now I do, and now Net actually looks exactly the same on Windows and GTK. Woo! [originally from svn r4157]
* Most of a Windows front end. Something's not _quite_ right in theSimon Tatham2004-04-27
| | | | | | | GDI - there are blobs in the middle of powered lines in Net. But it's 99% there now. [originally from svn r4156]
* Initial checkin of a portable framework for writing small GUI puzzleSimon Tatham2004-04-25
games. [originally from svn r4138]