/** @addtogroup Client */
/*@{*/

/** \~russian     . */
bool __HideCursor = false;

/** \~russian   .
 * @par  
 * 0..255   .. , .
 */
uint8 __RoofAlpha;

/** \~russian    . */
bool __DisableLMenu;

/** \~russian        . */
bool __DisableMouseEvents;

/** \~russian        . */
bool __DisableKeyboardEvents;

/** \~russian  ,         . */
string __PlayerOffAppendix;

/** \~russian      . */
uint __DamageHitDelay;

int __RunModMul = 1;
int __RunModDiv = 1;
int __RunModAdd = 0;

bool __DiLeft;
bool __DiRight;
bool __DiUp;
bool __DiDown;
bool __DiMleft;
bool __DiMright;
bool __DiMup;
bool __DiMdown;
bool __ShowGroups;
bool __DebugInfo;
int __FlushVal;
int __BaseTex;
int __ScreenClear;
int __Light;
int __ScrollDelay;
int __ScrollStep;
bool __MouseScroll;
bool __ScrollCheck;
int __MouseSpeed;
bool __GlobalSound;

/** \~russian    master.dat. */
/** \~english Path to master.dat. */
string __MasterPath;

/** \~russian    critter.dat. */
/** \~english Path to critter.dat. */
string __CritterPath;

string __FoPatchPath;

string __FoDataPath;

string __Name;

string __Pass;

uint __TextDelay;
bool __MsgboxInvert;
int __ChangeLang;
uint8 __DefaultCombatMode;
bool __MessNotify;
bool __SoundNotify;
int __IndicatorType;
uint __DoubleClickTime;
/** \~russian  @ref term_tile "". */
/** \~english @ref term_tile "Tiles" visibility. */
bool __ShowTile;

/** \~russian  @ref term_tile "". */
/** \~english @ref term_tile "Roofs" visibility. */
bool __ShowRoof;

/** \~russian  @ref term_item "". */
/** \~english @ref term_item "Items" visibility. */
bool __ShowItem;

/** \~russian  @ref term_scenery "". */
/** \~english @ref term_scenery "Scenery" visibility. */
bool __ShowScen;

/** \~russian  @ref term_wall "". */
/** \~english @ref term_wall "Walls" visibility. */
bool __ShowWall;

/** \~russian  @ref term_critter "". */
/** \~english @ref term_critter "Critters" visibility. */
bool __ShowCrit;

/** \~russian     Fast. */
/** \~english Fast-objects visibility. */
bool __ShowFast;

/** \~russian   @ref term_player "". */
/** \~english @ref term_player "Players" names visibility. */
bool __ShowPlayerNames;

/** \~russian   @ref term_npc "". */
/** \~english @ref term_npc "NPCs" names visibility. */
bool __ShowNpcNames;

/** \~russian   @ref term_critter "". */
/** \~english @ref term_critter "Critters" names visibility. */
bool __ShowCritId;

/** \~russian       */
bool __HidePassword;

/** \~russian           . */
bool __GmapActive;

/** \~russian       . */
bool __GmapWait;

/** \~russian  ,        . */
float __GmapZoom;

/** \~russian      (- ). */
int __GmapOffsetX;
int __GmapOffsetY;

/** \~russian   . */
int __GmapGroupX
int __GmapGroupY;

/** \~russian   . */
int __GmapMoveX;
int __GmapMoveY;

/** \~russian    50. */
float __GmapSpeedX;
float __GmapSpeedY;

/** \~russian    . */
/** \~english Path to client folder. */
string __ClientPath;

/** \~russian    . */
/** \~english Path to server folder. */
string __ServerPath;

/** \~russian   . */
bool __ConsoleActive;

/** \~russian  
 *
 * - @c 0  ;
 * - @c 1  .
 *
 ** \~englsih Combat messages
 *
 * - @c 0  brief;
 * - @c 1  verbose.
 */
int __CombatMessagesType;

/** \~russian     . */
uint __Anim2CombatBegin;

/** \~russian     . */
uint __Anim2CombatIdle;

/** \~russian     . */
uint __Anim2CombatEnd;

/** \~russian    "".
 *
 *    Random(__CritterFidgetTime, __CritterFidgetTime * 2)
 *
 */
