#ifndef GMS_MISC_H
#define GMS_MISC_H TRUE

/*
**	$VER: misc.h V0.7B
**
**      (C) Copyright 1996-1997 DreamWorld Productions.
**          All Rights Reserved
*/

/***********************************************************************************
** Object entries.
*/

struct ObjectEntry { /* Entry stucture for GetObjectList() */
  char  *Name;       /* Pointer to the name, may be NULL */
  APTR  Object;      /* Object is returned here */
};

struct DataHeader {  /* Private structure for object headers */
  ULONG Type;        /* Type of object, eg STRC, CODE, DATA */
  ULONG Next;        /* Offset towards next object */
/*char Name[];          The name of the object */
};

/***********************************************************************************
** Universal Structure, used in the CopyStructure() routine.
*/

struct Universe {
  WORD	ID;
  WORD	Version;
  APTR	Palette;
  WORD	Planes;
  WORD	ScrWidth;
  WORD	ScrHeight;
  WORD	PicWidth;
  WORD	PicByteWidth;
  WORD	PicHeight;
  APTR	Task;
  LONG	PlaneSize;
  LONG	AmtColours;
  WORD	ScrMode;
  WORD	ScrType;
  APTR	File;
  APTR	ScreenLink;
  APTR	Rasterlist;
  WORD	ScrXOffset;
  WORD	ScrYOffset;
  WORD	PicYOffset;
  WORD	PicXOffset;
  WORD	Channel;
  WORD	Priority;
  LONG	Length;
  WORD	Octave;
  WORD	Volume;
};

/***********************************************************************************
** Special Keypresses that can be returned from ReadKey() are listed here.  All
** other keys can be considered to be in ASCII format.
*/

struct Keys {
  WORD  KP_ID;
  BYTE  KP_Key1;
  BYTE  KP_Key2;
  BYTE  KP_Key3;
  BYTE  KP_Key4;
};

#define K_SCS    0x80       /* Screen switch (LEFTAMIGA + M) */
#define K_DEL    0x81
#define K_HELP   0x82

#define K_LSHIFT 0x83
#define K_RSHIFT 0x84
#define K_CAPS   0x85
#define K_CTRL   0x86
#define K_LALT   0x87
#define K_RALT   0x88
#define K_LAMIGA 0x89
#define K_RAMIGA 0x8a

#define K_F1  0x8b
#define K_F2  0x8c
#define K_F3  0x8d
#define K_F4  0x8e
#define K_F5  0x8f
#define K_F6  0x90
#define K_F7  0x91
#define K_F8  0x92
#define K_F9  0x93
#define K_F10 0x94
#define K_F11 0x95
#define K_F12 0x96
#define K_F13 0x97
#define K_F14 0x98
#define K_F15 0x99
#define K_F16 0x9a
#define K_F17 0x9b
#define K_F18 0x9c
#define K_F19 0x9d
#define K_F20 0x9e

#define C_UP     0x9f
#define C_DOWN   0xa0
#define C_RIGHT  0xa1
#define C_LEFT   0xa2

#define K_SRIGHT 0xa3       /* Special key on right */
#define K_SLEFT  0xa4       /* Special key on left */

/* --- Special keys that are recognised under ASCII (here for convenience)*/

#define K_BAKSPC 08
#define K_TAB    09
#define K_ENTER  10
#define K_RETURN 10
#define K_ESC    0x1b

#endif
