diff --git a/sys/amiga/winkey.c b/sys/amiga/winkey.c new file mode 100644 index 000000000..7f7986438 --- /dev/null +++ b/sys/amiga/winkey.c @@ -0,0 +1,106 @@ +/* SCCS Id: @(#)winkey.c 3.1 93/04/02 */ +/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1991,1992,1993. */ +/* NetHack may be freely redistributed. See license for details. */ + +#include "NH:sys/amiga/windefs.h" +#include "NH:sys/amiga/winext.h" +#include "NH:sys/amiga/winproto.h" + +amii_nh_poskey(x, y, mod) + int*x, *y, *mod; +{ + struct amii_WinDesc *cw; + WETYPE type; + struct RastPort *rp; + struct Window *w; + + if( cw = amii_wins[WIN_MESSAGE] ) + { + cw->wflags &= ~FLMAP_SKIP; + if( scrollmsg ) + cw->wflags |= FLMSG_FIRST; + cw->disprows = 0; + } + + if( WIN_MAP != WIN_ERR && (cw = amii_wins[ WIN_MAP ]) && ( w = cw->win ) ) + { + cursor_on( WIN_MAP ); + } + else + panic( "no MAP window opened for nh_poskey\n" ); + + rp = w->RPort; + + while( 1 ) + { + type = WindowGetevent( ); + if( type == WEMOUSE ) + { + *mod = CLICK_1; + if( lastevent.un.mouse.qual ) + *mod = 0; + + /* X coordinates are 1 based, Y are 1 based. */ + *x = ( (lastevent.un.mouse.x - w->BorderLeft) / mxsize ) + 1; + *y = ( ( lastevent.un.mouse.y - w->BorderTop - MAPFTBASELN ) / + mysize ) + 1; +#ifdef CLIPPING + if( clipping ) + { + *x += clipx; + *y += clipy; + } +#endif + return( 0 ); + } + else if( type == WEKEY ) + { + lastevent.type = WEUNK; + return( lastevent.un.key ); + } + } +} + +int +amii_nhgetch() +{ + int ch; + struct amii_WinDesc *cw=amii_wins[WIN_MESSAGE]; + + if( WIN_MAP != WIN_ERR && amii_wins[ WIN_MAP ] ) + { + cursor_on( WIN_MAP ); + } + if(cw) + cw->wflags &= ~FLMAP_SKIP; + + ch = WindowGetchar(); + return( ch ); +} + +void +amii_get_nh_event() +{ + /* nothing now - later I have no idea. Is this just a Mac hook? */ +} + +void +amii_getret() +{ + register int c; + + raw_print( "" ); + raw_print( "Press Return..." ); + + c = 0; + + while( c != '\n' && c != '\r' ) + { + if( HackPort ) + c = WindowGetchar(); + else + c = getchar(); + } + return; +} +