⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cellproperties.pas

📁 一款RPG游戏的引擎可以自己制作一款RPG游戏的引擎可以自己制作
💻 PAS
字号:
unit cellProperties;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, Buttons, ComCtrls, ExtCtrls,isoengine;

type
  TCellProp = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Bevel2: TBevel;
    Bevel1: TBevel;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    DisplayFrom: TTrackBar;
    DisplayTo: TTrackBar;
    AnimateFrom: TTrackBar;
    AnimateTo: TTrackBar;
    AnimateSpeed: TTrackBar;
    Panel1: TPanel;
    TabSheet2: TTabSheet;
    TabSheet3: TTabSheet;
    Memo1: TMemo;
    AttAvail: TListBox;
    CellAttribs: TListBox;
    Label6: TLabel;
    Label7: TLabel;
    Add: TButton;
    Remove: TButton;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    Label8: TLabel;
    Label9: TLabel;
    procedure DisplayFromChange(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure AddClick(Sender: TObject);
    procedure RemoveClick(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure BitBtn3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
    X,Y : integer;
  end;

var
  CellProp: TCellProp;

implementation

uses Main;

{$R *.DFM}

procedure TCellProp.DisplayFromChange(Sender: TObject);
begin
  if (Visible) then
  begin
     Label1.Caption := 'Display From ' + IntToStr(DisplayFrom.Position);
     Label2.Caption := 'Display To   ' + IntToStr(DisplayTo.Position);
     Label3.Caption := 'Animate From ' + IntToStr(AnimateFrom.Position);
     Label4.Caption := 'Animate To   ' + IntToStr(AnimateTo.Position);
     Label5.Caption := 'Animate Speed ' + IntToStr(AnimateSpeed.Position);
  end;
end;

procedure TCellProp.BitBtn1Click(Sender: TObject);
var lx,ly : Integer;
procedure SetDisplay(x,y : integer);
begin
   MainForm.Activechild.IsoMap.FIsoMap.IsoMap[x,y].AlwaysDisplayFrom := CellProp.DisplayFrom.Position;
   MainForm.Activechild.IsoMap.FIsoMap.IsoMap[x,y].AlwaysDisplayTo := CellProp.DisplayTo.Position;
   MainForm.Activechild.IsoMap.FIsoMap.IsoMap[x,y].AnimateFrom := CellProp.AnimateFrom.Position;
   MainForm.Activechild.IsoMap.FIsoMap.IsoMap[x,y].AnimateTo := CellProp.AnimateTo.Position;
   MainForm.Activechild.IsoMap.FIsoMap.IsoMap[x,y].AnimateSpeed := CellProp.animateSpeed.Position;
   MainForm.Activechild.IsoMap.FIsoMap.IsoMap[x,y].AnimateNext := CellProp.AnimateFrom.Position;
   MainForm.Activechild.IsoMap.FIsoMap.IsoMap[x,y].AnimateCount := 1;
end;

begin
  DisplayFromChange(Sender);
  begin
    if (MessageDlg('Save Property Changes to all Selected Cells as well?',
      mtConfirmation, [mbYes, mbNo,mbCancel], 0)= mrYes) then
    begin
      for lx := 0 to MainForm.Activechild.IsoMap.MapWidth-1 do
        for ly := 0 to MainForm.Activechild.IsoMap.MapHeight-1 do
        begin
          if (MainForm.Activechild.IsoMap.FIsoMap.IsState(lx,ly,[tsSelected])) then
            SetDisplay(Lx,Ly);
        end;
    end
    else
      SetDisplay(x,y);
  end;
end;

procedure TCellProp.FormShow(Sender: TObject);
var L : Integer;
  State : TCellState;
procedure AddState(teststate : TCellState; s : string);
begin
   if ((teststate + State)=State) then
        CellAttribs.Items.Add(s)
    else
        AttAvail.Items.Add(s);
end;

begin
  L := Length(MainForm.Activechild.IsoMap.Cell[x,y].ImageIndexes);
  displayFrom.Max := L;
  DisplayFrom.Min := 1;
  DisplayTo.Max := L;
  DisplayTo.Min := 1;
  AnimateFrom.Max := L;
  AnimateFrom.Min := 1;
  AnimateTo.Max := L;
  AnimateTo.Min := 1;
  DisplayFrom.Position := MainForm.Activechild.IsoMap.Cell[x,y].AlwaysDisplayFrom;
  DisplayTo.Position := MainForm.Activechild.IsoMap.Cell[x,y].AlwaysDisplayTo;
  AnimateFrom.Position := MainForm.Activechild.IsoMap.Cell[x,y].AnimateFrom;
  AnimateTo.Position := MainForm.Activechild.IsoMap.Cell[x,y].AnimateTo;
  animateSpeed.Position := MainForm.Activechild.IsoMap.Cell[x,y].AnimateSpeed;
  Memo1.Clear;
  Memo1.Text :=  MainForm.Activechild.IsoMap.FIsoMap.CellComment[x,y];
  Caption := 'Cell['+IntToStr(X)+','+IntToStr(Y)+'] properties';
  CellAttribs.Clear;
  AttAvail.Clear;
   State := MainForm.Activechild.IsoMap.Cell[x,y].State;
   AddState([tsGround],   '    tsGround');
   AddState([tsFog],      '       tsFog');
   AddState([tsPassable], '  tsPassable');
   AddState([tsRough],    '     tsRough');
   AddState([tsSelected], '  tsSelected');
   AddState([tsEnabled],  '   tsEnabled');
   AddState([tsVisible],  '   tsVisible');
   AddState([ts3d],       '        ts3d');
   AddState([tsDirty],' tsDirty');
   AddState([tsReserved2],' tsReserved2');
   AddState([tsReserved3],' tsReserved3');
   AddState([tsReserved4],' tsReserved4');
   AddState([tsReserved5],' tsReserved5');
   AddState([tsReserved6],' tsReserved6');
   AddState([tsReserved7],' tsReserved7');
   AddState([tsReserved8],' tsReserved8');
   AddState([tsReserved9],' tsReserved9');
   AddState([tsReserved10],'tsReserved10');
   AddState([tsReserved11],'tsReserved11');
   AddState([tsReserved12],'tsReserved12');
   AddState([tsReserved13],'tsReserved13');
   AddState([tsReserved14],'tsReserved14');
   AddState([tsReserved15],'tsReserved15');
   AddState([tsReserved16],'tsReserved16');
   AddState([tsReserved17],'tsReserved17');
   AddState([tsReserved18],'tsReserved18');
   AddState([tsReserved19],'tsReserved19');
   AddState([tsReserved20],'tsReserved20');
   AddState([tsReserved21],'tsReserved21');
   AddState([tsReserved22],'tsReserved22');
   AddState([tsReserved23],'tsReserved23');
   AddState([tsReserved24],'tsReserved24');
   AddState([tsReserved25],'tsReserved25');
   AddState([tsReserved26],'tsReserved26');
   AddState([tsReserved27],'tsReserved27');
   AddState([tsReserved28],'tsReserved28');
end;

procedure TCellProp.AddClick(Sender: TObject);
var i : integer;
begin
  for i := 0 to attavail.Items.Count-1 do
  begin
    if (AttAvail.Selected[i]) then
    begin
      CellAttribs.Items.Add(AttAvail.Items[i]);
      AttAvail.Items[i] := '';
    end;
  end;
  i := AttAvail.Items.Count;
  while(i>1) do
  begin
    Dec(i);
    if (AttAvail.Items[i] = '') then
      AttAvail.Items.Delete(i);
  end;
end;

procedure TCellProp.RemoveClick(Sender: TObject);
var i : integer;
begin
  for i := 0 to CellAttribs.Items.Count-1 do
  begin
    if (CellAttribs.Selected[i]) then
    begin
      AttAvail.Items.Add(CellAttribs.Items[i]);
      CellAttribs.Items[i] := '';
    end;
  end;
  i := CellAttribs.Items.Count;
  while(i>1) do
  begin
    Dec(i);
    if (CellAttribs.Items[i] = '') then
      CellAttribs.Items.Delete(i);
  end;
end;

procedure TCellProp.BitBtn4Click(Sender: TObject);
var lx,ly : integer;
begin
     mainForm.Activechild.IsoMap.FIsoMap.CellComment[X,Y] := CellProp.Memo1.Text;
    if (MessageDlg('Save Property Changes to all Selected Cells as well?',
      mtConfirmation, [mbYes, mbNo,mbCancel], 0)= mrYes) then
    begin
      for lx := 0 to MainForm.Activechild.IsoMap.MapWidth-1 do
        for ly := 0 to MainForm.Activechild.IsoMap.MapHeight-1 do
        begin
          if (MainForm.Activechild.IsoMap.FIsoMap.IsState(lx,ly,[tsSelected])) then
             MainForm.Activechild.IsoMap.FIsoMap.CellComment[lX,ly] := CellProp.Memo1.Text;
        end;
    end;
end;

procedure TCellProp.BitBtn3Click(Sender: TObject);
var lx,ly : integer;
    State : TCellState;
procedure AddState(teststate : TCellState; s : string);
var i : integer;
begin
  for i := 0 to CellAttribs.Items.Count-1 do
  begin
    if (CellAttribs.Items[i] = s) then
      State := State + teststate;
  end;
end;
begin
  State := [];
   AddState([tsGround],   '    tsGround');
   AddState([tsFog],      '       tsFog');
   AddState([tsPassable], '  tsPassable');
   AddState([tsRough],    '     tsRough');
   AddState([tsSelected], '  tsSelected');
   AddState([tsEnabled],  '   tsEnabled');
   AddState([tsVisible],  '   tsVisible');
   AddState([ts3d],       '        ts3d');
   AddState([tsDirty],' tsDirty');
   AddState([tsReserved2],' tsReserved2');
   AddState([tsReserved3],' tsReserved3');
   AddState([tsReserved4],' tsReserved4');
   AddState([tsReserved5],' tsReserved5');
   AddState([tsReserved6],' tsReserved6');
   AddState([tsReserved7],' tsReserved7');
   AddState([tsReserved8],' tsReserved8');
   AddState([tsReserved9],' tsReserved9');
   AddState([tsReserved10],'tsReserved10');
   AddState([tsReserved11],'tsReserved11');
   AddState([tsReserved12],'tsReserved12');
   AddState([tsReserved13],'tsReserved13');
   AddState([tsReserved14],'tsReserved14');
   AddState([tsReserved15],'tsReserved15');
   AddState([tsReserved16],'tsReserved16');
   AddState([tsReserved17],'tsReserved17');
   AddState([tsReserved18],'tsReserved18');
   AddState([tsReserved19],'tsReserved19');
   AddState([tsReserved20],'tsReserved20');
   AddState([tsReserved21],'tsReserved21');
   AddState([tsReserved22],'tsReserved22');
   AddState([tsReserved23],'tsReserved23');
   AddState([tsReserved24],'tsReserved24');
   AddState([tsReserved25],'tsReserved25');
   AddState([tsReserved26],'tsReserved26');
   AddState([tsReserved27],'tsReserved27');
   AddState([tsReserved28],'tsReserved28');
   
   mainForm.Activechild.IsoMap.FIsoMap.IsoMap[X,Y].State := state;
   if (MessageDlg('Save Property Changes to all Selected Cells as well?',
      mtConfirmation, [mbYes, mbNo,mbCancel], 0)= mrYes) then
   begin
      for lx := 0 to MainForm.Activechild.IsoMap.MapWidth-1 do
        for ly := 0 to MainForm.Activechild.IsoMap.MapHeight-1 do
        begin
          if (MainForm.Activechild.IsoMap.FIsoMap.IsState(lx,ly,[tsSelected])) then
             MainForm.Activechild.IsoMap.FIsoMap.IsoMap[lX,lY].State := State;
        end;
  end;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -