/* 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; }