1/* SCCS Id: @(#)winami.h 3.4 1993/01/17 */ 2/* Copyright (c) Kenneth Lorber, Bethesda, Maryland, 1991. */ 3/* Copyright (c) Gregg Wonderly, Naperville, Illinois, 1992, 1993. */ 4/* NetHack may be freely redistributed. See license for details. */ 5 6#ifndef WINAMI_H 7#define WINAMI_H 8 9#define MAXWINTAGS 5 10 11/* 12 * Information specific to a menu window. First a structure for each 13 * menu entry, then the structure for each menu window. 14 */ 15typedef struct amii_mi { 16 struct amii_mi *next; 17 anything identifier; /* Opaque type to identify this selection */ 18 long glyph; /* Glyph for menu item */ 19 long count; /* Object count */ 20 char selected; /* Been selected? */ 21 char selector; /* Char used to select this entry. */ 22 char gselector; /* Group selector */ 23 char canselect; /* Can user select this entry. */ 24 char attr; /* Attribute for the line. */ 25 char *str; /* The text of the item. */ 26} amii_menu_item; 27 28struct amii_menu 29{ 30 amii_menu_item *items; /* Starting pointer for item list. */ 31 amii_menu_item *last; /* End pointer for item list. */ 32 const char *query; /* Query string */ 33 int count; /* Number of strings. */ 34 char chr; /* Character to assign for accelerator */ 35}; 36 37/* descriptor for Amiga Intuition-based windows. If we decide to cope with 38 * tty-style windows also, then things will need to change. */ 39/* per-window data */ 40struct amii_WinDesc { 41 xchar type; /* type of window */ 42 struct amii_menu menu; 43 boolean active; /* true if window is active */ 44 boolean wasup; /* true if menu/text window was already open */ 45 short disprows; /* Rows displayed so far (used for paging in message win) */ 46 xchar offx, offy; /* offset from topleft of display */ 47 short vwx, vwy, vcx, vcy; /* View cursor location */ 48 short rows, cols; /* dimensions */ 49 short curx, cury; /* current cursor position */ 50 short maxrow, maxcol; /* the maximum size used -- for INVEN wins */ 51 /* maxcol is also used by WIN_MESSAGE for */ 52 /* tracking the ^P command */ 53 char **data; /* window data [row][column] */ 54 menu_item *mi; /* Menu information */ 55 char *resp; /* valid menu responses (for NHW_INVEN) */ 56 char *canresp; /* cancel responses; 1st is the return value */ 57 char *morestr; /* string to display instead of default */ 58/* amiga stuff */ 59 struct Window *win; /* Intuition window pointer */ 60#ifdef INTUI_NEW_LOOK 61 struct ExtNewWindow *newwin; /* NewWindow alloc'd */ 62#else 63 struct NewWindow *newwin; /* ExtNewWindow alloc'd */ 64#endif 65#ifdef INTUI_NEW_LOOK 66 struct TagItem wintags[ MAXWINTAGS ];/* Tag items for this window */ 67#else 68 long wintags[ MAXWINTAGS*2 ]; 69#endif 70 void *hook; /* Hook structure pointer for tiles version */ 71#define FLMAP_INGLYPH 1 /* An NHW_MAP window is in glyph mode */ 72#define FLMAP_CURSUP 2 /* An NHW_MAP window has the cursor displayed */ 73#define FLMAP_SKIP 4 74#define FLMSG_FIRST 1 /* First message in the NHW_MESSAGE window for this turn */ 75 long wflags; 76 short cursx, cursy; /* Where the cursor is displayed at */ 77 short curs_apen, /* Color cursor is displayed in */ 78 curs_bpen; 79}; 80 81/* descriptor for intuition-based displays -- all the per-display data */ 82/* this is a generic thing - think of it as Screen level */ 83 84struct amii_DisplayDesc { 85/* we need this for Screen size (which will vary with display mode) */ 86 uchar rows, cols; /* width & height of display in text units */ 87 short xpix, ypix; /* width and height of display in pixels */ 88 int toplin; /* flag for topl stuff */ 89 int rawprint; /* number of raw_printed lines since synch */ 90 winid lastwin; /* last window used for I/O */ 91}; 92 93typedef enum { 94 WEUNK, WEKEY, WEMOUSE, WEMENU, 95} WETYPE; 96 97typedef struct WEVENT 98{ 99 WETYPE type; 100 union { 101 int key; 102 struct { 103 int x, y; 104 int qual; 105 } mouse; 106 long menucode; 107 } un; 108} WEVENT; 109 110#define MAXWIN 20 /* maximum number of windows, cop-out */ 111 112/* port specific variable declarations */ 113extern winid WIN_BASE; 114extern winid WIN_OVER; 115#define NHW_BASE 6 116#define NHW_OVER 7 /* overview window */ 117 118 119extern struct amii_WinDesc *amii_wins[MAXWIN + 1]; 120 121extern struct amii_DisplayDesc *amiIDisplay; /* the Amiga Intuition descriptor */ 122 123extern char morc; /* last character typed to xwaitforspace */ 124extern char defmorestr[]; /* default --more-- prompt */ 125 126#endif /* WINAMI_H */ 127