uint __CritterFidgetTime;

/**
 * \~russian @name  
 * \~english @name Network settings
 */
//@{

/** \~russian   . */
/** \~english Game server hostname. */
string __Host;

/** \~russian   . */
/** \~english Game server port number. */
uint __Port;

/** \~russian   . */
/** \~english Proxy type. */
uint __ProxyType;

/** \~russian   . */
/** \~english Proxy hostname. */
string __ProxyHost;

/** \~russian   . */
/** \~english Proxy port number. */
uint __ProxyPort;

/** \~russian    . */
/** \~english Proxy login. */
string __ProxyUser;

/** \~russian    . */
/** \~english Proxy password. */
string __ProxyPass;

//@}

/**
 * \~russian @name  
 * \~english @name Video settings
 */
//@{

/** \~russian  . */
/** \~english Screen width. */
const int __ScreenWidth;

/** \~russian  . */
/** \~english Screen height. */
const int __ScreenHeight;

/** \~russian  . */
/** \~english Full screen. */
bool __FullScr;

/** \~russian  . */
/** \~english VSync. */
bool __VSync;

/** Sleep. */
int __Sleep;

/** \~russian   . */
/** \~english Always on top. */
bool __AlwaysOnTop;

//@}

/**
 * \~russian @name  
 * \~english @name General
 * \~ @weight 300
 */
//@{

/** \~russian     -,    .
 *
 * @return     CritterCl,  .
 */
CritterCl@ GetChosen();

/** (?) */
bool IsTurnBased();

/** (?) */
uint16 GetCurrentMapPid();

/** \~russian    
 *
 * @param actions        ,   ,    .       _client_defines.fos Chosen actions
 * 
 * @return (?)
 *
 */
uint GetChosenActions(uint[]@ actions);

/** \~russian    
 *
 * @param actions        ,   ,    .       _client_defines.fos Chosen actions
 *
 */
void SetChosenActions(uint[]@ actions);

/** \~russian    .
 *
 *   ,    :    ,
 *   .     -,    ,
 * , .
 *
 * @return  .
 */
string@ GetLastError();

/** \~russian    - .
 *
 * @param text  .
 */
void Log(string& text);

/** \~russian    .
 *
 *   . ,  , .
 *   ,   , .
 *
 * @param  text    ,  .
 * @param  result  ,     .
 *
 * @return @c true     ;
 *         @c false    .
 */
bool StrToInt(string& text, int& result);

/** \~russian   .
 *
 * @param  minimum   .
 * @param  maximum   .
 *
 * @return     @a minimum  @a maximum, .
 */
int Random(int minimum, int maximum);

/** \~russian      .
 *
 * @param  itemId   ,    .
 *
 * @return     ItemCl   .
 *             @c null.
 */
ItemCl@+ GetItem(uint itemId);

/** \~russian   ,   .
 *
 * @param  protoId     (.  @b ITEMPID.H).
 *
 * @return     ProtoItem.    @c null.
 */
ProtoItem@+ GetProtoItem(uint16 protoId);

/** \~russian      .
 *
 * @param   msg   .
 *
 * @remarks      @c FOMB_GAME.
 *
 * @see     Message(string, int)
 */
void Message(string& msg);

/** \~russian        .
 *
 * @param   textMsg      (. @link MsgNums Msg nums@endlink).
 * @param   strNum      .
 *
 * @remarks      @c FOMB_GAME.
 *
 * @see     Message(int, uint, int)
 */
void Message(int textMsg, uint strNum);

/** \~russian      .
 *
 * @param  msg    .
 * @param  type   
 *               (. @link MessageBoxMessageTypes MessageBox message types@endlink).
 *
 */
void Message(string& msg, int type);

/** \~russian        .
 *
 * @param  textMsg      (. @link MsgNums Msg nums@endlink).
 * @param  strNum      .
 * @param  type      
 *                  (. @link MessageBoxMessageTypes MessageBox message types@endlink).
 *
 */
void Message(int textMsg, uint strNum, int type);

/** \~russian  dat-.
 *
 *       .   :
 * -#     data
 * -#    LoadDat dat-.    
 * -# fonline.dat
 * -# critter.dat
 * -# master.dat
 *
 * @param  datName   dat-.
 */
