home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Games / Xconq 7.1.0 / src / xconq-7.1.0 / mac / macconq.h < prev    next >
Encoding:
C/C++ Source or Header  |  1996-07-07  |  31.9 KB  |  963 lines  |  [TEXT/R*ch]

  1. /* Definitions for the Mac interface to Xconq.
  2.    Copyright (C) 1992, 1993, 1994, 1995, 1996 Stanley T. Shebs.
  3.  
  4. Xconq is free software; you can redistribute it and/or modify
  5. it under the terms of the GNU General Public License as published by
  6. the Free Software Foundation; either version 2, or (at your option)
  7. any later version.  See the file COPYING.  */
  8.  
  9. /* All Mac compilers are close enough to ANSI to include these,
  10.    even though some don't define __STDC__. */
  11.  
  12. #include <stddef.h>
  13. #include <stdarg.h>
  14. #include <stdlib.h>
  15.  
  16. #ifdef THINK_C
  17. #include <MacHeaders>
  18. #include <Sound.h>
  19. #endif /* THINK_C */
  20.  
  21. #ifdef MPW
  22. #ifndef __MWERKS__ /* actually, "old headers" */
  23. #include <Values.h>
  24. #endif
  25. #include <Types.h>
  26. #include <Resources.h>
  27. #include <QuickDraw.h>
  28. #include <Fonts.h>
  29. #include <Events.h>
  30. #include <Windows.h>
  31. #include <Menus.h>
  32. #include <TextEdit.h>
  33. #include <Dialogs.h>
  34. #include <Desk.h>
  35. #include <Scrap.h>
  36. #include <ToolUtils.h>
  37. #include <Memory.h>
  38. #include <SegLoad.h>
  39. #include <Files.h>
  40. #include <Folders.h>
  41. #include <OSUtils.h>
  42. #include <OSEvents.h>
  43. #include <DiskInit.h>
  44. #include <Packages.h>
  45. #include <Traps.h>
  46. #include <Lists.h>
  47. #include <StandardFile.h>
  48. #include <Sound.h>
  49. #include <Devices.h>
  50. #endif /* MPW */
  51.  
  52. #include <GestaltEqu.h>
  53. #include <PPCToolbox.h>
  54. #include <AppleEvents.h>
  55.  
  56. /* Bring in image- and interface-related definitions. */
  57.  
  58. #include "imf.h"
  59. #include "macimf.h"
  60. #include "ui.h"
  61.  
  62. /* Bring in the definitions of resources. */
  63.  
  64. #include "macdefs.h"
  65.  
  66. #ifdef MPW_C
  67. #define QD(whatever) (qd.##whatever)
  68. #define QDPat(whatever) (&(qd.##whatever))
  69. #endif
  70. #ifdef THINK_C
  71. #define QD(whatever) (whatever)
  72. #define QDPat(whatever) (whatever)
  73. #endif
  74. #ifdef __MWERKS__
  75. #define QD(whatever) (qd.##whatever)
  76. #define QDPat(whatever) (&(qd.##whatever))
  77. #endif
  78.  
  79. #ifdef MPW_C
  80. /* dangerous way */
  81. #define SET_PAT_ELT(pattern,i,val) ((pattern)[(i)] = (val))
  82. #define PAT_ELT(pattern,i) ((pattern)[(i)])
  83. #endif
  84.  
  85. #ifdef THINK_C
  86. /* dangerous way */
  87. #define SET_PAT_ELT(pattern,i,val) ((pattern)[(i)] = (val))
  88. #define PAT_ELT(pattern,i) ((pattern)[(i)])
  89. #endif
  90.  
  91. #ifdef __MWERKS__
  92. #define SET_PAT_ELT(pattern,i,val) ((pattern).pat[(i)] = (val))
  93. #define PAT_ELT(pattern,i) ((pattern).pat[(i)])
  94. #endif
  95.  
  96. #ifdef THINK_C
  97. /* From MPW, to replace missing definitions in Think C includes. */
  98. enum {
  99.  
  100.  kOnSystemDisk = /* 0x8000 */ -32768
  101.  
  102.  
  103. #define kCreateFolder true
  104. #define kDontCreateFolder false
  105.  
  106. #define kSystemFolderType                'macs'        /* the system folder */
  107. #define kDesktopFolderType                'desk'        /* the desktop folder; objects in this folder show on the desk top. */
  108. #define kTrashFolderType                'trsh'        /* the trash folder; objects in this folder show up in the trash */
  109. #define kWhereToEmptyTrashFolderType    'empt'        /* the "empty trash" folder; Finder starts empty from here down */
  110.  
  111. #define kPrintMonitorDocsFolderType        'prnt'        /* Print Monitor documents */
  112.  
  113. #define kStartupFolderType                'strt'        /* Finder objects (applications, documents, DAs, aliases, to...) to open at startup go here */
  114. #define kAppleMenuFolderType            'amnu'        /* Finder objects to put into the Apple menu go here */
  115. #define kControlPanelFolderType         'ctrl'        /* Control Panels go here (may contain INITs) */
  116. #define kExtensionFolderType            'extn'        /* Finder extensions go here */
  117. #define    kFontsFolderType                'font'        /* Fonts go here */
  118. #define kPreferencesFolderType            'pref'        /* preferences for applications go here */
  119. #define kTemporaryFolderType            'temp'        /* temporary files go here (deleted periodically, but don't rely on it.) */
  120. };
  121.  
  122. pascal OSErr FindFolder(short vRefNum,OSType folderType,Boolean createFolder,
  123.  short *foundVRefNum,long *foundDirID)
  124.  = {0x7000,0xA823}; 
  125. #endif
  126.  
  127. /* This is a way - perhaps not the best way - to distinguish "old headers"
  128.    from "universal headers". */
  129.  
  130. #ifndef __CONDITIONALMACROS__
  131. #define SetMenuItemText SetItem
  132. #define InsertMenuItem InsMenuItem
  133. #define SndListHandle Handle
  134. #define AEEventHandlerUPP EventHandlerProcPtr
  135. #define ModalFilterUPP ModalFilterProcPtr
  136. typedef pascal void (*UserItemProcPtr)(WindowPtr theWindow, short itemNo);
  137. #define UserItemUPP UserItemProcPtr
  138. #define ControlActionUPP ProcPtr
  139. #endif
  140.  
  141. #ifndef NewAEEventHandlerProc
  142. #define NewAEEventHandlerProc(fn) ((EventHandlerProcPtr) (fn))
  143. #endif
  144. #ifndef NewModalFilterProc
  145. #define NewModalFilterProc(fn) ((ModalFilterProcPtr) (fn))
  146. #endif
  147. #ifndef NewUserItemProc
  148. #define NewUserItemProc(fn) ((UserItemProcPtr) (fn))
  149. #endif
  150. #ifndef NewControlActionProc
  151. #define NewControlActionProc(fn) ((ProcPtr) (fn))
  152. #endif
  153.  
  154. enum grays {
  155.     blackgray,
  156.     darkgray,
  157.     mediumgray,
  158.     lightgray,
  159.     whitegray,
  160.     fullcolor
  161. };
  162.  
  163. /* The types of available designer tools. */
  164.  
  165. enum tooltype {
  166.     notool,
  167.     terraintool,
  168.     unittool,
  169.     peopletool,
  170.     featuretool,
  171.     brushsizetool,
  172.  
  173.     materialtool,
  174.     elevationtool,
  175.     temperaturetool,
  176.     cloudstool,
  177.     windstool,
  178.     viewtool
  179. };
  180.  
  181. /* The user interface substructure.  This is only allocated for sides with
  182.    attached displays. */
  183.  
  184. typedef struct a_ui {
  185.     short followaction;       /* move to where a change has occured */
  186.     int itertime;
  187.     int active;
  188. } UI;
  189.  
  190. /* Each side can open up any number and shape of maps. */
  191.  
  192. #define MAXSELECTIONS 500
  193.  
  194. typedef struct a_map {
  195.     VP *vp;                 /* This map's generic view parameters */
  196.     short osx, osy;         /* Tracks shifted origin so can be restored */
  197.     WindowPtr window;
  198.     ControlHandle hscrollbar;
  199.     ControlHandle vscrollbar;
  200.     /* How to draw the map. */
  201.     short conw;
  202.     short toplineh;
  203.     short topunith;
  204.     short toph;
  205.     short drawterrain;        /* Display solid color terrain on the map? */
  206.     short auxterraintypes[MAXTTYPES];
  207.     short drawauxterrain[MAXTTYPES];
  208.     short drawgrid;            /* Draw outlines around cells? */
  209.     short drawcellpats;        /* Draw terrain patterns? */
  210.     short drawothermaps;    /* Draw outlines of other maps? */
  211.     short drawunits;        /* Draw units on the map? */
  212.     short drawnames;        /* Draw unit names/numbers on the map? */
  213.     short oldesttoshow;        /* the relative time of the oldest data */
  214.     short agetofade;        /* point at which to gray out the display */
  215.     short newesttoshow;        /* the relative time of the newest data */
  216.     short fadeterrain;        /* fade world features as well as units? */
  217.     short lowestaltitude;   /* the lowest altitude of units to display */
  218.     short highestaltitude;    /* the highest altitude of units to display */
  219.     short drawborders;
  220.     short drawconnections;
  221.     short drawpeople;        /* Draw people sides on the map? */
  222.     short drawelevations;    /* Draw elevations on the map? */
  223.     short drawmaterials[MAXMTYPES];
  224.     short nummaterialstodraw;
  225.     short drawlighting;        /* Draw day/night on the map? */
  226.     short drawtemperature;    /* Draw temperatures on the map? */
  227.     short drawwinds;
  228.     short drawclouds;
  229.     short drawstorms;
  230.     short drawplans;
  231.     short drawai;
  232.     short drawcover;
  233.     short autoselect;
  234.     Unit *curunit;
  235.     short moveonclick;
  236.     short scrolltocurunit;
  237.     short follow_action;    /* Scroll to scene of actions? */
  238.     int numselections;
  239.     int maxselections;
  240.     Unit **selections;
  241.     Rect contentrect;
  242.     RgnHandle cellrgn;
  243.     int cellrgnx, cellrgny;
  244.     int maxdepth;           /* Largest # of bits/pixel of screens this map uses */
  245.     struct a_map *next;        /* Link to the next map. */
  246. } Map;
  247.  
  248. /* Each side can open up any number of lists of units. */
  249.  
  250. #define MAXINLIST 500
  251.  
  252. typedef struct a_list {
  253.     SideMask sides;
  254.     int mainsortmi;
  255.     int listglimpsed;              /* list glimpsed units also? */
  256.     enum sortkeys sortkeys[MAXSORTKEYS];  /* attributes to sort list elements on */
  257.     UnitVector *contents;
  258.     int numunits;
  259.     int firstvisible;
  260.     int lastvisible;
  261.     int firstvisfield;
  262.     int lastvisfield;
  263.     int largeicons;
  264.     int shouldreorg;
  265.     int entryspacing;
  266.     WindowPtr window;
  267.     ControlHandle hscrollbar;
  268.     ControlHandle vscrollbar;
  269.     struct a_list *next;
  270. } List;
  271.  
  272. /* A closer look at a unit. */
  273.  
  274. typedef struct a_unit_closeup {
  275.     struct a_unit *unit;
  276.     WindowPtr window;
  277.     struct a_unit_closeup *next;
  278. } UnitCloseup;
  279.  
  280. /* Iteration over all of a side's maps. */
  281.  
  282. #define for_all_maps(m)  \
  283.   for ((m) = maplist; (m) != NULL; (m) = (m)->next)
  284.  
  285. /* Iteration over all of a side's lists. */
  286.  
  287. #define for_all_lists(l)  \
  288.   for ((l) = listlist; (l) != NULL; (l) = (l)->next)
  289.  
  290. /* Iteration over all of a side's unit closeups. */
  291.  
  292. #define for_all_unit_closeups(c)  \
  293.   for ((c) = unitcloseuplist; (c) != NULL; (c) = (c)->next)
  294.  
  295. /* Other useful macros. */
  296.  
  297. #define window_width(w) ((w)->portRect.right - (w)->portRect.left)
  298. #define window_height(w) ((w)->portRect.bottom - (w)->portRect.top)
  299.  
  300. #define clip_to_limits(lo,x,hi) (max((lo), min((x), (hi))))
  301.  
  302. #define bords_to_draw(m) (numbordtypes > 0 && bwid[(m)->vp->power] > 0)
  303.  
  304. #define conns_to_draw(m) (numconntypes > 0 && cwid[(m)->vp->power] > 0)
  305.  
  306. #define draw_any_materials(m) (0)
  307.  
  308. #define any_borders_at(x, y, b) (aux_terrain_at(x, y, b) != 0)
  309.  
  310. #define any_connections_at(x, y, c) (aux_terrain_at(x, y, c) != 0)
  311.  
  312. enum {
  313.     dontdraw,
  314.     useblocks,
  315.     usepictures,
  316.     usepolygons
  317. };
  318.  
  319. enum {
  320.     plain_emblem,
  321.     shadow_emblem
  322. };
  323.  
  324. enum {
  325.     NO_MODAL,
  326.     MOVE_TO_MODAL,
  327.     FIRE_MODAL,
  328.     FIRE_INTO_MODAL,
  329.     SET_FORMATION_MODAL,
  330.     ADD_TERRAIN_MODAL,
  331.     REMOVE_TERRAIN_MODAL,
  332.     DISTANCE_MODAL,
  333.     ZOOM_MODAL,
  334.     GENERIC_MODAL
  335. };
  336.  
  337. #ifndef c2p
  338. #define c2p(STR,PBUF) \
  339.   strcpy(((char *) PBUF) + 1, STR);  \
  340.   PBUF[0] = strlen(STR);
  341. #endif
  342.  
  343. #ifndef p2c
  344. #define p2c(PSTR,BUF)  \
  345.   strncpy(BUF, ((char *) (PSTR) + 1), PSTR[0]);  \
  346.   BUF[PSTR[0]] = '\0';
  347. #endif
  348.  
  349. #define top_left(rect) (*(Point *) &(rect.top))
  350.  
  351. #define bottom_right(rect) (*(Point *) &(rect.bottom))
  352.  
  353. /* The following macros require local vars named win, itemtype, itemhandle, itemrect. */
  354.  
  355. #define set_flag_from_ditem(di,place)  \
  356.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  357.   (place) = GetCtlValue((ControlHandle) itemhandle); 
  358.  
  359. #define put_number_into_ditem(di,num)  \
  360.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  361.   NumToString((num), tmpstr);  \
  362.   SetIText(itemhandle, tmpstr);
  363.  
  364. #define get_number_from_ditem(di,place)  \
  365.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  366.   GetIText(itemhandle, tmpstr);  \
  367.   StringToNum(tmpstr, (long *) &(place));
  368.  
  369. /* (should understand nn:mm times) */
  370.  
  371. #define put_time_into_ditem(di,num)  \
  372.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  373.   NumToString((num), tmpstr);  \
  374.   SetIText(itemhandle, tmpstr);
  375.  
  376. #define get_time_from_ditem(di,place)  \
  377.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  378.   GetIText(itemhandle, tmpstr);  \
  379.   StringToNum(tmpstr, (long *) &(place));
  380.  
  381. #define get_string_from_ditem(di,buf)  \
  382.   GetDItem(win, (di), &itemtype, &itemhandle, &itemrect);  \
  383.   GetIText(itemhandle, tmpstr);  \
  384.   p2c(tmpstr, (buf));
  385.  
  386. extern Side *dside;
  387.  
  388. extern int playsounds;
  389.  
  390. extern int nummaps;
  391.  
  392. extern ImageFamily **uimages;
  393. extern ImageFamily **timages;
  394. extern ImageFamily **eimages;
  395.  
  396. extern ImageColor **tcolors;
  397.  
  398. extern WindowPtr helpwin;
  399. extern struct a_helpnode *curhelpnode;
  400. extern char *helpstring;
  401. extern TEHandle helptext;
  402.  
  403. extern WindowPtr instructionswin;
  404.  
  405. extern WindowPtr gamewin;
  406. extern ControlHandle gamevscrollbar;
  407.  
  408. extern WindowPtr constructionwin;
  409.  
  410. extern WindowPtr designwin;
  411. extern enum tooltype tooltype;
  412. extern short curutype;
  413. extern short curttype;
  414. extern short cursidenumber;
  415. extern short curfid;
  416. extern Feature *curfeature;
  417.  
  418. extern WindowPtr historywin;
  419.  
  420. extern WindowPtr noticewin;
  421. extern TEHandle noticetext;
  422.  
  423. extern WindowPtr scoreswin;
  424. extern TEHandle scorestext;
  425.  
  426. extern MenuHandle sidemenu;
  427. extern MenuHandle utypemenu;
  428. extern MenuHandle mtypemenu;
  429. extern MenuHandle ttypemenu;
  430.  
  431. extern int hasColorQD;
  432.  
  433. extern int minscreendepth;
  434. extern int maxscreendepth;
  435.  
  436. extern int sbarwid;
  437.  
  438. extern WindowPtr *winmenuwins;
  439.  
  440. extern int default_draw_grid;           /* Display grid on the map? */
  441. extern int default_draw_names;           /* Display unit names/numbers on the map? */
  442.  
  443. extern int map_modal;
  444.  
  445. extern int defaultmoveonclick;
  446. extern int defaultautoselect;
  447.  
  448. extern PolyHandle polygons[];
  449. extern int lastpolyx[], lastpolyy[];
  450. extern PolyHandle gridpolygons[];
  451. extern int lastgridpolyx[], lastgridpolyy[];
  452.  
  453. extern RgnHandle cellrgns[];
  454. extern int lastcellrgnx[], lastcellrgny[];
  455. extern RgnHandle gridcellrgns[];
  456. extern int lastgridcellrgnx[], lastgridcellrgny[];
  457.  
  458. extern RgnHandle cellrgns30[];
  459. extern int lastcellrgnx30[], lastcellrgny30[];
  460. extern RgnHandle gridcellrgns30[];
  461. extern int lastgridcellrgnx30[], lastgridcellrgny30[];
  462.  
  463. extern RgnHandle cellrgns15[];
  464. extern int lastcellrgnx15[], lastcellrgny15[];
  465. extern RgnHandle gridcellrgns15[];
  466. extern int lastgridcellrgnx15[], lastgridcellrgny15[];
  467.  
  468. extern struct a_map *maplist;       /* chain of maps that we're using */
  469. extern struct a_list *listlist;     /* chain of lists */
  470. extern struct a_unit_closeup *unitcloseuplist;     /* chain of unit closeups */
  471.  
  472. extern CursHandle paintcursors[];
  473.  
  474. extern CursHandle cellpaintor;
  475. extern CursHandle bordpaintor;
  476. extern CursHandle connpaintor;
  477. extern CursHandle unitpaintor;
  478. extern CursHandle peoplepaintor;
  479. extern CursHandle featurepaintor;
  480. extern CursHandle materialpaintor;
  481. extern CursHandle elevpaintor;
  482. extern CursHandle cloudpaintor;
  483. extern CursHandle temppaintor;
  484.  
  485. extern CursHandle movecursors[];
  486. extern CursHandle nomovecursor;
  487. extern CursHandle allmovecursor;
  488. extern CursHandle grayarrowcursor;
  489. extern CursHandle opencrosscursor;
  490. extern CursHandle watchcursor;
  491. extern CursHandle firecursor;
  492.  
  493. extern char *curdatestr;
  494.  
  495. extern RGBColor graycolor, blackcolor;
  496.  
  497. extern enum grays gridgray;
  498. extern enum grays unseengray;
  499. extern enum grays bggray;
  500.  
  501. extern RGBColor gridcolor;
  502. extern RGBColor unseencolor;
  503. extern RGBColor blackcolor;
  504.  
  505. extern int conwid;
  506. extern int tophgt;
  507.  
  508. extern int first_windows;
  509.  
  510. extern int daynight;
  511. extern int grid_matches_unseen;
  512.  
  513. extern BitMap *bordbitmaps;
  514. extern BitMap *connbitmaps;
  515.  
  516. extern Pattern *animation_patterns;
  517.  
  518. extern int animation_pattern_state;
  519.  
  520. extern WindowPtr playersetupwin;
  521.  
  522. extern int connection_method;
  523. extern int hosting;
  524. extern Rect dragrect;
  525. extern int foundimagesfile;
  526.  
  527. extern int Profile;
  528.  
  529. extern TEHandle command_text;
  530.  
  531. /* Function declarations. */
  532.  
  533. /* Note that although the Xconq kernel must conditionalize its prototypes,
  534.    all Mac C compilers are sufficiently standard C to handle them. */
  535.  
  536. extern int main(void);
  537. extern int splash_dialog(void);
  538. extern void connect_game_dialog(void);
  539. extern void init_toolbox(void);
  540. extern void recalc_depths(void);
  541. extern void init_rects(void);
  542. extern void init_ae(void);
  543. extern void get_files(void);
  544. extern int open_preferences(void);
  545. extern void close_preferences(void);
  546. extern void get_preferences(void);
  547. extern void save_preferences(void);
  548. extern void ui_update_state(void);
  549. extern void event_loop(void);
  550. extern void get_global_mouse(Point *mouse);
  551. extern void adjust_cursor(Point mouse, RgnHandle region);
  552. extern void grow_window(WindowPtr win, Point where);
  553. extern void zoom_window(WindowPtr win, Point where, int part);
  554. extern void close_window(WindowPtr win);
  555. extern void do_mouse_down(WindowPtr window, EventRecord *event);
  556. extern void activate_window(WindowPtr win, int activate);
  557. extern void update_window(WindowPtr win);
  558. extern void maybe_select_next_unit(void);
  559.  
  560. extern int is_da_window(WindowPtr win);
  561. extern int is_app_window(WindowPtr win);
  562.  
  563. extern void won_game_dialog(void);
  564. extern void lost_game_dialog(void);
  565. extern void game_over_dialog(void);
  566.  
  567. extern int position_on_screen(int h, int v);
  568. extern int position_already_used(int h, int v);
  569. extern GDHandle best_zoom_screen(Rect *rectptr);
  570.  
  571. extern void force_update(WindowPtr win);
  572. extern void force_overall_update(void);
  573.  
  574. extern void set_standard_state(WindowPtr win, int fullw, int fullh);
  575. extern void get_main_screen_size(int *widp, int *hgtp);
  576.  
  577. extern void draw_default_button(DialogPtr dialog, short ditem);
  578.  
  579. extern void stagger_window(WindowPtr win, int *lasthp, int *lastvp);
  580.  
  581. extern void set_end_of_game_interaction_modes(void);
  582. extern void draw_selection_animation(Map *map, Unit *unit);
  583.  
  584. /* Map-handling prototypes. */
  585.  
  586. extern int at_all_visible(Map *map, int x, int y);
  587. extern int in_middle(Map *map, int x, int y);
  588.  
  589. extern void xform(Map *map, int x, int y, int *sxp, int *syp);
  590. extern void m_xform_unit(Map *map, Unit *unit, int *sxp, int *syp, int *swp, int *shp);
  591. extern void m_xform_unit_self(Map *map, Unit *unit, int *sxp, int *syp, int *swp, int *shp);
  592. extern void m_xform_occupant(Map *map, Unit *transport, Unit *unit, int sx, int sy, int sw, int sh, int *sxp, int *syp, int *swp, int *shp);
  593.  
  594. extern Map *create_map(int power);
  595. extern void set_content_rect(Map *map);
  596. extern void m_focus_on_center(Map *map);
  597. extern void m_center_on_focus(Map *map);
  598. extern void set_map_scrollbars(Map *map);
  599. extern void set_map_power(Map *map, int power);
  600. extern void make_cell_clip(int power);
  601. extern Map *map_from_window(WindowPtr window);
  602.  
  603. extern void grow_map(Map *map, int w, int h);
  604. extern void zoom_map(Map *map, int part);
  605.  
  606. extern void adjust_map_decor(Map *map);
  607.  
  608. extern int m_nearest_cell(Map *map, int sx, int sy, int *xp, int *yp);
  609. extern int m_nearest_boundary(Map *map, int sx, int sy, int *xp, int *yp, int *dirp);
  610. extern int m_nearest_unit(Map *map, int sx, int sy, Unit **unitp);
  611.  
  612. extern void draw_map(Map *map);
  613. extern void draw_window_background(Map *map);
  614. extern void draw_map_content(Map *map);
  615. extern void draw_area_background(Map *map);
  616. extern void draw_control_panel(Map *map);
  617. extern void draw_top_line(Map *map);
  618. extern void draw_other_maps(Map *map);
  619. extern void draw_related_maps(Map *map);
  620. extern void draw_other_map(Map *map, Map *map2);
  621. extern void draw_row(Map *map, int x0, int y0, int len, int clearit);
  622. extern int cell_update(Map *map, int x, int y);
  623. extern void draw_terrain_row(Map *map, int x0, int y0, int len);
  624. extern void draw_legend(Map *map, int x, int y);
  625.  
  626. extern void draw_selections(Map *map);
  627. extern void draw_selections_at(Map *map, int x, int y);
  628. extern void draw_selected_unit_setport(Map *map, Unit *unit);
  629. extern void draw_selected_unit(Map *map, Unit *unit);
  630. extern void erase_selections(Map *map);
  631. extern void erase_selection(Map *map, Unit *unit);
  632. extern void draw_unselected_unit(Map *map, Unit *unit);
  633.  
  634. extern void force_map_update(Map *map);
  635. extern void destroy_map(Map *map);
  636. extern void activate_map(Map *map, int activate);
  637. extern void print_map(Map *map);
  638. extern void oneliner(Map *map, int sx, int sy);
  639.  
  640. extern void draw_unit_image(WindowPtr win, int sx, int sy, int sw, int sh, int u, int e, int mod);
  641. extern void draw_side_emblem(WindowPtr win, int ex, int ey, int ew, int eh, int e, int style);
  642. extern void draw_cell_block(int sx, int sy, int n, int power, int t, int t2, int angle);
  643. extern void calc_best_terrain_images(void);
  644. extern void draw_hex_region(int sx, int sy, int power, int dogrid, int t, int t2, int angle);
  645. extern void draw_border_line_multiple(WindowPtr win, int sx, int sy, int bitmask, int power, int t, int angle);
  646. extern void draw_connection_line_multiple(WindowPtr win, int sx, int sy, int bitmask, int power, int t, int angle);
  647. extern void draw_terrain_sample(WindowPtr win, Rect tmprect, int t);
  648. extern void draw_country_borders(WindowPtr win, int sx, int sy, int bitmask, int power, int shade, int angle);
  649. extern void draw_ai_region_borders(WindowPtr win, int sx, int sy, int bitmask, int power);
  650. extern int draw_elevation_here(int x, int y);
  651. extern void draw_elevation(int sx, int sy, int power, int elev);
  652. extern int draw_temperature_here(int x, int y);
  653. extern void draw_temperature(int sx, int sy, int power, int temp);
  654. extern int draw_winds_here(int x, int y);
  655. extern void draw_winds(int sx, int sy, int power, int rawwind);
  656. extern int draw_clouds_here(int x, int y);
  657. extern void draw_clouds(int sx, int sy, int power, int cloudtype);
  658. extern void draw_coverage(int sx, int sy, int power, int cov, int altcov);
  659. extern void draw_unit_name(Unit *unit, int sx, int sy, int sw, int sh);
  660. extern void draw_legend_text(int sx, int sy, int sh, char *legend, int just);
  661. extern void draw_blast_image(WindowPtr win, int sx, int sy, int sw, int sh, int blasttype);
  662. extern void clear_blast_image(WindowPtr win, int sx, int sy, int sw, int sh, int blasttype);
  663. extern int picture_width(PicHandle pichandle);
  664. extern int picture_height(PicHandle pichandle);
  665. extern void plot_sicn(WindowPtr win, int sx, int sy, Handle sicnhandle, int n, int erase, int mode);
  666. extern void gray_out_rect(Rect *rectptr);
  667. extern void draw_unit_blast(Map *map, Unit *unit, int blast);
  668. extern void clear_unit_blast(Map *map, Unit *unit, int blast);
  669.  
  670. extern void do_mouse_down_map(Map *map, Point mouse, int mods);
  671. extern void do_mouse_down_map_control_panel(Map *map, int h, int v, int mods);
  672. extern void toggle_survey(Map *map);
  673. extern void magnify_map(Map *map, int inout);
  674. extern void set_map_mag(Map *map, int newpower);
  675. extern void toggle_map_grid(Map *map);
  676. extern void toggle_map_topline(Map *map);
  677. extern void toggle_map_topunit(Map *map);
  678. extern void toggle_map_other_maps(Map *map);
  679. extern void toggle_map_lighting(Map *map);
  680. extern void toggle_map_coverage(Map *map);
  681. extern void toggle_map_names(Map *map);
  682. extern void toggle_map_people(Map *map);
  683. extern void toggle_map_elevations(Map *map);
  684. extern void toggle_map_materials(Map *map, int m);
  685. extern void toggle_map_aux_terrain(Map *map, int t);
  686. extern void toggle_map_temperature(Map *map);
  687. extern void toggle_map_winds(Map *map);
  688. extern void toggle_map_clouds(Map *map);
  689. extern void toggle_map_storms(Map *map);
  690. extern void toggle_map_plans(Map *map);
  691. extern void toggle_map_ai(Map *map);
  692. extern void do_mouse_down_map_content(Map *map, int h, int v, int mods);
  693. extern void select_all_dragged_over(Map *map, int h0, int v0, int mods);
  694. extern void select_area_and_zoom(Map *map, int h0, int v0, int mods);
  695. extern void move_on_drag(Map *map, Unit *unit, int mods);
  696. extern void unselect_all(Map *map);
  697. extern void select_unit_on_map(Map *map, Unit *unit);
  698. extern int unit_is_selected(Map *map, Unit *unit);
  699. extern void unselect_unit_on_map(Map *map, Unit *unit);
  700. extern void select_all_units_in_rect(Map *map, Rect *rectptr);
  701. extern int move_the_selected_unit(Map *map, Unit *unit, int h, int v);
  702. extern void fire_the_selected_unit(Map *map, Unit *unit, int h, int v);
  703. extern void select_exactly_one_unit(Map *map, Unit *unit);
  704. extern void select_next_unit(Map *map);
  705. extern void select_previous_unit(Map *map);
  706. extern void select_next_actor(Map *map);
  707. extern void select_previous_actor(Map *map);
  708. extern void select_next_mover(Map *map);
  709. extern void select_previous_mover(Map *map);
  710. extern void select_next_awake_mover(Map *map);
  711. extern void select_previous_awake_mover(Map *map);
  712. extern void select_another(Map *map, Unit *(*fn)(Side *side, Unit *unit));
  713. extern void scroll_best_map_to_unit(Unit *unit);
  714. extern void scroll_to_unit(Map *map, Unit *unit);
  715. extern void magnify_to_fit(Map *map, int x1, int y1, int x2, int y2);
  716.  
  717. extern void create_list(void);
  718. extern void init_list_contents(List *list);
  719. extern void organize_list_contents(List *list);
  720. extern void sort_list_contents(List *list);
  721. extern void add_unit_to_list(List *list, Unit *unit);
  722. extern void set_list_scrollbars(List *list);
  723. extern List *list_from_window(WindowPtr window);
  724. extern void draw_list(List *list);
  725. extern void draw_list_contents(List *list);
  726. extern void draw_list_headings(List *list);
  727. extern void draw_unit_list_entry(List *list, int n, int clearfirst);
  728. extern void grow_list(List *list, int w, int h);
  729. extern void zoom_list(List *list, int part);
  730. extern void adjust_list_decor(List *list);
  731. extern void do_mouse_down_list(List *list, Point mouse, int mods);
  732. extern void set_list_sorting(List *list, enum sortkeys newkey, int mi);
  733. extern void toggle_list_large_icons(List *list);
  734. extern void update_unit_in_lists(Unit *unit);
  735. extern int unit_position_in_list(List *list, Unit *unit);
  736. extern void reorganize_list(List *list);
  737. extern void redraw_unit_list_entry(List *list, int n);
  738. extern void clear_selections(List *list);
  739. extern Unit *selected_unit_in_list(List *list);
  740. extern void scroll_to_selected_unit_in_list(List *list);
  741. extern void activate_list(List *list, int activate);
  742. extern void print_list(List *list);
  743. extern void destroy_list(List *list);
  744.  
  745. extern void scroll_best_map_to_unit(Unit *unit);
  746.  
  747. extern void init_patterns(void);
  748. extern void init_icons(void);
  749. extern void init_cursors(void);
  750. extern int do_splash_box(void);
  751. extern void new_game_dialog(void);
  752. extern int start_new_game(void);
  753. extern void update_new_game_list(void);
  754. extern int variants_dialog(void);
  755. extern int open_game_dialog(void);
  756. extern int open_game_from_fsspec(FSSpec *fsspec);
  757. extern int open_game_from_name_and_volume(Str255 name, int vrefnum);
  758. extern int launch_game(void);
  759. extern void handle_player_setup_event(EventRecord *event);
  760. extern int hit_player_setup_dialog(int itemhit, Point mouse);
  761. extern void launch_game_2(void);
  762. extern void add_remote_player(char *name);
  763. extern void check_for_missing_images(void);
  764. extern void open_progress_dialog(void);
  765. extern void close_progress_dialog(void);
  766. extern void init_display(void);
  767. extern void init_terrain_images(void);
  768. extern void interp_named_color(char *name, enum grays *grayvar, RGBColor *colorvar);
  769. extern void init_terrain_colors(void);
  770. extern void init_unit_images(void);
  771. extern void init_all_emblem_images(void);
  772. extern void init_emblem_images(Side *side2);
  773.  
  774. extern int construction_ever_possible(void);
  775.  
  776. extern void init_menus(void);
  777. extern void add_window_menu_item(char *name, WindowPtr win);
  778. extern void remove_window_menu_item(WindowPtr win);
  779. extern void build_side_menu(void);
  780. extern void update_side_menu(Side *side2);
  781. extern void build_unit_type_menu(void);
  782. extern void build_material_type_menu(void);
  783. extern void build_terrain_type_menu(void);
  784. extern void build_ai_type_menu(void);
  785. extern void build_feature_menu(void);
  786. extern void build_optional_terrain_type_menu(void);
  787. extern void update_feature_menu(Feature *feature);
  788. extern void do_menu_command(long which);
  789. extern void do_about_box(void);
  790. extern void save_the_game(int askname, int quitting);
  791. extern void set_preferences(void);
  792. extern void maybe_init_print(void);
  793. extern void quit_the_game(void);
  794. extern void apply_to_all_selected(int (*fn)(), int beepfailure);
  795. extern void do_reserve_command(int value, int radius, int recurse);
  796. extern void do_sleep_command(int value, int radius, int recurse);
  797. extern void do_attack_command(void);
  798. extern void enable_construction(void);
  799. extern int do_move_to_command(void);
  800. extern int do_fire_command(void);
  801. extern int do_fire_into_command(void);
  802. extern void do_profile(void);
  803. extern void do_trace(void);
  804. extern void do_detonate_command(void);
  805. extern void adjust_menus(void);
  806.  
  807. extern int add_unit_position(Unit *unit);
  808. extern void set_focus(Map *map, int x, int y);
  809. extern void message_dialog(void);
  810. extern void command_dialog(void);
  811. extern void do_keyboard_command(int key);
  812. extern void execute_named_command(char *cmdstr);
  813. extern void describe_commands(int arg, char *key, char *buf);
  814. struct cmdtab;
  815. extern void describe_command_table(int arg, char *key, char *buf, struct cmdtab *cmdtab);
  816. extern void toggle_profiling(void);
  817.  
  818. extern char *get_string_from_item(Handle itemhandle);
  819.  
  820. extern void instructions_dialog(void);
  821. extern void create_instructions_dialog(void);
  822. extern int hit_instructions_dialog(DialogPtr dialog, int itemhit, EventRecord *evt);
  823.  
  824. extern void create_game_window(void);
  825. extern void draw_game(void);
  826. extern void draw_game_date(void);
  827. extern void draw_game_clocks(void);
  828. extern void draw_game_progress(void);
  829. extern void draw_game_side(Side *side2);
  830. extern int feeling_towards(Side *side, Side *side2);
  831. extern void draw_side_status(Side *side2);
  832. extern void do_mouse_down_game(Point mouse, int mods);
  833.  
  834. extern void create_construction_window(void);
  835. extern void init_construction_lists(void);
  836. extern void reinit_construction_lists(void);
  837. extern void draw_construction(void);
  838. extern void draw_construction_default(void);
  839. extern void calc_construction_rects(void);
  840. extern void activate_construction(int activate);
  841. extern Unit *get_selected_construction_unit(void);
  842. extern int get_selected_construction_type(void);
  843. extern void scroll_to_selected_construction_unit(void);
  844. extern void do_mouse_down_construction(Point mouse, int mods);
  845. extern void select_unit_in_construction_window(Unit *unit);
  846. extern void select_type_in_construction_window(int u);
  847. extern void update_construction_unit_list(Unit *unit);
  848. extern void maybe_add_unit_to_construction_list(Unit *unit);
  849. extern void update_unit_list_for_type(int u);
  850. extern void update_construction_type_list(void);
  851. extern void update_type_list_for_unit(Unit *unit);
  852. extern void adjust_construction_controls(void);
  853. extern void grow_construction(int h, int v);
  854. extern void zoom_construction(int part);
  855. extern int do_key_down_construction(int key);
  856.  
  857. extern void side_rename_dialog(Side *side);
  858.  
  859. extern int unit_rename_dialog(Unit *unit);
  860.  
  861. extern UnitCloseup *find_unit_closeup(Unit *unit);
  862. extern void create_unit_closeup(Unit *unit);
  863. extern void preferred_closeup_size(int u, int *widp, int *hgtp);
  864. extern void draw_unit_closeup(UnitCloseup *unitcloseup);
  865. extern UnitCloseup *unit_closeup_from_window(WindowPtr win);
  866. extern int do_mouse_down_unit_closeup(UnitCloseup *unitcloseup, Point mouse, int mods);
  867. extern void destroy_unit_closeup(UnitCloseup *unitcloseup);
  868.  
  869. extern void create_history_window(void);
  870. extern void calc_history_layout(void);
  871. extern void update_total_hist_lines(void);
  872. extern void set_history_scrollbar(void);
  873. extern void draw_history(void);
  874. extern void draw_historical_event(HistEvent *hevt, int y);
  875. extern void draw_historical_date(HistEvent *hevt, int y);
  876. extern void do_mouse_down_history(Point mouse, int mods);
  877. extern void move_history_scrollbar(int h, int v);
  878. extern void grow_history(int h, int v);
  879. extern void zoom_history(int part);
  880. extern void update_history_window(HistEvent *hevt);
  881.  
  882. extern void notice_dialog(void);
  883. extern void create_notice_window(void);
  884. extern void append_notice(char *str);
  885. extern void draw_notice(void);
  886. extern void adjust_notice_scrollbar(void);
  887. extern void activate_notice(int activate);
  888. extern void do_mouse_down_notice(Point mouse, int mods);
  889. extern void grow_notice(int h, int v);
  890. extern void zoom_notice(int part);
  891.  
  892. extern void scores_dialog(void);
  893. extern void create_scores_window(void);
  894. extern void append_scores(char *str);
  895. extern void draw_scores(void);
  896. extern void adjust_scores_scrollbar(void);
  897. extern void activate_scores(int activate);
  898. extern void do_mouse_down_scores(Point mouse, int mods);
  899. extern void grow_scores(int h, int v);
  900. extern void zoom_scores(int part);
  901.  
  902. extern WindowPtr commandwin;
  903. extern void draw_command(void);
  904. extern void activate_command(int activate);
  905. extern int do_key_down_command(int key);
  906. extern void do_mouse_down_command(Point mouse, int mods);
  907.  
  908. extern void help_dialog(HelpNode *helpnode);
  909. extern void describe_menus(int arg, char *key, char *buf);
  910. extern void describe_mouse(int arg, char *key, char *buf);
  911. extern void describe_keyboard(int arg, char *key, char *buf);
  912. extern void describe_help(int arg, char *key, char *buf);
  913. extern void create_help_window(void);
  914. extern void set_help_content(HelpNode *helpnode);
  915. extern void draw_help(void);
  916. extern void adjust_help_scrollbar(void);
  917. extern void activate_help(int activate);
  918. extern void do_mouse_down_help(Point mouse, int mods);
  919. extern void grow_help(int h, int v);
  920. extern void zoom_help(int part);
  921.  
  922. extern void enable_designing(int forsure);
  923. extern void disable_designing(void);
  924. extern void init_design_cursors(void);
  925. extern CursPtr adjust_designer_cursor(Point mouse, RgnHandle region);
  926. extern void create_design_window(void);
  927. extern void position_design_window(void);
  928. extern void draw_design_window(void);
  929. extern void draw_design_window_tool(enum tooltype tool);
  930. extern void do_mouse_down_design(Point mouse, int mods);
  931. extern void mark_allowed_unit_types(void);
  932. extern void mark_allowed_sides(void);
  933. extern void feature_rename_dialog(Feature *feature);
  934. extern void apply_designer_tool(Map *map, int h, int v, int mods);
  935. extern void paint_on_drag(Map *map, int h0, int v0, int mods);
  936. extern void border_on_drag(Map *map, int h0, int v0, int mods, int paintmode);
  937. extern void connect_on_drag(Map *map, int h0, int v0, int mods, int paintmode);
  938. extern void designer_save_dialog(void);
  939. extern void designer_reshape_dialog(Module *module);
  940.  
  941. extern void update_unit_in_maps(Unit *unit);
  942. extern void beep(void);
  943. extern void set_game_file_type(char *name);
  944.  
  945. extern int get_a_position(Map **map, int *xp, int *yp, int *dirp);
  946. extern int get_a_unit(Map **mapp, Unit **unitp);
  947.  
  948. extern void interp_mac_ui_data(Obj *uispec);
  949.  
  950. extern void draw_unit_info(Map *map);
  951. extern void connection_method_dialog(void);
  952. extern void init_connection_method(void);
  953.  
  954. extern void play_sound(char *soundname);
  955.  
  956. extern void query_position_modally(int mode);
  957. extern void set_position_modally(void);
  958.  
  959. extern int gameinited;
  960. extern int position_set_modally;
  961. extern Point modal_point;
  962. extern Map *modal_map;
  963.