Главная страница
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
8-67921
KAV
2003-04-01 17:36
2003.07.21
Повёрнутый элипс


6-67936
IronWit
2003-05-15 11:09
2003.07.21
как из dll получить кол-во писем на pop3 сервере


1-67891
dm37
2003-07-07 12:31
2003.07.21
Hint


3-67700
ses
2003-06-27 10:56
2003.07.21
ADO - из программы вызвать диалог построения строки соединения


8-67926
sndanil
2003-04-01 12:24
2003.07.21
Рисование прицела