/* ** Command & Conquer Renegade(tm) ** Copyright 2025 Electronic Arts Inc. ** ** 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 . */ /*********************************************************************************************** *** C O N F I D E N T I A L --- W E S T W O O D S T U D I O S *** *********************************************************************************************** * * * Project Name : leveledit * * * * $Archive:: /Commando/Code/Tools/LevelEdit/mixfiledatabase.h $* * * * Author:: Patrick Smith * * * * $Modtime:: 3/26/02 1:33p $* * * * $Revision:: 3 $* * * *---------------------------------------------------------------------------------------------* * Functions: * * - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */ #if defined(_MSC_VER) #pragma once #endif #ifndef __MIXFILEDATABASE_H #define __MIXFILEDATABASE_H #include "assetdatabase.h" #include "wwstring.h" #include "ffactory.h" #include "ffactorylist.h" ////////////////////////////////////////////////////////////////////// // Forward declarations ////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////// // // MixFileDatabaseClass // ////////////////////////////////////////////////////////////////////// class MixFileDatabaseClass : public AssetDatabaseClass { public: /////////////////////////////////////////////////////////////////// // Public constructors/destructors /////////////////////////////////////////////////////////////////// MixFileDatabaseClass (void); virtual ~MixFileDatabaseClass (void); /////////////////////////////////////////////////////////////////// // Public methods /////////////////////////////////////////////////////////////////// // // Database methods // bool Open_Database (LPCTSTR ini_filename, LPCTSTR username = NULL, LPCTSTR password = NULL); // // File manipulation methods // bool Add_File (LPCTSTR local_filename, LPCTSTR comment = NULL) { return true; } bool Check_In (LPCTSTR local_filename, LPCTSTR comment = NULL) { return true; } bool Check_Out (LPCTSTR local_filename, bool get_locally = true); bool Undo_Check_Out (LPCTSTR local_filename) { return true; } bool Get (LPCTSTR local_filename); bool Get_Subproject (LPCTSTR local_filename) { return true; } bool Get_All (LPCTSTR dest_path, LPCTSTR search_mask); FileClass * Get_File (LPCTSTR local_filename); void Find_Files (DynamicVectorClass &file_list, LPCTSTR search_mask); // // Extended methods which provide UI // bool Check_Out_Ex (LPCTSTR local_filename, HWND parent_wnd) { return true; } bool Check_In_Ex (LPCTSTR local_filename, HWND parent_wnd) { return true; } // // Retry methods // bool Retry_Check_Out (LPCTSTR local_filename, int attempts = 1, int delay = 250) { return true; } bool Retry_Check_In (LPCTSTR local_filename, int attempts = 1, int delay = 250) { return true; } // // File information methods // FILE_STATUS Get_File_Status (LPCTSTR local_filename, StringClass *checked_out_user_name = NULL) { return CHECKED_OUT_TO_ME; } bool Is_File_Different (LPCTSTR local_filename) { return (Does_File_Exist (local_filename) == false); } bool Does_File_Exist (LPCTSTR local_filename); // // User information // BOOL Is_Read_Only (void) const { return FALSE; } // // Misc information // const char * Get_Mix_File_Path (void) const { return MixFilePath; } // // Static methods // static MixFileDatabaseClass * Get_Instance (void) { return _TheInstance; } protected: /////////////////////////////////////////////////////////////////// // Protected methods /////////////////////////////////////////////////////////////////// bool Copy_File (FileClass *file, LPCTSTR local_filename); void Create_Directory_Structure (LPCTSTR path); bool Internal_Does_File_Exist (LPCSTR filename); bool Internal_Get (LPCSTR filename, LPCSTR local_path); bool Is_Texture (LPCSTR filename); void Swap_Texture_Extension (StringClass &filename); void Get_Filename (LPCTSTR path, StringClass &filename); /////////////////////////////////////////////////////////////////// // Protected member data /////////////////////////////////////////////////////////////////// StringClass ModName; StringClass ModAssetPath; StringClass MixFilePath; FileFactoryListClass MainFileFactory; SimpleFileFactoryClass RenegadeDataFileFactory; static MixFileDatabaseClass * _TheInstance; }; #endif //__MIXFILEDATABASE_H