OSDN Git Service

Initial Import
[nethackexpress/trunk.git] / sys / amiga / winkey.c
1 /*    SCCS Id: @(#)winkey.c    3.1    93/04/02 */
2 /* Copyright (c) Gregg Wonderly, Naperville, Illinois,  1991,1992,1993. */
3 /* NetHack may be freely redistributed.  See license for details. */
4
5 #include "NH:sys/amiga/windefs.h"
6 #include "NH:sys/amiga/winext.h"
7 #include "NH:sys/amiga/winproto.h"
8
9 amii_nh_poskey(x, y, mod)
10     int*x, *y, *mod;
11 {
12     struct amii_WinDesc *cw;
13     WETYPE type;
14     struct RastPort *rp;
15     struct Window *w;
16
17     if( cw = amii_wins[WIN_MESSAGE] )
18     {
19         cw->wflags &= ~FLMAP_SKIP;
20         if( scrollmsg )
21             cw->wflags |= FLMSG_FIRST;
22         cw->disprows = 0;
23     }
24
25     if( WIN_MAP != WIN_ERR && (cw = amii_wins[ WIN_MAP ]) && ( w = cw->win ) )
26     {
27         cursor_on( WIN_MAP );
28     }
29     else
30         panic( "no MAP window opened for nh_poskey\n" );
31
32     rp = w->RPort;
33
34     while( 1 )
35     {
36         type = WindowGetevent( );
37         if( type == WEMOUSE )
38         {
39             *mod = CLICK_1;
40             if( lastevent.un.mouse.qual )
41                 *mod = 0;
42
43             /* X coordinates are 1 based, Y are 1 based. */
44             *x = ( (lastevent.un.mouse.x - w->BorderLeft) / mxsize ) + 1;
45             *y = ( ( lastevent.un.mouse.y - w->BorderTop - MAPFTBASELN ) /
46                         mysize ) + 1;
47 #ifdef  CLIPPING
48             if( clipping )
49             {
50                 *x += clipx;
51                 *y += clipy;
52             }
53 #endif
54             return( 0 );
55         }
56         else if( type == WEKEY )
57         {
58             lastevent.type = WEUNK;
59             return( lastevent.un.key );
60         }
61     }
62 }
63
64 int
65 amii_nhgetch()
66 {
67     int ch;
68     struct amii_WinDesc *cw=amii_wins[WIN_MESSAGE];
69
70     if( WIN_MAP != WIN_ERR && amii_wins[ WIN_MAP ] )
71     {
72         cursor_on( WIN_MAP );
73     }
74     if(cw)
75         cw->wflags &= ~FLMAP_SKIP;
76
77     ch = WindowGetchar();
78     return( ch );
79 }
80
81 void
82 amii_get_nh_event()
83 {
84     /* nothing now - later I have no idea.  Is this just a Mac hook? */
85 }
86
87 void
88 amii_getret()
89 {
90     register int c;
91
92     raw_print( "" );
93     raw_print( "Press Return..." );
94
95     c = 0;
96
97     while( c != '\n' && c != '\r' )
98     {
99         if( HackPort )
100             c = WindowGetchar();
101         else
102             c = getchar();
103     }
104     return;
105 }
106