simon-git: puzzles (main): Simon Tatham

Commits to Tartarus hosted VCS tartarus-commits at lists.tartarus.org
Sun Apr 25 13:10:31 BST 2021


TL;DR:
  c0da615 Centralise initial clearing of the puzzle window.

Repository:     https://git.tartarus.org/simon/puzzles.git
On the web:     https://git.tartarus.org/?p=simon/puzzles.git
Branch updated: main
Committer:      Simon Tatham <anakin at pobox.com>
Date:           2021-04-25 13:10:31

commit c0da615a933a6676e2c6b957368067ca1bc10abd
web diff https://git.tartarus.org/?p=simon/puzzles.git;a=commitdiff;h=c0da615a933a6676e2c6b957368067ca1bc10abd;hp=c6a48bfc1c65c5f696a6e53be6c458692c6579f8
Author: Simon Tatham <anakin at pobox.com>
Date:   Sun Apr 25 11:24:40 2021 +0100

    Centralise initial clearing of the puzzle window.
    
    I don't know how I've never thought of this before! Pretty much every
    game in this collection has to have a mechanism for noticing when
    game_redraw is called for the first time on a new drawstate, and if
    so, start by covering the whole window with a filled rectangle of the
    background colour. This is a pain for implementers, and also awkward
    because the drawstate often has to _work out_ its own pixel size (or
    else remember it from when its size method was called).
    
    The backends all do that so that the frontends don't have to guarantee
    anything about the initial window contents. But that's a silly
    tradeoff to begin with (there are way more backends than frontends, so
    this _adds_ work rather than saving it), and also, in this code base
    there's a standard way to handle things you don't want to have to do
    in every backend _or_ every frontend: do them just once in the midend!
    
    So now that rectangle-drawing operation happens in midend_redraw, and
    I've been able to remove it from almost every puzzle. (A couple of
    puzzles have other approaches: Slant didn't have a rectangle-draw
    because it handles even the game borders using its per-tile redraw
    function, and Untangle clears the whole window on every redraw
    _anyway_ because it would just be too confusing not to.)
    
    In some cases I've also been able to remove the 'started' flag from
    the drawstate. But in many cases that has to stay because it also
    triggers drawing of static display furniture other than the
    background.

 blackbox.c            |  4 ----
 bridges.c             |  3 ---
 dominosa.c            | 10 ----------
 fifteen.c             |  7 -------
 filling.c             | 11 +----------
 flip.c                |  3 ---
 flood.c               |  7 -------
 galaxies.c            |  1 -
 guess.c               |  1 -
 inertia.c             |  9 ---------
 keen.c                |  8 --------
 lightup.c             |  4 ----
 magnets.c             |  7 +------
 map.c                 | 13 +------------
 midend.c              | 29 +++++++++++++++++++++++++++++
 mines.c               |  7 -------
 mosaic.c              | 15 ---------------
 net.c                 | 19 -------------------
 netslide.c            | 11 +----------
 palisade.c            |  1 -
 pattern.c             |  8 --------
 pearl.c               | 11 +----------
 pegs.c                |  4 ----
 range.c               |  9 ---------
 rect.c                |  3 ---
 samegame.c            |  7 -------
 signpost.c            |  1 -
 singles.c             |  1 -
 sixteen.c             |  7 -------
 slant.c               | 10 ----------
 solo.c                |  8 --------
 tents.c               | 16 ++--------------
 towers.c              | 16 ----------------
 tracks.c              |  9 ---------
 twiddle.c             |  7 -------
 undead.c              |  2 --
 unfinished/group.c    |  8 --------
 unfinished/separate.c |  7 -------
 unfinished/slide.c    | 13 -------------
 unfinished/sokoban.c  |  9 ---------
 unruly.c              |  3 ---
 41 files changed, 36 insertions(+), 293 deletions(-)



More information about the tartarus-commits mailing list