From d99e217cfb12f40dd7dbc26146ef287f9f9020fc Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Tue, 27 Apr 2004 17:44:30 +0000 Subject: Implemented Cube, in a sufficiently general way that it also handles the tetrahedron, octahedron and icosahedron. [originally from svn r4151] --- midend.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) (limited to 'midend.c') diff --git a/midend.c b/midend.c index edde2e8..d309068 100644 --- a/midend.c +++ b/midend.c @@ -91,16 +91,22 @@ void midend_restart_game(midend_data *me) me->statepos = me->nstates; } -void midend_undo(midend_data *me) +static int midend_undo(midend_data *me) { - if (me->statepos > 1) + if (me->statepos > 1) { me->statepos--; + return 1; + } else + return 0; } -void midend_redo(midend_data *me) +static int midend_redo(midend_data *me) { - if (me->statepos < me->nstates) + if (me->statepos < me->nstates) { me->statepos++; + return 1; + } else + return 0; } int midend_process_key(midend_data *me, int x, int y, int button) @@ -126,10 +132,12 @@ int midend_process_key(midend_data *me, int x, int y, int button) midend_redraw(me); return 1; /* never animate */ } else if (button == 'u' || button == 'u' || - button == '\x1A' || button == '\x1F') { - midend_undo(me); + button == '\x1A' || button == '\x1F') { + if (!midend_undo(me)) + return 1; } else if (button == '\x12') { - midend_redo(me); + if (!midend_redo(me)) + return 1; } else if (button == 'q' || button == 'Q' || button == '\x11') { free_game(oldstate); return 0; -- cgit v1.1