58e0d0bc2dNew puzzle from James Harvey: 'Singles', an implementation of Hitori. One infrastructure change in the process: latin.c has acquired a utility function to generate a latin rectangle rather than a full square.
Simon Tatham
2010-01-11 21:21:07 +00:00
771f5446a8Retire the YTRANS and YUNTRANS macros in latin.[ch]. They were introduced to mimic similar macros in solo.c, in case Solo ever moved over to being based on the latin.c solver framework; but even Solo has long since lost those macros, so latin.c has no need to keep them.
Simon Tatham
2010-01-11 20:32:55 +00:00
056465cb03The 3-D graphics in Towers need a corresponding change on the input side: instead of locating a mouse click in whichever base grid square contained the click location, we should check to see if a tower protrudes on to that location from a neighbouring square. That way, a click should reliably activate the tower that was actually drawn under the mouse pointer.
Simon Tatham
2010-01-11 18:41:29 +00:00
67d55dc5f4Oops! Remove evidence of blatant clone-and-hack from Keen. :-)
Simon Tatham
2010-01-11 18:41:28 +00:00
6776b0afbaOops. Uncomment the difficulty exceptions! (Also add another constraint in validate_params.)
Simon Tatham
2010-01-09 17:21:36 +00:00
572a746937New year, new puzzle.
Jacob Nevins
2010-01-08 12:25:44 +00:00
28cb7e1e6cFix formatting.
Jacob Nevins
2010-01-07 20:50:49 +00:00
88b66e1257Crop the Towers icon more sensibly (i.e. at all).
Simon Tatham
2010-01-07 19:09:58 +00:00
7cd075870eUpgrade the graphics in Towers to include a thematically appropriate 3D effect. (I only committed it without so that I could preserve a record of how the code looked before I added it.) The 3D effect can be disabled by setting TOWERS_2D in the environment, should anybody seriously dislike it.
Simon Tatham
2010-01-07 18:42:01 +00:00
ceb12cb080New puzzle, again using the revised latin.c: 'Towers', a clone of a latin-square puzzle which I've seen described by several names but the most common is 'Skyscrapers'.
Simon Tatham
2010-01-07 18:42:00 +00:00
7c3413a2f2Memory leak fix from James H.
Simon Tatham
2010-01-07 18:15:09 +00:00
2500531423Proof that check_errors() is sufficient.
Simon Tatham
2010-01-05 23:40:42 +00:00
dd4c8ceb1fRefer to group elements by letters instead of numbers, in keeping with usual abstract group notation. In puzzles with a clear identity, it's called e.
Simon Tatham
2010-01-05 23:40:41 +00:00
13d7ff6ae5Add a facility in the latin.c solver diagnostics to allow a puzzle to call the digit values by custom names.
Simon Tatham
2010-01-05 23:40:40 +00:00
a7b220ff9aAdd an even more evil (!) game mode, in which it's not made immediately obvious which element of the group is the identity - at least two elements including the identity have their rows and columns completely blanked.
Simon Tatham
2010-01-05 19:52:52 +00:00
66a6a930c5Yikes! Fix a misaimed 'sizeof' which I only got away with because ints and pointers are usually the same size.
Simon Tatham
2010-01-05 18:51:42 +00:00
ed4b163b69A user asked for the < signs in Unequal to be bolder.
Simon Tatham
2010-01-05 18:26:55 +00:00
81c65eeac1Missing piece of code I should have cribbed from Solo: we have to lay out large numbers of pencil marks differently in a square containing a clue.
Simon Tatham
2010-01-05 18:26:44 +00:00
c3c186d687Another 16-bit-cleanliness fix (and for once I spotted it before James!)
Simon Tatham
2010-01-05 18:26:42 +00:00
4dfd8512abMemory leak fix from Tiago Dionizio: whenever we free the midend's collection of game states, we should also free the move strings from which they were constructed.
Simon Tatham
2010-01-04 19:14:35 +00:00
56b421a63216-bit cleanliness patch from James H.
Simon Tatham
2010-01-04 18:55:56 +00:00
441cbbb2e0For my own use in local Windows builds of the 'unfinished' puzzles, add an include directory to the Windows makefile so that source files in subdirectories can find the main headers.
Simon Tatham
2010-01-01 20:06:34 +00:00
79bb9c00b3Couple of missing 'static's.
Simon Tatham
2010-01-01 19:41:59 +00:00
c91471e6c1New puzzle in 'unfinished'. Essentially, Sudoku for group theorists: you are given a partially specified Cayley table of a small finite group, and must fill in all the missing entries using both Sudoku- style deductions (minus the square block constraint) and the group axioms. I've just thrown it together in about five hours by cloning- and-hacking from Keen, as much as anything else to demonstrate that the new latin.c interface really does make it extremely easy to write new Latin square puzzles.
Simon Tatham
2009-12-30 16:53:36 +00:00
b629e34bebFix bug causing array overrun. Only seemed to be showing a symptom on Windows, presumably because the data after the array was harmless elsewhere.
Simon Tatham
2009-12-27 19:18:22 +00:00
514bd502beNew puzzle! 'Keen', a clone of KenKen.
Simon Tatham
2009-12-27 10:01:23 +00:00
a79ab34941Normalise Unequal (and latin.c) so that solver diagnostics start their coordinate from 1 rather than 0, for consistency with Solo. (My geek instincts would rather work from 0, but I've generally found that puzzle users sending me email tend to prefer 1.)
Simon Tatham
2009-12-27 10:01:20 +00:00
3c3368d07fI've never trusted common variables. Take those bare ints out of latin.h and put them in latin.c with 'extern' declarations in the header.
Simon Tatham
2009-12-27 10:01:18 +00:00
9fbb365684Introduce, and implement as usefully as I can in all front ends, a new function in the drawing API which permits the display of text from outside basic ASCII. A fallback mechanism is provided so that puzzles can give a list of strings they'd like to display in order of preference and the system will return the best one it can manage; puzzles are required to cope with ASCII-only front ends.
Simon Tatham
2009-12-27 10:01:16 +00:00
72922b3078Tweak the semantics of dsf_merge() so that the canonical element of any equivalence class is always the element with the smallest index. This is slower (the previous behaviour, suggested by Jonas Koelker, was to choose the new root element to maximise performance), but still more than acceptably fast and more useful.
Simon Tatham
2009-12-27 10:01:11 +00:00
189f833980Refactor latin.c to make it easier to reuse. Instead of client programs having to clone the latin_solver() function and insert their own extra deduction routines, they can now just _call_ latin_solver with enough parameters to let it fit its own deductions into their difficulty framework and call a set of provided function pointers to do user deductions. Modified Unequal to work in the new world, of course.
Simon Tatham
2009-12-27 10:01:10 +00:00
b9c22e5cacNew mode for Unequal, from James H. In this mode, called 'Adjacent', the < and > clues are replaced by bars separating every pair of squares whose contents differ by exactly 1. Unlike standard Unequal, which presents only a subset of the available clues, in Adjacent the clues are _all_ present, so you can deduce from the absence of a bar that the two numbers it would separate are _not_ consecutive.
Simon Tatham
2009-12-27 10:01:09 +00:00
d54b4c4651latin_generate_quick is long gone, so remove it from the header file.
Simon Tatham
2009-12-23 11:34:25 +00:00
2b06c12728Keyboard control for Dominosa (patch largely due to James H, though with considerable meddling from me).
Simon Tatham
2009-12-22 16:47:42 +00:00
2bdabe31cfJonas Koelker points out that the backspace key didn't work in GTK Guess, because Guess expected ^H whereas GTK generated ^?. Other puzzles that use Backspace do it by being prepared to see either, which seems wasteful. Now the midend normalises both into ^H, so front ends can generate whichever they like while puzzles can safely just look for ^H.
Simon Tatham
2009-12-20 10:01:57 +00:00
8628a0630cMinor bug fixes from James Harvey.
Simon Tatham
2009-12-17 18:20:32 +00:00
97477f0916Patches from Frode Austvik to modify the effects of the mouse buttons in several games if STYLUS_BASED is defined: in games where you can set a puzzle element to 'on', 'off' or 'not yet set', when it's hard to mimic a second mouse button, it's better to have the one 'button' cycle between all three states rather than from 'on' back to 'unset'.
Simon Tatham
2009-12-17 18:16:42 +00:00
6d5245d8bfPatch from Frode Austvik to tinker with the GTK interface if compiling gtk.c with STYLUS_BASED defined: most notably, it provides a row of numeric 'keys' made of GTK button widgets for puzzles that want a numeric keypad.
Simon Tatham
2009-12-17 18:12:18 +00:00
84d48aa074Patch from Frode Austvik to permit passing CFLAGS in to the Unix makefile.
Simon Tatham
2009-12-17 17:55:42 +00:00
525370a569Another wording tweak from Helge Kreutzmann.
Jacob Nevins
2009-12-13 12:47:10 +00:00
2ac017b62cFix for the grid generation in the presence of particularly strange grid types.
Simon Tatham
2009-11-16 21:21:00 +00:00
9c95ea2619Add a precautionary pair of initialisations to placate optimisers, and asserts to check that the preinitialised values are never actually used.
Simon Tatham
2009-11-10 19:11:03 +00:00
92bd8da9c4Beat up on Black Box docs, after Debian bug #548472.
Jacob Nevins
2009-11-04 13:19:39 +00:00
730462ab13Typo fixes from Debian bug#554341.
Jacob Nevins
2009-11-04 12:06:32 +00:00
236889f6d6Single mouse clicks to toggle individual grid edges stopped working in r8414 as a side effect of reorganisation in interpret_move(). Reinstate them.
Simon Tatham
2009-10-13 17:09:42 +00:00
4f6e48e6beAdd a couple of missing checks in validate_desc(), without which bogus game IDs were getting as far as new_game() and failing assertions.
Simon Tatham
2009-09-16 12:57:07 +00:00
466c398a00Minor rewording and typo-correction.
Simon Tatham
2009-09-16 11:06:02 +00:00
ddfa693b0fAha, I've managed to prove that my inadequate error highlighting is actually just about adequate after all. Large comment added containing some discussion and the proof.
Simon Tatham
2009-09-16 10:57:11 +00:00
84d012998fError-highlighted trees look nicer with a different-coloured trunk. Also added a comment worrying about the universality of my error highlighting mechanism.
Simon Tatham
2009-09-13 14:43:21 +00:00
dfb8fa2e92Redo Mines and Inertia's mine graphics using an actual circle rather than an approximating octagon, to improve the look when zoomed to high resolution.
Simon Tatham
2009-09-13 13:08:34 +00:00
e2522c2897Tweak to the promptness of error highlighting display.
Simon Tatham
2009-09-12 12:54:49 +00:00
1b927c77b7About time I got round to this: error highlighting for Tents.
Simon Tatham
2009-09-12 12:30:43 +00:00
503f6650e9Fix width/height braino introduced in r5844.
Simon Tatham
2009-09-09 18:22:14 +00:00
e794621861Add execute permission to the .exe files inside the zip file.
Simon Tatham
2009-08-28 17:43:44 +00:00
cfdba00313More defensive-coding fixes from James H.
Simon Tatham
2009-07-01 22:01:21 +00:00
652f03a8aePatch from Mark Wooding: when I did r7980 I had completely failed to notice that there was an _official_ way to have menu items marked as selected or unselected, which is the GtkRadioMenuItem class. Replace my ad-hoc use of bullet characters with that.
Simon Tatham
2009-06-21 13:49:09 +00:00
93cd7ae62cPatch from Mark Wooding: use gdk_event_request_motions() where available, which magically seems to eliminate most if not all of the update lag when dragging a point in a large (say 250-point) Untangle. I don't fully understand how this works, but it seems to!
Simon Tatham
2009-06-21 13:39:54 +00:00
ec29642539Patch from Mark Wooding: stop setting GTK_EXPAND for the x-direction on labels in tables. The effect is that if you resize (e.g.) Solo's configuration panel, the labels to the left of the various input boxes will remain just big enough to fit their text in, and all the extra space will be taken up by the useful part, i.e. the input boxes themselves. Previously the labels and input boxes would expand in a 1:1 ratio, causing lots of space to the right of the label text that wasn't used for anything.
Simon Tatham
2009-06-21 13:34:50 +00:00
767ec24009Patch from Mark Wooding: one-pixel fix to the alignment of the bottom and right edges of the Tents keyboard cursor.
Simon Tatham
2009-06-21 13:28:43 +00:00
4ecc4f92d8Patch from Mark Wooding (though somewhat tampered with by me): have Loopy mark LINE_NO grid edges with very faint lines, instead of leaving them totally undrawn. Helps in complex grid types where the line layout isn't entirely obvious to a player not already familiar with it. Disableable by setting LOOPY_FAINT_LINES=n in the environment, just in case anyone turns out to seriously dislike it. (You could probably disable it via LOOPY_COLOUR_6 too, but you'd have to know the exact shade of your background to get that right.)
Simon Tatham
2009-06-21 13:24:48 +00:00
0687980f0cMemory management and other fixes from James H.
Simon Tatham
2009-06-17 20:01:45 +00:00
3cd83d05e8Fix a misdesign I must have missed when I reviewed the Killer patch: merge_some_cages() was written in the assumption that it would always be able to do something, in that it returned void on success and if it couldn't find anything to do it would just loop round forever trying the same things over and over again.
Simon Tatham
2009-04-30 17:56:56 +00:00
4bb9232bcbcheck_valid() wasn't checking that Killer cages contain at most one of each digit, and - perhaps more importantly - the display code wasn't highlighting violations of that rule as an error. Fix both.
Simon Tatham
2009-04-29 23:11:10 +00:00
c696ee2220It's been a new year for some time now.
Jacob Nevins
2009-03-19 23:32:30 +00:00
66efa90048Patch from James H to provide 16-bit-int cleanliness in Killer Solo.
Simon Tatham
2009-03-02 23:32:43 +00:00
706e27de8dPatch from James H to abstract out of Dominosa the code which randomly generates a tiling of a rectangle with dominoes, since he wants to reuse that function in another puzzle.
Simon Tatham
2009-03-02 19:45:59 +00:00
99ca11bf8bMake menus accessible from the keyboard in the Gtk front-end.
Jacob Nevins
2009-03-01 13:51:32 +00:00
cc7024b433Fix cosmetic glitch in the interaction between Killer and Jigsaw modes.
Simon Tatham
2009-02-24 07:49:01 +00:00
649719a964Make icon building cope with Solo's increased default tilesize as of r8455.
Jacob Nevins
2009-02-23 17:42:50 +00:00
87bd938ebfFix duplicate keyword.
Jacob Nevins
2009-02-22 12:57:20 +00:00
3d6de1eb47A substantial patch to Solo from Bernd Schmidt, adding support for the 'Killer Sudoku' puzzle type. As a side effect I've had to increase the default tile size of Solo, so that the extra numbers drawn in the squares in Killer mode were still legible.
Simon Tatham
2009-02-22 12:16:54 +00:00
407f29c46fIntroduce some infrastructure to permit games' print functions to draw dotted lines. No puzzle yet uses this, but one's about to.
Simon Tatham
2009-02-22 12:05:38 +00:00
9249f09619Fix the Java front end's vertical text positioning when ALIGN_VNORMAL is in use: ALIGN_VNORMAL indicates that the supplied y-coordinate denotes the _baseline_ of the text, not its top, so adding on 'asc' to convert to the baseline is wrong.
Simon Tatham
2009-02-22 12:02:40 +00:00
5027095ce2Keyboard control patch for Bridges, from James H.
Simon Tatham
2009-02-05 19:29:26 +00:00
279c678179Lee Dowling points out that duplicating the entire grid data structure in every game_state is terribly wasteful. Move all the constant bits of it (i.e. everything except the per-square 'blue' flag) into a ref-counted shared structure.
Simon Tatham
2009-02-05 19:25:44 +00:00
918842835bKeyboard control patch for Black Box, from James H.
Simon Tatham
2009-01-28 18:28:41 +00:00
8a3f525a54Keyboard control patch for Twiddle, from James H.
Simon Tatham
2009-01-28 18:27:10 +00:00
cd3a7d89ceKeyboard control patch for Pattern, from James H.
Simon Tatham
2009-01-27 18:30:46 +00:00
921a054f0aKeyboard control for Map, from James H.
Simon Tatham
2009-01-27 18:26:10 +00:00
4d79c71517Reorder if statements in Unequal's interpret_move() so that presses of 'h' and 'm' are treated as digits if a square is selected, and only treated as special commands otherwise. This renders very large games (just about) playable.
Simon Tatham
2009-01-26 22:28:17 +00:00
cc0f957d82Patch from James H to add keyboard control in Sixteen and Netslide (and also belatedly document the keyboard support in Unequal).
Simon Tatham
2009-01-26 19:14:44 +00:00
d2b0d8cf3fSwitch over to using the new-style GtkFileChooser in place of the deprecated GtkFileSelection, at least when the latter is available. Patch mostly due to Ori Avtalion.
Simon Tatham
2009-01-26 19:11:34 +00:00
ff62f0aaffAdd an automatic check for HAVE_SENSIBLE_ABSOLUTE_SIZE_FUNCTION by using PANGO_CHECK_VERSION. (Irritatingly, the latter is not available in all versions of Pango, so we have to be cautious about using it at all. *sigh*)
Simon Tatham
2009-01-24 17:58:42 +00:00
47c3878dc7Keyboard control patch for Pegs, from James H.
Simon Tatham
2009-01-20 18:28:28 +00:00
f46eceb714Keyboard control patch for Solo, from James H.
Simon Tatham
2009-01-19 18:38:29 +00:00
4169a54831Keyboard control patch for Slant, from James H.
Simon Tatham
2009-01-16 18:52:18 +00:00
28acb0ebdcKeyboard cursor support for Tents, from James H.
Simon Tatham
2009-01-16 18:50:22 +00:00
fa23fc3943r8396 introduced midend_tilesize(). Document it.
Simon Tatham
2009-01-16 18:45:01 +00:00
5480199874Keyboard cursor support for Rectangles, from James H.
Simon Tatham
2009-01-15 18:20:02 +00:00
4850845205Keyboard cursor support in Galaxies, by James H.
Simon Tatham
2009-01-15 18:18:21 +00:00
c826fdc062Keyboard interface for Filling, from James H.
Simon Tatham
2009-01-14 20:44:25 +00:00
96315bc2baPatch from James H to fix some off-by-one errors in Guess's click rectangle checking, preventing array bounds violation.
Simon Tatham
2009-01-12 20:30:12 +00:00
4a202808eePatch from James H which adds keyboard cursor support to Unequal, and also updates the docs for both that and the Mines cursor support in r8402.
Simon Tatham
2009-01-12 20:23:56 +00:00
f20847354cPatches from James H to add or improve arrow-key-driven cursors for some puzzles. (Light Up's and Net's are merely polished a bit, but Mines acquires a new one.)
Simon Tatham
2009-01-08 18:28:32 +00:00
fee17c3704Patch from Lambros to make the Normal difficulty level easier, since people have generally seemed to think Loopy is one of the more difficult puzzles in the collection. There's a new level called Tricky, between Normal and Hard, which is equivalent to the old Normal.
Simon Tatham
2009-01-07 23:07:11 +00:00
d9e39add3aStandalone solver for Loopy. Bit half-hearted, since the solver doesn't have diagnostics embedded and the ASCII formatter can't print non-square puzzles anyway; but it can grade difficulty, which is what I most immediately want it for.
Simon Tatham
2009-01-07 21:55:21 +00:00
7888d8db67Patch from James H to enable a single monolithic binary to be built alongside the individual puzzle binaries, on Windows only. (MacOS already has it, of course; Unix would require about as much work again.)
Simon Tatham
2009-01-06 23:26:18 +00:00
6328483bb4Bring the unfinished .R files into line with the current conventions.
Simon Tatham
2009-01-06 23:21:42 +00:00
17334d1945Don't ignore the return code of fwrite(). (Slight modification of a patch from Phil Bordelon.)
Simon Tatham
2008-12-12 19:49:05 +00:00