Difference between revisions of "Source:NetHack 3.6.0/include/region.h"

From NetHackWiki
Jump to navigation Jump to search
(Created page with "__MIXEDSYNTAXHIGHLIGHT__ Below is the full text to '''region.h''' from the source code of NetHack 3.6.0. To link to a particular line, write...")
 
 
Line 3: Line 3:
  
 
{{NGPL}}
 
{{NGPL}}
  <span id="line1">1.   /* NetHack 3.6 region.h $NHDT-Date: 1432512779 2015/05/25 00:12:59 $  $NHDT-Branch: master $:$NHDT-Revision: 1.13 $ */</span>
+
  <span id="line1">1. /* NetHack 3.6 region.h $NHDT-Date: 1432512779 2015/05/25 00:12:59 $  $NHDT-Branch: master $:$NHDT-Revision: 1.13 $ */</span>
  <span id="line2">2.   /* Copyright (c) 1996 by Jean-Christophe Collet   */</span>
+
  <span id="line2">2. /* Copyright (c) 1996 by Jean-Christophe Collet   */</span>
  <span id="line3">3.   /* NetHack may be freely redistributed.  See license for details. */</span>
+
  <span id="line3">3. /* NetHack may be freely redistributed.  See license for details. */</span>
  <span id="line4">4.   </span>
+
  <span id="line4">4. </span>
  <span id="line5">5.   #ifndef REGION_H</span>
+
  <span id="line5">5. #ifndef REGION_H</span>
  <span id="line6">6.   #define REGION_H</span>
+
  <span id="line6">6. #define REGION_H</span>
  <span id="line7">7.   </span>
+
  <span id="line7">7. </span>
  <span id="line8">8.   /* generic callback function */</span>
+
  <span id="line8">8. /* generic callback function */</span>
  <span id="line9">9.   </span>
+
  <span id="line9">9. </span>
  <span id="line10">10.   typedef boolean FDECL((*callback_proc), (genericptr_t, genericptr_t));</span>
+
  <span id="line10">10. typedef boolean FDECL((*callback_proc), (genericptr_t, genericptr_t));</span>
  <span id="line11">11.   </span>
+
  <span id="line11">11. </span>
  <span id="line12">12.   /*</span>
+
  <span id="line12">12. /*</span>
  <span id="line13">13.   * player_flags</span>
+
  <span id="line13">13.  * player_flags</span>
  <span id="line14">14.   */</span>
+
  <span id="line14">14.  */</span>
  <span id="line15">15.   #define REG_HERO_INSIDE 0x01</span>
+
  <span id="line15">15. #define REG_HERO_INSIDE 0x01</span>
  <span id="line16">16.   #define REG_NOT_HEROS 0x02</span>
+
  <span id="line16">16. #define REG_NOT_HEROS 0x02</span>
  <span id="line17">17.   #define hero_inside(r) ((r)->player_flags & REG_HERO_INSIDE)</span>
+
  <span id="line17">17. #define hero_inside(r) ((r)->player_flags & REG_HERO_INSIDE)</span>
  <span id="line18">18.   #define heros_fault(r) (!((r)->player_flags & REG_NOT_HEROS))</span>
+
  <span id="line18">18. #define heros_fault(r) (!((r)->player_flags & REG_NOT_HEROS))</span>
  <span id="line19">19.   #define set_hero_inside(r) ((r)->player_flags |= REG_HERO_INSIDE)</span>
+
  <span id="line19">19. #define set_hero_inside(r) ((r)->player_flags |= REG_HERO_INSIDE)</span>
  <span id="line20">20.   #define clear_hero_inside(r) ((r)->player_flags &= ~REG_HERO_INSIDE)</span>
+
  <span id="line20">20. #define clear_hero_inside(r) ((r)->player_flags &= ~REG_HERO_INSIDE)</span>
  <span id="line21">21.   #define set_heros_fault(r) ((r)->player_flags &= ~REG_NOT_HEROS)</span>
+
  <span id="line21">21. #define set_heros_fault(r) ((r)->player_flags &= ~REG_NOT_HEROS)</span>
  <span id="line22">22.   #define clear_heros_fault(r) ((r)->player_flags |= REG_NOT_HEROS)</span>
+
  <span id="line22">22. #define clear_heros_fault(r) ((r)->player_flags |= REG_NOT_HEROS)</span>
  <span id="line23">23.   </span>
+
  <span id="line23">23. </span>
  <span id="line24">24.   /*</span>
+
  <span id="line24">24. /*</span>
  <span id="line25">25.   * Note: if you change the size/type of any of the fields below,</span>
+
  <span id="line25">25.  * Note: if you change the size/type of any of the fields below,</span>
  <span id="line26">26.   *      or add any/remove any fields, you must update the</span>
+
  <span id="line26">26.  *      or add any/remove any fields, you must update the</span>
  <span id="line27">27.   *      bwrite() calls in save_regions(), and the</span>
+
  <span id="line27">27.  *      bwrite() calls in save_regions(), and the</span>
  <span id="line28">28.   *      mread() calls in rest_regions() in src/region.c</span>
+
  <span id="line28">28.  *      mread() calls in rest_regions() in src/region.c</span>
  <span id="line29">29.   *      to reflect the changes.</span>
+
  <span id="line29">29.  *      to reflect the changes.</span>
  <span id="line30">30.   */</span>
+
  <span id="line30">30.  */</span>
  <span id="line31">31.   </span>
+
  <span id="line31">31. </span>
  <span id="line32">32.   typedef struct {</span>
+
  <span id="line32">32. typedef struct {</span>
  <span id="line33">33.       NhRect bounding_box;        /* Bounding box of the region */</span>
+
  <span id="line33">33.     NhRect bounding_box;        /* Bounding box of the region */</span>
  <span id="line34">34.       NhRect *rects;              /* Rectangles composing the region */</span>
+
  <span id="line34">34.     NhRect *rects;              /* Rectangles composing the region */</span>
  <span id="line35">35.       short nrects;              /* Number of rectangles  */</span>
+
  <span id="line35">35.     short nrects;              /* Number of rectangles  */</span>
  <span id="line36">36.       boolean attach_2_u;        /* Region attached to player ? */</span>
+
  <span id="line36">36.     boolean attach_2_u;        /* Region attached to player ? */</span>
  <span id="line37">37.       unsigned int attach_2_m;    /* Region attached to monster ? */</span>
+
  <span id="line37">37.     unsigned int attach_2_m;    /* Region attached to monster ? */</span>
  <span id="line38">38.       /*struct obj *attach_2_o;*/ /* Region attached to object ? UNUSED YET */</span>
+
  <span id="line38">38.     /*struct obj *attach_2_o;*/ /* Region attached to object ? UNUSED YET */</span>
  <span id="line39">39.       const char *enter_msg;      /* Message when entering */</span>
+
  <span id="line39">39.     const char *enter_msg;      /* Message when entering */</span>
  <span id="line40">40.       const char *leave_msg;      /* Message when leaving */</span>
+
  <span id="line40">40.     const char *leave_msg;      /* Message when leaving */</span>
  <span id="line41">41.       long ttl;                  /* Time to live. -1 is forever */</span>
+
  <span id="line41">41.     long ttl;                  /* Time to live. -1 is forever */</span>
  <span id="line42">42.       short expire_f;            /* Function to call when region's ttl expire */</span>
+
  <span id="line42">42.     short expire_f;            /* Function to call when region's ttl expire */</span>
  <span id="line43">43.       short can_enter_f;        /* Function to call to check whether the player</span>
+
  <span id="line43">43.     short can_enter_f;        /* Function to call to check whether the player</span>
  <span id="line44">44.                                     can, or can not, enter the region */</span>
+
  <span id="line44">44.                                   can, or can not, enter the region */</span>
  <span id="line45">45.       short enter_f;            /* Function to call when the player enters*/</span>
+
  <span id="line45">45.     short enter_f;            /* Function to call when the player enters*/</span>
  <span id="line46">46.       short can_leave_f;        /* Function to call to check whether the player</span>
+
  <span id="line46">46.     short can_leave_f;        /* Function to call to check whether the player</span>
  <span id="line47">47.                                     can, or can not, leave the region */</span>
+
  <span id="line47">47.                                   can, or can not, leave the region */</span>
  <span id="line48">48.       short leave_f;            /* Function to call when the player leaves */</span>
+
  <span id="line48">48.     short leave_f;            /* Function to call when the player leaves */</span>
  <span id="line49">49.       short inside_f;            /* Function to call every turn if player's</span>
+
  <span id="line49">49.     short inside_f;            /* Function to call every turn if player's</span>
  <span id="line50">50.                                     inside */</span>
+
  <span id="line50">50.                                   inside */</span>
  <span id="line51">51.       unsigned int player_flags; /* (see above) */</span>
+
  <span id="line51">51.     unsigned int player_flags; /* (see above) */</span>
  <span id="line52">52.       unsigned int *monsters;    /* Monsters currently inside this region */</span>
+
  <span id="line52">52.     unsigned int *monsters;    /* Monsters currently inside this region */</span>
  <span id="line53">53.       short n_monst;            /* Number of monsters inside this region */</span>
+
  <span id="line53">53.     short n_monst;            /* Number of monsters inside this region */</span>
  <span id="line54">54.       short max_monst;          /* Maximum number of monsters that can be</span>
+
  <span id="line54">54.     short max_monst;          /* Maximum number of monsters that can be</span>
  <span id="line55">55.                                     listed without having to grow the array */</span>
+
  <span id="line55">55.                                   listed without having to grow the array */</span>
  <span id="line56">56.   #define MONST_INC 5</span>
+
  <span id="line56">56. #define MONST_INC 5</span>
  <span id="line57">57.   </span>
+
  <span id="line57">57. </span>
  <span id="line58">58.       /* Should probably do the same thing about objects */</span>
+
  <span id="line58">58.     /* Should probably do the same thing about objects */</span>
  <span id="line59">59.   </span>
+
  <span id="line59">59. </span>
  <span id="line60">60.       boolean visible; /* Is the region visible ? */</span>
+
  <span id="line60">60.     boolean visible; /* Is the region visible ? */</span>
  <span id="line61">61.       int glyph;      /* Which glyph to use if visible */</span>
+
  <span id="line61">61.     int glyph;      /* Which glyph to use if visible */</span>
  <span id="line62">62.       anything arg;    /* Optional user argument (Ex: strength of</span>
+
  <span id="line62">62.     anything arg;    /* Optional user argument (Ex: strength of</span>
  <span id="line63">63.                           force field, damage of a fire zone, ...*/</span>
+
  <span id="line63">63.                         force field, damage of a fire zone, ...*/</span>
  <span id="line64">64.   } NhRegion;</span>
+
  <span id="line64">64. } NhRegion;</span>
  <span id="line65">65.   </span>
