unit uDForm;
///////////////////////////
//версия 1.1 бета
///////////////////////////

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls,
  OMEGA,
  uGenerelData;

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Panel2: TPanel;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Edit1: TEdit;
    ListBox1: TListBox;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Edit8: TEdit;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    OpenDialog1: TOpenDialog;
    Button7: TButton;
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure FormResize(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button7Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

procedure Init;
procedure Draw;
procedure Process;
procedure Quit;

var
  Form1: TForm1;

  StartEngine:boolean;

implementation

{$R *.dfm}

procedure TForm1.FormActivate(Sender: TObject);
begin

If not (StartEngine) then begin
 StartEngine:=true;
 LoadOMEGA('OMEGA.dll');
 Timer_Create(@Process,15);
 OE_RegProcedure( sys_draw , @Draw );
 OE_RegProcedure( sys_init , @Init );
 OE_RegProcedure( sys_quit , @Quit );
 OE_SetAdvancedOptions( false, true, true );
 OE_ShowCursor(true);
 OE_init2(panel1.Handle);
end;

end;

procedure Init;
begin

GDataInit;

end;

procedure Draw;
begin

Pr2D_Rect(0,0,form1.Panel1.ClientWidth,form1.Panel1.ClientHeight,$999999,255,PR_FILL );

if res.Select<>0 then res.Spr[res.Select].Draw(5,5,0,1);

Application.ProcessMessages;

end;

procedure Process;
begin

Application.ProcessMessages;

end;

procedure Quit;
begin

OE_Quit;

end;

procedure TForm1.Button1Click(Sender: TObject);
var t,i,nb:integer;
    str:string;
begin

nb:=ListBox1.ItemIndex+1;
res.Select:=nb;
Edit1.Text:=res.Spr[nb].patch;
Edit2.Text:=res.Spr[nb].mpatch;
Edit3.Text:=IntToStr(res.Spr[nb].wx);
Edit4.Text:=IntToStr(res.Spr[nb].hx);

t:=res.Spr[nb].tcolor;
if t<>-1 then begin
 for i:=1 to 6 do begin
  case (t mod 16) of
   0:str:='0'+str;
   1:str:='1'+str;
   2:str:='2'+str;
   3:str:='3'+str;
   4:str:='4'+str;
   5:str:='5'+str;
   6:str:='6'+str;
   7:str:='7'+str;
   8:str:='8'+str;
   9:str:='9'+str;
   10:str:='a'+str;
   11:str:='b'+str;
   12:str:='c'+str;
   13:str:='d'+str;
   14:str:='e'+str;
   15:str:='f'+str;
  end;
  t:=t div 16;
 end;
 str:='$'+str;
end else str:=IntToStr(t);

Edit5.Text:=str;
Edit6.Text:=IntToStr(res.Spr[nb].alpha);
Edit7.Text:=res.Spr[nb].name;
Edit8.Text:=res.Spr[nb].dfpatch;

end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin

Quit;

end;

procedure TForm1.FormResize(Sender: TObject);
begin

OE_ResizeWindow(panel1.ClientWidth,panel1.ClientHeight);

end;

procedure TForm1.Button2Click(Sender: TObject);
var DF:textfile;
    i:integer;
begin

i:=res.Select;
if (Edit1.Text='') or
   (Edit2.Text='') or
   (Edit3.Text='') or
   (Edit4.Text='') or
   (Edit5.Text='') or
   (Edit6.Text='') or
   (Edit7.Text='') then ShowMessage('Введены не все данные')
   else if (res.FindSpr(Edit7.Text)<>i) then ShowMessage('Объект с таким именем уже есть')
   else begin
with res.Spr[i] do begin
wx:=StrToInt(Edit3.Text);
hx:=StrToInt(Edit4.Text);
tcolor:=StrToInt(Edit5.Text);
alpha:=StrToInt(Edit6.Text);
patch:=Edit1.Text;
mpatch:=Edit2.Text;
name:=Edit7.Text;
end;

assignfile(DF,DFld+res.Spr[i].dfpatch);
rewrite(DF);
with res.Spr[i] do begin
write(DF,wx,' ');
write(DF,hx,' ');
write(DF,tcolor,' ');
writeln(DF,alpha,' ');
writeln(DF,patch);
writeln(DF,mpatch);
writeln(DF,name);
end;
closefile(DF);

GDataInit;

res.Select:=i;

end;

end;

procedure TForm1.Button3Click(Sender: TObject);
var DF:textfile;
    t1,t2,t3,t4:integer;
    p1,p2,p3:string;
begin

if (Edit1.Text='') or
   (Edit2.Text='') or
   (Edit3.Text='') or
   (Edit4.Text='') or
   (Edit5.Text='') or
   (Edit6.Text='') or
   (Edit7.Text='')
   then ShowMessage('Введены не все данные')
   else if (res.FindSpr(Edit7.Text)<>0) then ShowMessage('Объект с таким именем уже есть')
   else begin
t1:=StrToInt(Edit3.Text);
t2:=StrToInt(Edit4.Text);
t3:=StrToInt(Edit5.Text);
t4:=StrToInt(Edit6.Text);
p1:=Edit1.Text;
p2:=Edit2.Text;
p3:=Edit7.Text;

assignfile(DF,DFld+DFilePatch+p3+'.txt');
rewrite(DF);
write(DF,t1,' ');
write(DF,t2,' ');
write(DF,t3,' ');
writeln(DF,t4,' ');
writeln(DF,p1);
writeln(DF,p2);
writeln(DF,p3);
closefile(DF);

assignfile(DF,DFld+DFilePatch+'load_script.txt');
rewrite(DF);
writeln(DF,res.QSpr);
for t1:=1 to res.QSpr-1 do
writeln(DF,DFilePatch+res.Spr[t1].name+'.txt');
writeln(DF,DFilePatch+p3+'.txt');
closefile(DF);

GDataInit;

res.Select:=res.QSpr-1;
end;

end;

procedure TForm1.Button4Click(Sender: TObject);
var DF:textfile;
    t1:integer;
    p1:string;
    b:integer;
begin

b:=MessageDlg('Объект '+res.Spr[res.Select].name+' будет удален.',mtWarning,[mbOk,mbCancel],0);

if b=mrOK then begin
p1:=res.spr[ListBox1.ItemIndex+1].name;


assignfile(DF,DFld+DFilePatch+'load_script.txt');
rewrite(DF);
writeln(DF,res.QSpr-2);
for t1:=1 to res.QSpr-1 do
if res.Spr[t1].name<>p1 then writeln(DF,DFilePatch+res.Spr[t1].name+'.txt');
closefile(DF);

GDataInit;

end;

end;

procedure TForm1.Button5Click(Sender: TObject);
var t:string;
    i:integer;
begin

{if OpenDialog1.Execute then
begin
 t:=OpenDialog1.FileName;
 i:=Pos('sprite\',t);
 if i<>0 then Edit1.Text:=Copy(t,i,Length(t)-i+1)
         else ShowMessage('Файл должен быть в папке данных в папке с игрой!');
end;}

end;

procedure TForm1.Button6Click(Sender: TObject);
var t:string;
    i:integer;
begin

{if OpenDialog1.Execute then
begin
 t:=OpenDialog1.FileName;
 i:=Pos('sprite\',t);
 if i<>0 then Edit2.Text:=Copy(t,i,Length(t)-i+1)
         else ShowMessage('Файл должен быть в папке данных в папке с игрой!');
end;}

end;

procedure TForm1.Button7Click(Sender: TObject);
var i:integer;
begin

i:=res.Select;
GDataInit;
res.Select:=i;

end;

end.
