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

📄 smtile.pas

📁 传奇Map地图编辑源码 一个很不错的源码哦
💻 PAS
字号:
unit SmTile;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Grids;

type
  TFrmSmTile = class(TForm)
    TileGrid: TDrawGrid;
    procedure FormShow(Sender: TObject);
    procedure TileGridDrawCell(Sender: TObject; Col, Row: Longint;
      Rect: TRect; State: TGridDrawState);
    procedure TileGridClick(Sender: TObject);
  private
    UnitMax: integer;
  public
    function  GetCurrentIndex: integer;
    procedure SetImageUnitCount (ucount: integer);
  end;

var
  FrmSmTile: TFrmSmTile;

implementation

uses edmain, ObjEdit;

{$R *.DFM}

procedure TFrmSmTile.FormShow(Sender: TObject);
var
   n: integer;
begin
   n :=  FrmMain.WilSmTiles.ImageCount div MIDDLEBLOCK;
   n :=  n div 3;
   if n >= 1 then TileGrid.RowCount := n
   else TileGrid.RowCount := 1;
end;

procedure TFrmSmTile.SetImageUnitCount (ucount: integer);
var
   i: integer;
begin
   UnitMax := ucount;
   TileGrid.ColCount := 3;
   TileGrid.RowCount := ucount + 1;
end;

function TFrmSmTile.GetCurrentIndex: integer;
var
   max, idx: integer;
begin
   max := FrmMain.WilSmTiles.ImageCount div MIDDLEBLOCK;
   idx := TileGrid.Row * TileGrid.ColCount + TileGrid.Col;
   if max > idx then Result := idx
   else Result := -1;
end;

procedure TFrmSmTile.TileGridDrawCell(Sender: TObject; Col, Row: Longint;
  Rect: TRect; State: TGridDrawState);
var
   idx: integer;
begin
   idx := Row; //Col + Row * MainPalGrid.ColCount;
   if (idx >= 0) and (idx < FrmMain.WilSmTiles.ImageCount) then begin
      with FrmMain.WilSmTiles do begin
         if Col = 0 then begin
            DrawZoom (TileGrid.Canvas, Rect.Left, Rect.Top, idx * MIDDLEBLOCK+7*4+4+1, 1);
         end;
         if Col = 1 then
            DrawZoom (TileGrid.Canvas, Rect.Left, Rect.Top, idx * MIDDLEBLOCK, 1);
         if Col = 2 then
            DrawZoom (TileGrid.Canvas, Rect.Left, Rect.Top, idx * MIDDLEBLOCK+3*4+4+1, 1);
      end;
   end;
end;

procedure TFrmSmTile.TileGridClick(Sender: TObject);
var
   idx: integer;
begin
   FrmMain.DrawMode := mdMiddle;

   idx := TileGrid.Row; //Col + Row * MainPalGrid.ColCount;
   if (idx >= 0) and (idx < UnitMax) then begin
      FrmMain.MiddleIndex := idx;
   end;
end;

end.

⌨️ 快捷键说明

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