Source:NetHack 3.2.0/windows.c

From NetHackWiki
(Redirected from NetHack 3.2.0/windows.c)
Jump to navigation Jump to search

Below is the full text to windows.c from the source code of NetHack 3.2.0. To link to a particular line, write [[NetHack 3.2.0/windows.c#line123]], for example.

Warning! This is the source code from an old release. For the latest release, see Source code

The NetHack General Public License applies to screenshots, source code and other content from NetHack.

This content was modified from the original NetHack source code distribution (by splitting up NetHack content between wiki pages, and possibly further editing). See the page history for a list of who changed it, and on what dates.

1.    /*	SCCS Id: @(#)windows.c	3.2	95/12/10	*/
2.    /* Copyright (c) D. Cohrs, 1993. */
3.    /* NetHack may be freely redistributed.  See license for details. */
4.    
5.    #include "hack.h"
6.    #ifdef TTY_GRAPHICS
7.    #include "wintty.h"
8.    #endif
9.    #ifdef X11_GRAPHICS
10.   /* cannot just blindly include winX.h without including all of X11 stuff */
11.   /* and must get the order of include files right.  Don't bother */
12.   extern struct window_procs X11_procs;
13.   extern void NDECL(win_X11_init);
14.   #endif
15.   #ifdef MAC
16.   extern struct window_procs mac_procs;
17.   #endif
18.   #ifdef AMIGA_INTUITION
19.   extern struct window_procs amii_procs;
20.   extern struct window_procs amiv_procs;
21.   extern void NDECL(ami_wininit_data);
22.   #endif
23.   #ifdef WIN32_GRAPHICS
24.   extern struct window_procs win32_procs;
25.   extern void NDECL(win_win32_init);
26.   #endif
27.   
28.   static void FDECL(def_raw_print, (const char *s));
29.   
30.   NEARDATA struct window_procs windowprocs;
31.   
32.   static
33.   struct win_choices {
34.       struct window_procs *procs;
35.       void NDECL((*ini_routine));		/* optional (can be 0) */
36.   } winchoices[] = {
37.   #ifdef TTY_GRAPHICS
38.       { &tty_procs, win_tty_init },
39.   #endif
40.   #ifdef X11_GRAPHICS
41.       { &X11_procs, win_X11_init },
42.   #endif
43.   #ifdef MAC
44.       { &mac_procs, 0 },
45.   #endif
46.   #ifdef AMIGA_INTUITION
47.       { &amii_procs, ami_wininit_data },		/* Old font version of the game */
48.       { &amiv_procs, ami_wininit_data },		/* Tile version of the game */
49.   #endif
50.   #ifdef WIN32_GRAPHICS
51.       { &win32_procs, win_win32_init },
52.   #endif
53.       { 0, 0 }		/* must be last */
54.   };
55.   
56.   static
57.   void
58.   def_raw_print(s)
59.   const char *s;
60.   {
61.       puts(s);
62.   }
63.   
64.   void
65.   choose_windows(s)
66.   const char *s;
67.   {
68.       register int i;
69.   
70.       for(i=0; winchoices[i].procs; i++)
71.   	if (!strcmpi(s, winchoices[i].procs->name)) {
72.   	    windowprocs = *winchoices[i].procs;
73.   	    if (winchoices[i].ini_routine) (*winchoices[i].ini_routine)();
74.   	    return;
75.   	}
76.   
77.       if (!windowprocs.win_raw_print)
78.   	windowprocs.win_raw_print = def_raw_print;
79.   
80.       raw_printf("Window type %s not recognized.  Choices are:", s);
81.       for(i=0; winchoices[i].procs; i++)
82.   	raw_printf("        %s", winchoices[i].procs->name);
83.   
84.       if (windowprocs.win_raw_print == def_raw_print)
85.   	terminate(EXIT_SUCCESS);
86.   }
87.   
88.   /*
89.    * tty_message_menu() provides a means to get feedback from the
90.    * --More-- prompt; other interfaces generally don't need that.
91.    */
92.   /*ARGSUSED*/
93.   char
94.   genl_message_menu(let, how, mesg)
95.   char let;
96.   int how;
97.   const char *mesg;
98.   {
99.       pline("%s", mesg);
100.      return 0;
101.  }
102.  
103.  /*windows.c*/