unit uGenerelData;
///////////////////////////
//версия для редактора 1,0 бета
///////////////////////////

interface

uses OMEGA;

{==============================================================}

const DFld='..\data\';     //путь к папке с ресурсами

{==============================================================}

type
     tSprite=object             //спрайты
      texture:PTexture;         //текстура

      wx,hx:integer;            //высота и ширина
      alpha:byte;               //прозрачность
      tcolor:integer;           //прозрачный цвет

      name:string;              //имя

      patch,mpatch,dfpatch:string;

      procedure Draw(x,y,angle,flags:integer);  //рисуем спрайт
     end;
{==============================================================}
     tRecurces=object                           //ресурсы
      Spr:array [1..1000] of tSprite;           //спрайты
      QSpr:integer;                             //номер текущей незанятой ячейки
      Select:integer;

      procedure AddSpr(patch:widestring);       //добавляем в ресурсы спрайт
      function FindSpr(name:string):integer;     //поис ресурса по имени
     end;

{==============================================================}
{==============================================================}
{==============================================================}

var DFilePatch:widestring;        //путь к загрузочному скрипту
    DFIle:textfile;

    res:tRecurces;                //все ресурсы игры

    erorname:string;              //ошибка поиска, значение - неправильный поисковой запрос


{==============================================================}

procedure GDataInit;              //загрузка игровых данных

implementation

uses uDForm;

{==============================================================}
{==============================================================}
{==============================================================}

procedure GDataInit; //загрузка игровых данных
var DF:textfile;
    t,i:integer;
    p:string;

begin

Form1.ListBox1.Clear;
{задаём текущие пустые ячейки}
res.QSpr:=1;
res.Select:=0;

DFilePatch:='sprite\';

assignfile(DF,DFld+'sprite\load_script.txt');  //файл скрипта
reset(DF);
readln(DF,i);  //читаем тип скрипта и кол-во эл-тов

for t:=1 to i do begin      //загружаем спрайты
    readln(DF,p);
    res.AddSpr(p);
   end;

closefile(DF);

end;

{==============================================================}
{========================== tSprite ===========================}
{==============================================================}

procedure tSprite.Draw(x,y,angle,flags:integer);
begin

SSprite_Draw(texture,x,y,wx,hx,alpha,angle,flags);

end;

{==============================================================}
{========================== tRecurces =========================}
{==============================================================}

function tRecurces.FindSpr(name:string):integer;
var i:integer;
    t:boolean;
begin

t:=false;

For i:=1 to QSpr do
 if Spr[i].name=name then begin
  FindSpr:=i;
  t:=true;
  Break;
 end;

if not t then begin
 erorname:=name;
 FindSpr:=0;
 {OE_Quit;}
end;


end;

procedure tRecurces.AddSpr(patch:widestring);     //загружаем в ресурсы спрайт
var DF:textfile;               //файл данных спрайта
    bt:boolean;                //была ли загружена маска
    t1,t2,t3,t4:integer;       //высота, ширина, прозрачный цвет и альфа спрайта
    p1,p2,str:string;          //текстура, маска и имя спрайта
begin

assignfile(DF,DFld+patch);     //получаем данные из файла
reset(DF);
readln(DF,t1,t2,t3,t4);
readln(DF,p1);
readln(DF,p2);
readln(DF,str);
closefile(DF);

if p2<>'nil' then    //если нету для этой т-ры маски, то второй путь равен nil
 begin
  Tex_LoadMaskFromFile(PChar(DFld+p2)); //если не равен nil, то загружаем маску
  bt:=true;
 end else bt:=false;   //или не загружаем

if bt then Spr[QSpr].Texture:=tex_loadfromfile(pChar(DFld+p1),t3,TEX_DEFAULT_2D or TEX_USEMASK)//если маску грузили, пишем об этом
      else Spr[QSpr].Texture:=tex_loadfromfile(pChar(DFld+p1),t3,TEX_DEFAULT_2D);//иначе не пишем

Spr[QSpr].wx:=t1;
Spr[QSpr].hx:=t2;
Spr[QSpr].tcolor:=t3;
Spr[QSpr].alpha:=t4;
Spr[QSpr].name:=str;
Spr[QSpr].patch:=p1;
Spr[QSpr].mpatch:=p2;
Spr[QSpr].dfpatch:=patch;
Form1.ListBox1.Items.Add(str);

QSpr:=QSpr+1;          //пишем след. пустую ячейку


Tex_FreeMask;          //очищаем маску

end;

end.         
