/* * Descent 3 * Copyright (C) 2024 Parallax Software * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ // BriefMovieEdit.cpp : implementation file // #include "stdafx.h" #include "editor.h" #include "BriefMovieEdit.h" #include "manage.h" #include "BriefMissionFlagsDlg.h" #include "ddio.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CBriefMovieEdit dialog CBriefMovieEdit::CBriefMovieEdit(TCMOVIEDESC *d, CWnd *pParent /*=NULL*/) : CDialog(CBriefMovieEdit::IDD, pParent) { //{{AFX_DATA_INIT(CBriefMovieEdit) m_sFilename = _T(""); m_fFPS = 0.0f; m_bLooping = FALSE; m_fStartTime = 0.0f; m_iX = 0; m_iY = 0; m_sDesc = _T(""); //}}AFX_DATA_INIT memset(&desc, 0, sizeof(TCMOVIEDESC)); // set defaults desc.fps = 20.0f; desc.mission_mask_set = 0; desc.mission_mask_unset = 0; if (d) { // get given values) desc.caps = d->caps; if (d->caps & TCMD_XY) { desc.x = d->x; desc.y = d->y; } if (d->caps & TCMD_LOOPING) desc.looping = d->looping; if (d->caps & TCMD_WAITTIME) desc.waittime = d->waittime; if (d->caps & TCMD_FPS) desc.fps = d->fps; desc.mission_mask_set = d->mission_mask_set; desc.mission_mask_unset = d->mission_mask_unset; strcpy(desc.filename, d->filename); } // fill in with whats valid m_sFilename = desc.filename; m_fFPS = desc.fps; m_bLooping = desc.looping; m_fStartTime = desc.waittime; m_iX = desc.x; m_iY = desc.y; } void CBriefMovieEdit::DoDataExchange(CDataExchange *pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CBriefMovieEdit) DDX_Text(pDX, IDC_BRIEF_M_FILENAME, m_sFilename); DDX_Text(pDX, IDC_BRIEF_M_FPS, m_fFPS); DDV_MinMaxFloat(pDX, m_fFPS, 0.f, 100.f); DDX_Check(pDX, IDC_BRIEF_M_LOOPING, m_bLooping); DDX_Text(pDX, IDC_BRIEF_M_STARTTIME, m_fStartTime); DDV_MinMaxFloat(pDX, m_fStartTime, 0.f, 99999.f); DDX_Text(pDX, IDC_BRIEF_M_X, m_iX); DDV_MinMaxInt(pDX, m_iX, 0, 639); DDX_Text(pDX, IDC_BRIEF_M_Y, m_iY); DDV_MinMaxInt(pDX, m_iY, 0, 479); DDX_Text(pDX, IDC_BRIEF_M_DESC, m_sDesc); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CBriefMovieEdit, CDialog) //{{AFX_MSG_MAP(CBriefMovieEdit) ON_BN_CLICKED(IDC_BRIEF_M_CHOOSE, OnBriefMChoose) ON_BN_CLICKED(IDC_MISSIONFLAGS, OnMissionflags) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CBriefMovieEdit message handlers void CBriefMovieEdit::OnBriefMChoose() { UpdateData(true); char szFilter[] = "Outrage Movie Files (*.mve)|*.mve||"; CFileDialog dlg(true, NULL, NULL, OFN_HIDEREADONLY | OFN_FILEMUSTEXIST, szFilter); if (dlg.DoModal() == IDOK) { // handle m_sFilename = dlg.GetFileName(); UpdateData(false); } } void CBriefMovieEdit::OnOK() { UpdateData(true); char path[_MAX_PATH]; ddio_MakePath(path, LocalD3Dir, "Movies", m_sFilename.GetBuffer(1), NULL); if (!cfexist(path)) { MessageBox("Invalid Filename", "Error"); return; } desc.caps = TCMD_XY | TCMD_LOOPING | TCMD_WAITTIME | TCMD_FPS; strcpy(desc.filename, m_sFilename.GetBuffer(0)); desc.fps = m_fFPS; desc.looping = (bool)(m_bLooping != 0); desc.waittime = m_fStartTime; desc.x = m_iX; desc.y = m_iY; CDialog::OnOK(); } BOOL CBriefMovieEdit::OnInitDialog() { CDialog::OnInitDialog(); UpdateData(false); return TRUE; } void CBriefMovieEdit::OnMissionflags() { CBriefMissionFlagsDlg dlg(desc.mission_mask_set, desc.mission_mask_unset); if (dlg.DoModal()) { desc.mission_mask_set = dlg.m_Set; desc.mission_mask_unset = dlg.m_UnSet; } }