bool LoadDat(string& datName);

/** \~russian       . */
uint GetTick();

/** \~russian    .
 *
 *   :
 * @code
 * void _FuncName(Critter& player, int param0, int param1, int param2, string@ param3, int[]@ param4)
 * @endcode
 * @arg @a player ,   .
 *
 * @param   funcName               ( ).
 * @param   p0, p1, p2, p3, p4       .
 *
 * @remarks         .
 *
 * @see Critter::RunClientScript
 */
void RunServerScript(string& funcName, int p0, int p1, int p2, string@+ p3, int[]@+ p4);

/** \~russian          .
 *
 *   :
 * @code
 * void unsafe_FuncName(Critter& player, int param0, int param1, int param2, string@ param3, int[]@ param4)
 * @endcode
 * @arg @a player ,   .
 *
 *  "unsafe_"    .
 *
 * @attention ,         
 *                      .
 *
 * @param  funcName               ( ).
 * @param  p0, p1, p2, p3, p4       .
 *
 * @see    RunServerScript
 */
void RunServerScriptUnsafe(string& funcName, int p0, int p1, int p2, string@+ p3, int[]@+ p4);

/** \~russian           .
 *
 * @param   zoneX, zoneY      .
 *
 * @return   . . @link GlobalMapFog Global map fog@endlink.
 *
 ** \~english Gets fog of the player's worldmap, at given coordinates.
 *
 * @param   zoneX, zoneY  Coordinates.
 *
 * @return  Fog type, see @link GlobalMapFog Global map fog@endlink.
 */
int GetFog(uint16 zoneX, uint16 zoneY);

/** \~russian       ini- .
 *
 * @param  key  .
 *
 * @return ,  .
 */
string@ GetIfaceIniStr(string& key);

/** \~russian            (.. ). */
void WaitPing();

//@}

/**
 * \~russian @name     
 * \~english @name String manipulation
 */
//@{

/** \~russian      MSG .
 *
 * ..        ,
 *       .
 *
 * @param  textMsg      (. @link MsgNums Msg nums@endlink).
 * @param  strNum      .
 *
 * @return   .     @c null.
 *
 * @see    #GetMsgStr(int, uint, uint)
 */
string@ GetMsgStr(int textMsg, uint strNum);

/** \~russian      MSG .
 *
 *        .
 *
 * @param  textMsg        (. @link MsgNums Msg nums@endlink).
 * @param  strNum        .
 * @param  skipCount  ,    .
 *
 * @return   .     @c null.
 *
 * @see    GetMsgStrCount
 */
string@ GetMsgStr(int textMsg, uint strNum, uint skipCount);

/** \~russian        .
 *
 * @param  textMsg      (. @link MsgNums Msg nums@endlink).
 * @param  strNum    .
 *
 * @return   ,    .
 */
uint GetMsgStrNumUpper(int textMsg, uint strNum);

/** \~russian        .
 *
 * @param  textMsg      (. @link MsgNums Msg nums@endlink).
 * @param  strNum    .
 *
 * @return   ,    .
 */
uint GetMsgStrNumLower(int textMsg, uint strNum);

/** \~russian     ,   .
 *
 * @param  textMsg      (. @link MsgNums Msg nums@endlink).
 * @param  strNum      .
 *
 * @return     .
 *
 * @see    #GetMsgStr(int, uint, uint)
 */
uint GetMsgStrCount(int textMsg, uint strNum);

/** \~russian ,         .
 *
 * @param  textMsg      (. @link MsgNums Msg nums@endlink).
 * @param  strNum      .
 *
 * @return @c true    ; @c false    .
 */
bool IsMsgStr(int textMsg, uint strNum);

/** \~russian   @a text   @a replace   @a str.
 *
 * @param  text      .
 * @param  replace   .
 * @param  str      -.
 *
 * @return     .
 */
string@ ReplaceText(const string& text, const string& replace, const string& str);

/** \~russian   @a text   @a replace   @a i.
 *
 * @param  text      .
 * @param  replace   .
 * @param  i        -.
 *
 * @return     .
 */
string@ ReplaceText(const string& text, const string& replace, int i);

/** \~russian  .
 *
 * @param  text     .
 * @param  lexems    ,   .
 *
 * @return  .
 *
 * @see    CritterCl#Lexems
 * @see    ItemCl#Lexems
 */
string@ FormatTags(const string& text, const string@+ lexems);

/** \~russian  .
 *
 * @param  font   .
 * @param  fontFileName    .
 *
 * @return  true   .
 *
 */
bool LoadFont(int font, string& fontFileName);

/** \~russian   -   .
 *
 * @param  font   .
 * @param  color   .
 *
 */
void SetDefaultFont(int font, uint color);

//@}

/**
 * \~russian @name   
 * \~english @name Coordinates system
 */
//@{

/** \~russian  ,     2   1.
 *
 * @param  fromX, fromY   1- .
 * @param  toX, toY       2- .
 *
 * @return .  : 0  -, 1  , 2  -, 3  -  ..
 */
uint8 GetDirection(uint16 fromX, uint16 fromY, uint16 toX, uint16 toY);

/** \~russian     .
 *
 * @param  hexX1, hexY1   1- .
 * @param  hexX2, hexY2   2- .
 *
 * @return     .
 */
uint GetDistantion(uint16 hexX1, uint16 hexY1, uint16 hexX2, uint16 hexY2);

/** \~russian     .
 *
 * @param  cr1   .
 * @param  cr2   .
 *
 * @return     .
 */
uint GetCrittersDistantion(CritterCl& cr1, CritterCl& cr2);

/** \~russian   @a hx, @a hy   @a dir  @a steps .
 *
 * ..      ,
 *         .
 *
 * @param [out]  hexX, hexY   .
 * @param [in]   dir          .
 * @param [in]   steps         .
 */
void MoveHexByDir(uint16& hexX, uint16& hexY, uint8 dir, uint steps);

/** \~russian    ,      .
 *
 *      , ,  
 *     .
 *
 * @param   [in]   fromHx, fromHy  C .
 * @param   [out]  toHx, toHy      ,      .
 * @param   [in]   angle              ( ).
 * @param   [in]   dist               .
 *
 * @remarks       ,
 *                  .
 *
 * @remarks  <code>(dist == 0)</code>      .
 */
void GetHexCoord(uint16 fromHx, uint16 fromHy, uint16& toHx, uint16& toHy, float angle, uint dist);

/** \~russian     .
 *
 * @param  fromHx, fromHy    .
 * @param  toHx, toHy        .
 * @param  cut             ,       .
 *
 * @return    .   ,   0.
 */
uint GetPathLength(uint16 fromHx, uint16 fromHy, uint16 toHx, uint16 toHy, uint cut);

/** \~russian           .
 *
 * @param  cr              ,    .
 * @param  toHx, toHy        .
 * @param  cut             ,       .
 *
 * @return  .   ,   0.
 */
uint GetPathLength(CritterCl& cr, uint16 toHx, uint16 toHy, uint cut);

/** (?) */
uint8 GetOffsetDir(uint16 hx, uint16 hy, uint16 tx, uint16 ty, float offset);

//@}

/**
 * \~russian @name      
 * \~english @name For visual and audio effects
 */
//@{

/** \~russian      .
 *
 * @param  fromColor   .
 * @param  toColor     .
 * @param  timeMs           .
 */
void FlushScreen(uint fromColor, uint toColor, uint timeMs);

/** \~russian       .
 *
 * @param  soundName   .
 */
void PlaySound(string& soundName);

/** \~russian       .
 *
 * @param  soundType, soundTypeExt, soundId, soundIdExt   .
 *        soundType 
 *   (. @link SoundTypes Sound types@endlink).
 */
void PlaySound(uint8 soundType, uint8 soundTypeExt, uint8 soundId, uint8 soundIdExt);

/** \~russian   .
 *
 * @param  noise    (   1  50).
 * @param  ms        .
 *
 */
void QuakeScreen(uint noise, uint ms);

/** \~russian    .
 *
 * @param  musicName     .
 * @param  pos        (?)
 * @param  repeat      ,      .
 *
 * @remarks       <i>data/sound/music</i> .
 */
void PlayMusic(string& musicName, uint pos, uint repeat);

