// Supported with union (c) 2018 Union team

#ifndef __ZVIEW_FX_H__VER1__
#define __ZVIEW_FX_H__VER1__

namespace Gothic_I_Addon {

  class zCViewFX : public zCViewDraw {
  public:
    zCLASS_DECLARATION( zCViewFX )

    typedef enum zEViewFX {
      VIEW_FX_NONE        = 0,
      VIEW_FX_ZOOM        = 1,
      VIEW_FX_FADE        = VIEW_FX_ZOOM << 1,
      VIEW_FX_BOUNCE      = VIEW_FX_FADE << 1,
      VIEW_FX_FORCE_DWORD = 0xffffffff
    } zTViewFX;

    int HasOpened;
    int HasClosed;
    float TimeOpen;
    float TimeClose;
    float DurationOpen;
    float DurationClose;
    unsigned long ModeOpen;
    unsigned long ModeClose;
    zVEC2 TextureOffset[2];

    void zCViewFX_OnInit()                                                                           zCall( 0x007963E0 );
    zCViewFX()                                                                                       zInit( zCViewFX_OnInit() );
    void __fastcall Init( zCViewObject*, int, unsigned long, unsigned long, float, float, zSTRING& ) zCall( 0x007964E0 );
    void __fastcall Open()                                                                           zCall( 0x00796570 );
    void __fastcall OpenSafe()                                                                       zCall( 0x007965A0 );
    void __fastcall OpenImmediately()                                                                zCall( 0x00796620 );
    void __fastcall Close()                                                                          zCall( 0x00796640 );
    void __fastcall CloseSafe()                                                                      zCall( 0x00796680 );
    void __fastcall CloseImmediately()                                                               zCall( 0x007966F0 );
    void __fastcall ApplyOpenCloseFX()                                                               zCall( 0x00796710 );
    void __fastcall ApplyOpenFX()                                                                    zCall( 0x00796990 );
    void __fastcall ApplyCloseFX()                                                                   zCall( 0x00796AC0 );
    void __fastcall ApplyOpenFade()                                                                  zCall( 0x00796BE0 );
    void __fastcall ApplyOpenZoom()                                                                  zCall( 0x00796C30 );
    void __fastcall ApplyCloseFade()                                                                 zCall( 0x00796CD0 );
    void __fastcall ApplyCloseZoom()                                                                 zCall( 0x00796D20 );
    static zCObject* _CreateNewInstance()                                                            zCall( 0x007962B0 );
    /* for zCObject num : 7*/
    virtual zCClassDef* _GetClassDef() const                                                         zCall( 0x007963D0 );
    virtual ~zCViewFX()                                                                              zCall( 0x007964C0 );
    virtual void __fastcall EvaluateTexturePosition()                                                zCall( 0x00796EE0 );
    virtual void __fastcall Blit()                                                                   zCall( 0x00796DB0 );
    /* for zCViewBase num : 8*/

    // user API
    #include "zCViewFX.inl"
  };

} // namespace Gothic_I_Addon

#endif // __ZVIEW_FX_H__VER1__