mirror of
https://github.com/jmarshall23/CnC_Remastered_Collection.git
synced 2026-08-12 08:00:55 +02:00
90 lines
1.6 KiB
C++
90 lines
1.6 KiB
C++
// VQAMOVIE.CPP
|
|
//
|
|
|
|
#include "FUNCTION.H"
|
|
#include "VQAMOVIE.H"
|
|
#include "AUDIOMIX.H"
|
|
#include <SDL.h>
|
|
#include <ctime>
|
|
#include "image.h"
|
|
|
|
|
|
/*
|
|
==================
|
|
_VQAHandle::_VQAHandle
|
|
==================
|
|
*/
|
|
_VQAHandle::_VQAHandle() {
|
|
|
|
}
|
|
|
|
/*
|
|
==================
|
|
_VQAHandle::~_VQAHandle
|
|
==================
|
|
*/
|
|
_VQAHandle::~_VQAHandle() {
|
|
|
|
}
|
|
|
|
long VQA_Open(_VQAHandle *videoHandle, char const* filename) {
|
|
int ret;
|
|
char fullpath[512];
|
|
|
|
sprintf(fullpath, "movies/%s.mp4", filename);
|
|
if(!videoHandle->InitFromFile(fullpath, false)) {
|
|
return -1;
|
|
}
|
|
|
|
sprintf(fullpath, "movies/english/%s.wav", filename);
|
|
AudMix_PlayMovieAudio(fullpath);
|
|
|
|
return (0);
|
|
}
|
|
|
|
void VQA_Free(_VQAHandle* vqaHandle) {
|
|
delete vqaHandle;
|
|
}
|
|
|
|
void VQA_Close(_VQAHandle* vqaHandle) {
|
|
|
|
}
|
|
long VQA_Play(_VQAHandle* vqaHandle) {
|
|
float VideoStartTime = Sys_Milliseconds() * 0.001;
|
|
float VideoEndTime = VideoStartTime + vqaHandle->AnimationLength();
|
|
|
|
|
|
while (true) {
|
|
SDL_Event event;
|
|
float floatTime = Sys_Milliseconds() * 0.001;
|
|
|
|
// Check for any new SDL events.
|
|
while (SDL_PollEvent(&event)) {
|
|
if (event.type == SDL_KEYDOWN) {
|
|
//delete raw_image_buffer;
|
|
AudMix_StopMovieAudio();
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
cinData_t cin = vqaHandle->ImageForTime((int)(1000 * (floatTime - VideoStartTime)));
|
|
if (cin.image && cin.rawbuffer)
|
|
{
|
|
Image_UploadRaw(cin.image, cin.rawbuffer, false, NULL, false);
|
|
}
|
|
if(cin.image == NULL) {
|
|
AudMix_StopMovieAudio();
|
|
return 0;
|
|
}
|
|
|
|
GL_RenderImage(cin.image, 0, 0, ScreenWidth, ScreenHeight);
|
|
|
|
Device_Present();
|
|
}
|
|
|
|
AudMix_StopMovieAudio();
|
|
|
|
return (0);
|
|
}
|
|
|