Форум: "Media";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
ВнизРесурсы !!! Найти похожие ветки
← →
Sword-Fish (2003-03-31 17:00) [0]Добрый вечер (или ДЕНЬ) !!! У меня такой вопрос к Вам !!!
Я создал прогу-упаковщик игровых ресурсов и с помощью нее упаковываю свои текстуры в один файл !!!
Я смотрю если текстура *.bmp, то я я ее упаковываю одним методом, а если
*.jpg, то другим !!!
***
if UpperCase(ExtractFileExt(SourceFileList.Items[I]))=".JPG" then begin
MyJpeg.LoadFromFile(SourceFileList.Items[I]);
MyJpeg.SaveToStream(ResourceStream);
end;
***
***
if UpperCase(ExtractFileExt(SourceFileList.Items[I]))=".BMP" then begin
MyBitmap.LoadFromFile(SourceFileList.Items[i]);
MyBitmap.SaveToStream(ResourceStream);
end;
***
Упаковываю я через Stream !!!
Так вот ... как мне узнать (когда я уже в игре запустил свой "pack" с текстурами) какой там рисунок (bmp или jpg) ???
Или спрошу проще !!! Когда рисунок загружен в Stream, как узнать чем он являеться JPG or BMP ???
← →
Mystic (2003-03-31 17:09) [1]Запиши перед сигнатуру того, что ты пишешь...
← →
Владимир Васильев (2003-03-31 17:19) [2]а ещё лучше организовать в таком паке что-то типа FAT
← →
Sword-Fish (2003-04-01 11:06) [3]А как мне FAT организовать ????
Дайте какую-нибудь документацию !!!
Пожалуйста ...
← →
Владимир Васильев (2003-04-01 11:52) [4]Самый простой способ:
Пусть надо запаковать N=3 файла с именами FileName1,FileName2,FileName3.
Далее псевдокод !!! :
Var
N : Integer;
OutFileName,FileName1,FileName2,FileName3 : String;
CommonFileStream, InFileStream : TFileStream;
IsPacked, IsCrypted : Boolean;
.....
1
// создать общий выходной поток для сохранения всех файлов
CommonFileStream.Create(OutFileName);
2
//сохранить количество файлов
CommonFileStream.Write(N);
3
// создать поток и загрузить в него первый файл
InFileStream.Create(FileName1);
4
//здесь можно поток сжать(Pack) и/или зашифровать (Crypt)
if IsPacked then Pack(InFileStream);
if IsCrypted then Crypt(InFileStream);
5
//сохранить название файла
CommonFileStream.Write(Length(FileName1));
CommonFileStream.Write(FileName1);
6
//записать флаги паковки и шифрования
CommonFileStream.Write(IsPacked);
CommonFileStream.Write(IsCrypted);
7
//coхранить размер потока
CommonFileStream.Write(SizeOf(InFileStream));
8
//coхранить сам поток
CommonFileStream.Write(InFileStream);
9
//InFileStream.free;
Далее повторить действия 3-9 для остальных файлов.
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2003.07.21;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.008 c