Главная страница
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.02 c
8-67915
Yorick
2003-03-31 02:00
2003.07.21
Поворот изображения в Image ?


1-67840
AndrewVolkov
2003-07-07 18:09
2003.07.21
И снова PopupMenu ;-((


3-67717
Alexey
2003-06-27 13:44
2003.07.21
Закрашивание DBGrid


1-67832
mc_alex
2003-07-07 16:46
2003.07.21
Как предотвратиь распространение проги без моего согласия?


1-67775
Семен Сорокин
2003-07-08 14:01
2003.07.21
Отрисовка RoundRect