/** \~russian    .
 *
 * @param  videoName    .
 * @param  canStop          .
 *
 * @remarks       <i>data/video</i> .
 */
void PlayVideo(string& videoName, bool canStop);

//@}

/**
 * \~russian @name     
 * \~english @name Time
 */
//@{

/** \~russian   , , , ,      .
 *
 * @param   year                      .
 * @param   month, day, hour, minute, second  , ,    .
 *
 * @return   .
 *
 * @remarks      .
 *
 * @see     GetGameTime
 */
uint GetFullSecond(uint16 year, uint16 month, uint16 day, uint16 hour, uint16 minute, uint16 second);

/** \~russian     .
 *
 * @param  [out]  year           
 * @param  [out]  month          
 * @param  [out]  day_of_week     
 * @param  [out]  day            
 * @param  [out]  hour           
 * @param  [out]  minute         
 * @param  [out]  second         
 * @param  [out]  milliseconds   
 *
 */
void GetTime(uint16& year, uint16& month, uint16& day_of_week, uint16& day,
             uint16& hour, uint16& minute, uint16& second, uint16& milliseconds);

/** \~russian       .
 *
 * @param  [in]   fullSecond      .
 * @param  [out]  year        ,    .
 * @param  [out]  month       ,    .
 * @param  [out]  dayOfWeek    ,    .
 * @param  [out]  day          ,    .
 * @param  [out]  hour        ,    .
 * @param  [out]  minute      ,    .
 * @param  [out]  minute      ,    .
 *
 * @see    GetFullSecond
 */
void GetGameTime(uint fullSecond, uint16& year, uint16& month, uint16& dayOfWeek, uint16& day, uint16& hour, uint16& minute, uint16& second);

//@}

/**
 * \~russian @name    
 * \~english @name Graphics
 */
//@{

/** \~russian       .
 *
 * @param  name        .
 * @param  pathIndex   ,    (. @link Paths@endlink).
 *
 * @return     .
 *
 * @see    DrawSprite
 */
uint LoadSprite(string& name, int pathIndex);

/** \~russian       .
 *
 * @param  nameHash      .
 * @param  dir         .    ,  0.
 *
 * @return     .
 *
 * @see    DrawSprite
 */
uint LoadSprite(uint nameHash, uint8 dir);

/** \~russian    .
 *
 * @param  sprId      .
 * @param  sprIndex     .
 */
int GetSpriteWidth(uint sprId, int sprIndex);

/** \~russian    .
 *
 * @param  sprId      .
 * @param  sprIndex     .
 */
int GetSpriteHeight(uint sprId, int sprIndex);

/** \~russian      .
 *
 * @param  sprId   .
 */
uint GetSpriteCount(uint sprId);

/** \~russian     .
 *
 * @param  sprId     .
 * @param  sprIndex    .
 *                        .
 *                       .
 * @param  x, y        .
 * @param  color     .  0   -.
 *
 * @see    #render_iface
 */
void DrawSprite(uint sprId, int sprIndex, int x, int y, uint color);

/** \~russian      .
 *
 * @param  sprId      .
 * @param  sprIndex     .
 *                         .
 *                        .
 * @param  x, y         
 * @param  w, h          .
 * @param  scratch   ,     @a w, @a h (@c true)
 *                        (@c false).
 * @param  center    ,   .
 * @param  color      .  0   -.
 *
 * @see    #render_iface
 */
void DrawSprite(uint sprId, int sprIndex,
    int x, int y, int w, int h,
    bool scratch, bool center, uint color);

/** \~russian  .
 *
 * @param  text    .
 * @param  x, y        .
 * @param  w, h       .
 * @param  color   .  0   -.
 * @param  font    (. @link Fonts@endlink).
 * @param  flags    (. @link FontFlags Font flags@endlink).
 *
 * @see #render_iface
 */
void DrawText(string& text, int x, int y, int w, int h, uint color, int font, int flags);

/** \~russian  .
 *
 *      @a data: (X, Y, Color), :
 * - @a X, @a Y   ,
 * - @a Color  .
 *
 * @param  primitiveType   
 *                        (. @link DrawPrimitiveTypes Draw primitive types@endlink).
 * @param  data             .
 *
 * @see    #render_iface
 */
