// programmer : ANDY
// website    : http://tw.myblog.yahoo.com/mmogc3d-mmogc3d/
// last date  : 2009.06.03

 

#ifndef __AV_ANI_SCRIPT_H

#define __AV_ANI_SCRIPT_H

 

#include <windows.h>

 

#define DLL_EXPORT_DEFINE __declspec( dllexport )

 

//=============================================================================================================================================================

enum _ANI_COMMAND_TYPE_

{

    ANI_COMMAND__NULL,

 

    ANI_COMMAND__CREATE_ANI,

    ANI_COMMAND__CREATE_RECT,

    ANI_COMMAND__CTRL_ANI_START,

    ANI_COMMAND__CTRL_ANI_END,

    ANI_COMMAND__SET_ANI_RANGE,

    ANI_COMMAND__PLAY_ANI_RANGE,

    ANI_COMMAND__PLAY_ANI,

    ANI_COMMAND__CONTINUE_PLAY_ANI,

    ANI_COMMAND__WAIT_ANI,

    ANI_COMMAND__WAIT_ALL_ANI,

    ANI_COMMAND__WAIT,

    ANI_COMMAND__BREAK,

    ANI_COMMAND__PLAY_SOUND,

    ANI_COMMAND__SET_ANI,

    ANI_COMMAND__SET_IMAGE,

    ANI_COMMAND__SET_POS,

    ANI_COMMAND__SET_DELAY,

    ANI_COMMAND__SET_COLOR,

    ANI_COMMAND__SET_R,

    ANI_COMMAND__SET_G,

    ANI_COMMAND__SET_B,

    ANI_COMMAND__SET_A,

    ANI_COMMAND__SET_PIC_INDEX,

    ANI_COMMAND__SET_COUNT,

    ANI_COMMAND__SET_LAYER,

    ANI_COMMAND__SHOW_PIC,

    ANI_COMMAND__ADD_X,

    ANI_COMMAND__ADD_Y,

    ANI_COMMAND__FADE_IN,

    ANI_COMMAND__FADE_OUT,

    ANI_COMMAND__CALL_FUNC,

    ANI_COMMAND__CALL_SCRIPT,

    ANI_COMMAND__END_ANI,

    ANI_COMMAND__END,

 

 

    ANI_COMMAND_MAX, // don't use.

};

 

//=============================================================================================================================================================

#define A_RENDER_STATE__COLOR_KEY  1

 

class DLL_EXPORT_DEFINE AniScriptEventInterface

{

public :

    //------------------------------------------------------------

    virtual void  vOnScriptDraw( DWORD image_index, long x, long y, DWORD pic_index, RECT *rect = NULL, DWORD show_type = A_RENDER_STATE__COLOR_KEY, BYTE r = 255, BYTE g = 255, BYTE b = 255, BYTE a = 255 ){}

    virtual void  vOnScriptColorRect( RECT *rect, BYTE r = 255, BYTE g = 255, BYTE b = 255, BYTE a = 255 ){}

    virtual DWORD vOnScriptGetImageCount( DWORD image_index ){ return 0; }

    virtual void  vOnScriptPlaySound( void *user_info, DWORD sound_index ){}

    virtual void  vOnScriptExtraFunc( void *user_info, DWORD script_index, DWORD manage_number, DWORD func_index ){}

    virtual void  vOnScriptAniUpdate( void *user_info, DWORD script_index, DWORD manage_number, DWORD ani_number, DWORD pic_index ){}

    virtual void  vOnScriptAniEnd( void *user_info, DWORD script_index, DWORD manage_number, DWORD ani_number ){}

    virtual void  vOnScriptEnd( void *user_info, DWORD script_index, DWORD manage_number ){}

    //------------------------------------------------------------

};

 

//=============================================================================================================================================================

class DLL_EXPORT_DEFINE AniScriptComponent

{

public :

    //------------------------------------------------------------

    static AniScriptComponent* sCreate( AniScriptEventInterface *this_link, void *user_info, DWORD ani_script_max, DWORD table_y_max = 512, DWORD temp_pointer_buffer_max = 32, DWORD buffer_bytes_max = (1024 * 1024) * 1 );

    virtual void vRelease() = 0;

    //------------------------------------------------------------

    virtual BOOL vLoadScriptFile( WCHAR *path_file_name, DWORD script_index, BOOL decode_flag = FALSE ) = 0;

    virtual BOOL vRunScript( DWORD script_index, DWORD manage_number, DWORD layer_index = 0 ) = 0; // layer_index 0~2

    virtual BOOL vPlayAni() = 0;

    virtual BOOL vPlayToEndScript( DWORD manage_number, DWORD layer_index = 0 ) = 0;

    virtual BOOL vStopScript( DWORD manage_number, DWORD layer_index = 0 ) = 0; // layer_index 0~2

    virtual BOOL vSetParameter( DWORD manage_number, DWORD parameter_index, long parameter_value, DWORD layer_index = 0 ) = 0;

    virtual BOOL vCheckScriptPlaying( DWORD manage_number, DWORD layer_index = 0 ) = 0;

    virtual void vSetAniDisplayFlag( BOOL flag ) = 0;

    //------------------------------------------------------------

};

 

#endif

 

// eof