#ifndef _FLICPLAY_H_
#define _FLICPLAY_H_
#include "brender/br_types.h"
#include "dr_types.h"
extern int gPalette_allocate_count;
extern int gPalette_fuck_prevention;
extern int gDark_mode;
extern int gTransparency_on;
extern int gPanel_flic_disable;
extern int gPending_flic;
extern int gPlay_from_disk;
extern int gTrans_enabled;
extern br_pixelmap* gPanel_buffer[2];
extern tU32 gSound_time;
extern tFlic_spec gMain_flic_list[372];
extern int gFlic_bunch0[29];
extern int gFlic_bunch1[31];
extern int gFlic_bunch2[8];
extern int gFlic_bunch3[13];
extern int gFlic_bunch4[22];
extern int gFlic_bunch5[5];
extern int gFlic_bunch6[51];
extern int gFlic_bunch7[7];
extern int gFlic_bunch8[16];
extern tFlic_bunch gFlic_bunch[9];
extern char gLast_flic_name[14];
extern tU32 gPanel_flic_data_length[2];
extern tU32 gLast_panel_frame_time[2];
extern tU8* gPanel_flic_data[2];
extern int gPanel_flic_top[2];
extern tFlic_descriptor gPanel_flic[2];
extern int gPanel_flic_left[2];
extern int gPending_pending_flic;
extern int gSound_ID;
extern int gTranslation_count;
extern tDR_font* gTrans_fonts[15];
extern tTranslation_record* gTranslations;
extern br_pixelmap* gPalette;
extern void* gPalette_pixels;
extern tFlic_descriptor* gFirst_flic;
void EnableTranslationText(void);
void DisableTranslationText(void);
void SetFlicSound(int pSound_ID, tU32 pSound_time);
int TranslationMode(void);
void DontLetFlicFuckWithPalettes(void);
void LetFlicFuckWithPalettes(void);
void PlayFlicsInDarkness(void);
void ReilluminateFlics(void);
void TurnFlicTransparencyOn(void);
void TurnFlicTransparencyOff(void);
void PlayFlicsFromDisk(void);
void PlayFlicsFromMemory(void);
int FlicsPlayedFromDisk(void);
void TurnOffPanelFlics(void);
void TurnOnPanelFlics(void);
int GetPanelFlicFrameIndex(int pIndex);
void FlicPaletteAllocate(void);
void AssertFlicPixelmap(tFlic_descriptor_ptr pFlic_info, br_pixelmap* pDest_pixelmap);
int StartFlic(char* pFile_name, int pIndex, tFlic_descriptor_ptr pFlic_info, tU32 pSize, tS8* pData_ptr, br_pixelmap* pDest_pixelmap, int pX_offset, int pY_offset, int pFrame_rate);
void FreeFlicPaletteAllocate(void);
int EndFlic(tFlic_descriptor_ptr pFlic_info);
void DoColourMap(tFlic_descriptor_ptr pFlic_info, tU32 chunk_length);
void DoDifferenceX(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoDifferenceTrans(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoColour256(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoDeltaTrans(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoDeltaX(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoBlack(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoRunLengthX(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoRunLengthTrans(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoUncompressed(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoUncompressedTrans(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DoMini(tFlic_descriptor* pFlic_info, tU32 chunk_length);
void DrawTranslations(tFlic_descriptor* pFlic_info, int pLast_frame);
int PlayNextFlicFrame2(tFlic_descriptor* pFlic_info, int pPanel_flic);
int PlayNextFlicFrame(tFlic_descriptor* pFlic_info);
int PlayFlic(int pIndex, tU32 pSize, tS8* pData_ptr, br_pixelmap* pDest_pixelmap, int pX_offset, int pY_offset, void (*DoPerFrame)(void), int pInterruptable, int pFrame_rate);
void SwapScreen(void);
void ShowFlic(int pIndex);
void InitFlics(void);
int LoadFlic(int pIndex);
void UnlockFlic(int pIndex);
int LoadFlicData(char* pName, tU8** pData, tU32* pData_length);
void FreeFlic(int pIndex);
void ForceRunFlic(int pIndex);
void RunFlicAt(int pIndex, int pX, int pY);
void RunFlic(int pIndex);
void PreloadBunchOfFlics(int pBunch_index);
void UnlockBunchOfFlics(int pBunch_index);
void FlushAllFlics(int pBunch_index);
void InitFlicQueue(void);
int FlicQueueFinished(void);
void ProcessFlicQueue(tU32 pInterval);
void FlushFlicQueue(void);
void AddToFlicQueue(int pIndex, int pX, int pY, int pMust_finish);
void InitialiseFlicPanel(int pIndex, int pLeft, int pTop, int pWidth, int pHeight);
void DisposeFlicPanel(int pIndex);
void ServicePanelFlics(int pCopy_to_buffer);
void ChangePanelFlic(int pIndex, tU8* pData, tU32 pData_length);
br_pixelmap* GetPanelPixelmap(int pIndex);
void LoadInterfaceStrings(void);
void FlushInterfaceFonts(void);
void SuspendPendingFlic(void);
void ResumePendingFlic(void);
#endif