#ifndef EXCLUDE_H
#defineEXCLUDE_H#include"los.h"boolneed_auto_exclude(const monsters *mon,bool sleepy =false);voidset_auto_exclude(const monsters *mon);voidremove_auto_exclude(const monsters *mon,bool sleepy =false);voidinit_exclusion_los();voidupdate_exclusion_los(std::vector<coord_def>changed);boolis_exclude_root(const coord_def &p);voidcycle_exclude_radius(const coord_def &p);voiddel_exclude(const coord_def &p);voidset_exclude(const coord_def &p,int radius =LOS_RADIUS,bool autoexcl =false,bool vaultexcl =false);voidmaybe_remove_autoexclusion(const coord_def &p);
std::string get_exclusion_desc();voidclear_excludes();structtravel_exclude{
coord_def pos;// exclusion centre
int radius;// exclusion radius
los_def los;// los from exclusion centre
bool uptodate;// Is los up to date?
bool autoex;// Was set automatically.
monster_type mon;// Monster around which exclusion is centered.
bool vault;// Is this exclusion set by a vault?
travel_exclude(const coord_def &p,int r = LOS_RADIUS,bool autoex =false, monster_type mons = MONS_NO_MONSTER,bool vault =false);intradius_sq()const;voidset_los();boolin_bounds(const coord_def& p)const;boolaffects(const coord_def& p)const;};typedef std::vector<travel_exclude>exclvec;extern exclvec curr_excludes;// in travel.cc
boolis_excluded(const coord_def &p,const exclvec &exc =curr_excludes);
class writer;
class reader;voidmarshallExcludes(writer&outf,const exclvec&excludes);voidunmarshallExcludes(reader&inf,charminorVersion, exclvec&excludes);#endif