+
  <span id="line65">65. </span>
  <span id="line66">66.   #endif /* REGION_H */</span>
+
  <span id="line66">66. #endif /* REGION_H */</span>
 
[[Category:NetHack 3.6.0 source code|include/region.h]]
 
[[Category:NetHack 3.6.0 source code|include/region.h]]

Latest revision as of 13:40, 15 December 2015

Below is the full text to region.h from the source code of NetHack 3.6.0. To link to a particular line, write [[Source:NetHack 3.6.0/include/region.h#line123]], for example.

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.

 /* NetHack 3.6	region.h	$NHDT-Date: 1432512779 2015/05/25 00:12:59 $  $NHDT-Branch: master $:$NHDT-Revision: 1.13 $ */
 /* Copyright (c) 1996 by Jean-Christophe Collet			  */
 /* NetHack may be freely redistributed.  See license for details. */
 
 #ifndef REGION_H
 #define REGION_H
 
 /* generic callback function */
 
 typedef boolean FDECL((*callback_proc), (genericptr_t, genericptr_t));
 
 /*
  * player_flags
  */
 #define REG_HERO_INSIDE 0x01
 #define REG_NOT_HEROS 0x02
 #define hero_inside(r) ((r)->player_flags & REG_HERO_INSIDE)
 #define heros_fault(r) (!((r)->player_flags & REG_NOT_HEROS))
 #define set_hero_inside(r) ((r)->player_flags |= REG_HERO_INSIDE)
 #define clear_hero_inside(r) ((r)->player_flags &= ~REG_HERO_INSIDE)
 #define set_heros_fault(r) ((r)->player_flags &= ~REG_NOT_HEROS)
 #define clear_heros_fault(r) ((r)->player_flags |= REG_NOT_HEROS)
 
 /*
  * Note: if you change the size/type of any of the fields below,
  *       or add any/remove any fields, you must update the
  *       bwrite() calls in save_regions(), and the
  *       mread() calls in rest_regions() in src/region.c
  *       to reflect the changes.
  */
 
 typedef struct {
     NhRect bounding_box;        /* Bounding box of the region */
     NhRect *rects;              /* Rectangles composing the region */
     short nrects;               /* Number of rectangles  */
     boolean attach_2_u;         /* Region attached to player ? */
     unsigned int attach_2_m;    /* Region attached to monster ? */
     /*struct obj *attach_2_o;*/ /* Region attached to object ? UNUSED YET */
     const char *enter_msg;      /* Message when entering */
     const char *leave_msg;      /* Message when leaving */
     long ttl;                   /* Time to live. -1 is forever */
     short expire_f;            /* Function to call when region's ttl expire */
     short can_enter_f;         /* Function to call to check whether the player
                                   can, or can not, enter the region */
     short enter_f;             /* Function to call when the player enters*/
     short can_leave_f;         /* Function to call to check whether the player
                                   can, or can not, leave the region */
     short leave_f;             /* Function to call when the player leaves */
     short inside_f;            /* Function to call every turn if player's
                                   inside */
     unsigned int player_flags; /* (see above) */
     unsigned int *monsters;    /* Monsters currently inside this region */
     short n_monst;             /* Number of monsters inside this region */
     short max_monst;           /* Maximum number of monsters that can be
                                   listed without having to grow the array */
 #define MONST_INC 5
 
     /* Should probably do the same thing about objects */
 
     boolean visible; /* Is the region visible ? */
     int glyph;       /* Which glyph to use if visible */
     anything arg;    /* Optional user argument (Ex: strength of
                         force field, damage of a fire zone, ...*/
 } NhRegion;
 
 #endif /* REGION_H */