void DrawPrimitive(int primitiveType, int[]& data);

/** \~russian       .
 *
 * @param    hx, hy         ,   .
 * @param    effectPid      ,     
 *                           , .    0.
 * @param    sprId          .
 * @param    sprIndex         .
 *                               .
 *                              .
 * @param    offsX, offsY     .
 *
 * @remarks     #render_map
 */
void DrawMapSprite(uint16 hx, uint16 hy,
    uint16 effectPid, uint sprId, int sprIndex, int offsX, int offsY);

/** \~russian        ,   .
 *
 * @param  crType        (.  ).
 * @param  anim1          (. @b ANIM1_*  @b _animation.fos).
 * @param  anim2          (. @b ANIM2_2D_*  @b _animation.fos).
 * @param  dir         .
 * @param  l, t, r, b     .
 * @param  scratch       .
 * @param  center        .
 * @param  color         (    -).
 */
void DrawCritter2d(uint crType, uint anim1, uint anim2, uint8 dir, int l, int t, int r, int b, bool scratch, bool center, uint color);

/** \~russian        ,   .
 *
 * @param instance     .
 *                          .
 * @param crType      (.  ).
 * @param anim1        (. @b ANIM1_*  @b _animation.fos).
 * @param anim2        (. @b ANIM2_3D_*  @b _animation.fos).
 * @param layers    C 3D .
 * @param color       (    -).
 * @param position     (    ):
 *                  - @a pos      (<c>0..1</c>)     @a x, @a y;
 *                  - @a rotate   (<c>2..4</c>)      3-  @a y, @a x, @a z (  );
 *                  - @a scale    (<c>5..7</c>)      3-  @a x, @a y, @a z;
 *                  - @a speed    (<c>8</c>)         (   );
 *                  - @a reserved (<c>9</c>)       ;
 *                  - @a stencil  (<c>10..13</c>)     (, , , ),
 *                                                       ,
 *                                                     ;
 *                                                   ,        .
 *
 * @remarks  -     @a position,
 *                 :
 *          @arg @a pos      = 0 0
 *          @arg @a rotate   = 0 0 0
 *          @arg @a scale    = 1 1 1
 *          @arg @a speed    = 1
 *          @arg @a reserved = 0
 *          @arg @a stencil  = 0 0 0 0
 */
void DrawCritter3d(uint instance, uint crType, uint anim1, uint anim2,
                   int[]@+ layers, float[]@+ position, uint color);

//@}

/**
 * \~russian @name    
 * \~english @name Screen
 */
//@{

/** \~russian       .
 *
 * @param        hx, hy   .
 * @param [out]  x, y    ,       .
 *
 * @see   GetMonitorHex
 */
bool GetHexPos(uint16 hx, uint16 hy, int& x, int& y);

/** \~russian    ,     .
 *
 * @param        x, y     .
 * @param [out]  hx, hy  ,      .
 *
 * @see   GetHexPos
 */
bool GetMonitorHex(int x, int y, uint16& hx, uint16& hy);

/** \~russian       .
 *
 * @param  x, y   .
 *
 * @return     CritterCl.
 *         @c null   ,    .
 */
CritterCl@+ GetMonitorCritter(int x, int y);

/** \~russian       .
 *
 * @param  x, y   .
 *
 * @return     ItemCl. @c null   ,    .
 */
ItemCl@+ GetMonitorItem(int x, int y);

/** \~russian     .
 *
 *    Scroll Lock  .
 *
 * @param  cr  ,    .
 */
void LockScreenScroll(CritterCl@+ cr);

/** \~russian      .
 *
 * @param  hexX, hexY   ,    .
 * @param  speed       .
 *                      0   .
 *                         : 50-100.
 */
 void MoveScreen(uint16 hexX, uint16 hexY, uint speed);

/** \~russian  .
 *
 * @param  screen        (. @link ClientScreenTypes Client screen types@endlink).
 * @param  p0, p1, p2   .
 *
 */
void ShowScreen(int screen, int p0, int p1, int p2);

/** \~russian  .
 *
 * @param  screen        (. @link ClientScreenTypes Client screen types@endlink).
 * @param  p0, p1, p2   .
 *
 */
