/***** All content © 2010 DigiPen (USA) Corporation, all rights reserved. ****/
/*! \file    PluginInterface.h
**  \author  Nathan Williams
**  \par     email: nwilliam\@digipen.edu
**  \date    04/05/2010
**  \brief   Common interface for all DIDCGAF plugins.
*******************************************************************************/

#ifndef DP_PLUGIN_INTERFACE_H
#define DP_PLUGIN_INTERFACE_H

/* Plugin functions must have undecorated names and cdecl calling convention. */
#ifdef __cplusplus
extern "C" {
#endif


/******************************************************************************/
/* BEGIN API 0.1 */
/******************************************************************************/
int Init(void);
void Shutdown(void);

const char* Name(void);
const char* Author(void);
const char* Type(void);
const char* Version(void);
const char* APIVersion(void);
int NumberOfPlayers(void);

void* CreateGame(void);
int SetGameOption(void* game, const char* option);
int AddPlayer(void* game, void* player);
int RemovePlayer(void* game, void* player);
void* GetPlayer(void* game, int playerNumber);
int GetPlayerNumber(void* game, void* player);
int PlayerCount(void* game);

int StartGame(void* game);
void* GetNextPlayer(void* game);
int ValidateMove(void* game, void* player, const char* move);
int GetGameStatus(void* game);
void DestroyGame(void* game);
/******************************************************************************/
/* END API 0.1 */
/******************************************************************************/


#ifdef __cplusplus
}
#endif

#endif /* DP_PLUGIN_INTERFACE_H */