Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.07.21;
Скачать: CL | DM;

Вниз

Ресурсы !!!   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2003.07.21;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.015 c
14-67980
Карелин Артем
2003-07-07 11:48
2003.07.21
Буржуйский форум по дельфи. ХОРОШИЙ.


14-67996
CD
2003-07-03 20:35
2003.07.21
Дайте pls исходник быстрой сортировки Хоара


1-67865
Smart
2003-07-08 07:36
2003.07.21
Проблема с TListView


1-67867
mdsns
2003-07-08 07:01
2003.07.21
Thread Error


3-67732
TAHAT
2003-06-27 07:03
2003.07.21
Найти BDE программно