void HideScreen(int screen, int p0, int p1, int p2);

/** \~russian    .
 *
 * @param         screen    (. @link ClientScreenTypes Client screen types@endlink).
 * @param  [out]  x, y    ,      .
 *
 */
void GetHardcodedScreenPos(int screen, int& x, int& y);

/** \~russian   .
 *
 * @param  screen    (. @link ClientScreenTypes Client screen types@endlink).
 *
 */
void DrawHardcodedScreen(int screen);

/** \~russian    .
 *
 * @return   (0 - , 1 - ).
 *
 */
int GetKeybLang();

//@}

/**
 * \~russian @name     
 * \~english @name For mouse cursors
 */
//@{

/** \~russian   .
 *
 * @return . @link Cursors@endlink.
 *
 */
int GetCurrentCursor();

/** \~russian (?)
 *
 * @return . @link Cursors@endlink.
 *
 */
int GetLastCursor();

/** \~russian  .
 *
 * @param  cursor    (. @link Cursors@endlink).
 *
 */
void ChangeCursor(int cursor);

//@}

/**
 * \~russian @name  
 * \~english @name For critters
 */
//@{

/** \~russian      .
 *
 * @param  critterId   ,    .
 *
 * @return     CritterCl   .
 *             @c null.
 */
CritterCl@+ GetCritter(uint critterId);

/** \~russian  ,    .
 *
 * @param   hexX, hexY   ,      .
 * @param   radius       ,  .
 * @param   findType      (. @link CritterFindTypes Critter find types@endlink).
 * @param   critters       ,   .
 *                             .
 *
 * @return    .
 *
 * @remarks      ,
 *            @a critters    @c null  .
 *
 * @remarks         .
 */
uint GetCrittersHex(uint16 hexX, uint16 hexY, uint radius, int findType, CritterCl@[]@+ critters);

/** \~russian   ,   .
 *
 * @param   pid        NPC (. @b _npc_pids.fos).
 *                     @a pid,  -1,  ,  -2 - NPC,  0 -   ( ,  NPC) (?).
 * @param   findType   
 *                    (. @link CritterFindTypes Critter find types@endlink).
 * @param   critters     .
 *                           .
 *
 * @return    .
 *
 * @remarks      ,
 *            @a critters    @c null  .
 */
uint GetCritters(uint16 pid, int findType, CritterCl@[]@+ critters);

/** \~russian         ,   .
 *
 * @param   fromHx, fromHy    .
 * @param   toHx, toHy        .
 * @param   angle             ,  .
 * @param   dist              .
 * @param   findType         
 *                          (. @link CritterFindTypes Critter find types@endlink).
 * @param   critters           ,   .
 *                                 .
 *
 * @return    .
 *
 * @remarks      ,
 *            @a critters    @c null  .
 */
uint GetCrittersPath(uint16 fromHx, uint16 fromHy,
    uint16 toHx, uint16 toHy,
    float angle, uint dist, int findType, CritterCl@[]@+ critters);

/** \~russian         ,   .
 *
 * @param          fromHx, fromHy            .
 * @param          toHx, toHy                .
 * @param          angle                     ,  .
 * @param          dist                      .
 * @param          findType                 
 *                                         (. @link CritterFindTypes Critter find types@endlink).
 * @param          critters                   ,   .
 *                                                .
 * @param   [out]  preBlockHx, preBlockHy     .
 * @param   [out]  blockHx, blockHy          .
 *
 * @return    .
 *
 * @remarks   @a preBlock  @a block,     .
 *
 * @remarks      ,
 *            @a critters    @c null  .
 */
uint GetCrittersPath(uint16 fromHx, uint16 fromHy,
    uint16 toHx, uint16 toHy,
    float angle, uint dist, int findType, CritterCl@[]@+ critters,
    uint16& preBlockHx, uint16& preBlockHy, uint16& blockHx, uint16& blockHy);

//@}

/**
 * \~russian @name  
 */
//@{

/** \~russian   ini .
 *
 * @param  iniName    ini .    ,      data,  ,    data/art/intrface/.
   default.ini.
 * @return true   .
 *
 */
bool AppendIfaceIni(string& iniName)

//@}

/*@}*/
