#ifndef __INC_POS_SGOS_SGOS_H
#define __INC_POS_SGOS_SGOS_H
/*******************************************************************
 Includes Release 24
 (C) Copyright 1995-1997 proDAD
     All Rights Reserved

 $AUT Holger Burkarth
 $DAT >>SGOS.h<<   24 Mar 1997    10:06:35 - (C) ProDAD
*******************************************************************/

#ifndef __INC_POS_PEXEC_LIST_H
#include <pExec/List.h>
#endif
#ifndef __INC_POS_PLAYER_CLIP_H
#include <pLayer/Clip.h>
#endif





/*----------------------------------
-----------------------------------*/
struct pOS_SGObject
{
  struct pOS_ExNode     sgo_Node;
  struct pOS_SGOInfo   *sgo_Info;

  UWORD                 sgo_Size;
  UWORD                 sgo_Width, sgo_Height;
  SLONG                 sgo_OldX, sgo_OldY;
  SLONG                 sgo_X, sgo_Y;

  ULONG                 sgo_HitID, sgo_HitMask;

  ULONG                 sgo_Flags;

  ULONG                 sgo_FrameCount;
  ULONG                 sgo_CurFrame;
  ULONG                 sgo_MaskCount;
  ULONG                 sgo_CurMask;
  struct pOS_GfxMap   **sgo_GfxMaps;
  struct pOS_GfxMap    *sgo_GfxMap;
  struct pOS_GfxMap   **sgo_Masks;
  struct pOS_GfxMap    *sgo_Mask;

  VOID                (*sgo_Move_func)(_R_A0 struct pOS_SGObject*);
  VOID                (*sgo_BorCollision_func)(_R_A0 struct pOS_SGObject*,_R_A1 struct pOS_IBox*,_R_D0 UWORD);
  ULONG               (*sgo_AnimObj_func)(_R_A0 struct pOS_SGObject*);
  ULONG               (*sgo_AnimMask_func)(_R_A0 struct pOS_SGObject*);

  ULONG                 sgo_UserData[2];

  /***** SYSTEM-DATA *****/
};


/*----------------------------------
-----------------------------------*/
struct pOS_SGOInfo
{
  struct pOS_ExList     sgoi_ActiveList;
  struct pOS_ExList     sgoi_InactiveList;

  struct pOS_Window    *sgoi_Window;
  struct pOS_RastPort  *sgoi_RastPort;

  struct pOS_IBox       sgoi_ClipBox;

  ULONG                 sgoi_TimeDelay;
  SBYTE                 sgoi_Pri;
  UBYTE                 Pad0;
  ULONG                 sgoi_UserData[2];

  VOID                (*sgoi_CollHandler[32])(_R_A0 struct pOS_SGObject*,_R_A1 struct pOS_SGObject*);

  /***** SYSTEM-DATA *****/
};



enum pOS_SGOSDrawModes
{
  SGOSDM_Normal = 0,
  SGOSDM_Refresh,
};

enum pOS_SGObjectFlags
{
  SGOF_MustDraw       = (1L <<  0),
  SGOF_AnimObj        = (1L <<  1),
  SGOF_UseMask        = (1L <<  2),
  SGOF_AnimMask       = (1L <<  3),

  SGOF_Delete         = (1L <<  4),
  SGOF_Inactivate     = (1L <<  5)
};


enum pOS_SGOSBorCollBits
{
  SGOBCB_Left         = (1 << 0),
  SGOBCB_Right        = (1 << 1),
  SGOBCB_Top          = (1 << 2),
  SGOBCB_Bottom       = (1 << 3)
};


#endif
