SRL Archive - First Scripts

first script/first part of map editor/draw new map instance for game project


MakIAM

2014-12-31 01:50:59

my first pass at drawing a large map area
This is a mess but.. the first ones are :)
this is part of my game project script.
C&C Welcome

any idea's on how can i make this draw a new map faster.

larger tile groups drawn at once?

multi timer thread drawing maybe?



program MakesMapMessV20;
// you can change the map size at end of script mapsizx and mapsize y
var
DsgnForm:TForm;
TLabel0: TLabel;
Ground:TImage;
groundlayer,Tile,BmpW,BmpH:integer;
GroundPicture,bmps1: TMufasaBitmap;
bmp1,GroundRenderdPicture: TBitmap;
a,b,TileRowX,TileRowY,MapSizeX,MapSizeY,TileId:integer;
c,d,filename,StringOutPut:string;
const
default = 'Comic Sans MS';

procedure YourClickProcedure(Sender: TObject);
begin
//GetBitmapSize(GroundLayer,Bmpw,BmpH);
//StringOutPut:= CreateBitmapstring(GroundLayer);
//WriteLn('This will be saved in a ini file ' + IntToStr(BmpW));
//WriteLn('This will be saved in a ini file ' + IntToStr(BmpH));
//WriteLn('This will be saved in a ini file ' +StringOutPut);
Ground.Left:=Ground.Left-32;
Ground.Picture.Bitmap.handle:=GroundRenderdPicture.handle;
end;
procedure YourClickProcedure2(Sender: TObject);
begin
TLabel0.Caption:='Done';
Ground.Left:=(DsgnForm.Width/(2))-a;//will be based from player x y from warp/or database login start x y info
SetTransparentColor(GroundLayer,clblack);
SetTransparentColor(Tile,clblack);
for TileRowY:= 0 to MapSizeY do //row drawing down/left
begin
for TileRowX:= 0 to MapSizeX do //row drawing right/down
begin
a:=a+32;
b:=b+16;
FastDrawTransparent(a,b,Tile,GroundLayer);
SetBitmapname(GroundLayer,'GroundLayer');
end;
a:= (a - (MapSizeX * (32))-(64));
b:= (b - (MapSizeX * (16)));
end;
GroundPicture:=GetMufasaBitmap(GroundLayer);
GroundRenderdPicture.free;
GroundRenderdPicture:=GroundPicture.ToTBitmap;
Ground.Picture.Bitmap.handle:=GroundRenderdPicture.handle;
Ground.onclick:=@YourClickProcedure;
end;
procedure InitForm;
begin
//DsgnForm\\
DsgnForm:=TForm.Create(nil);
with DsgnForm do
begin
Caption:='Render a Custom map V.20';
Left:=1;
Top:=1;
DsgnForm.Width:=820;
Height:=840;
Font.Name:=default;
Font.Color:=clDefault;
Font.Size:=0;
color:=clblack;
onclick:=@YourClickProcedure2;
//onshow:=@YourClickProcedure2;
end;
GroundLayer:=CreateBitmap((MapSizey * 33)+(MapSizeX *33)+1000,(MapSizey * 33)+(MapSizey *33)+1000);
SetTransparentColor(GroundLayer,clblack);
SetTransparentColor(Tile,clblack);
a:=(MapSizey * 32)+1;
//Screen\\
Ground:=TImage.Create(DsgnForm);
with Ground do
begin
//TileId:= 4;
//d:= 'News Info';
//FileName := AppPath + 'NewsTest3.ini';
//c:=((ReadINI ((d),(IntToStr(TileId)), FileName)));
c:='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';
Parent:=DsgnForm;
Ground.Left:=0;
Top:=0;
Width:=(MapSizey * 32)+(MapSizeX *32)+1000;
Height:=(MapSizey * 16)+(MapSizey *16)+1000;
bmps1:=GetMufasaBitmap(BitmapFromString(64,32,c));
bmp1:=bmps1.ToTBitmap;
GroundRenderdPicture:=bmp1;
Picture.Bitmap.handle:=GroundRenderdPicture.handle;
onclick:=@YourClickProcedure2;
end;

//TLabel0\\
TLabel0:=TLabel.Create(DsgnForm);
with TLabel0 do
begin
Parent:=DsgnForm;
TLabel0.Caption:='Click Any Place To Start';
Left:=79;
Top:=74;
Width:=38;
Height:=14;
Font.Name:=default;
Font.Color:=clWhite;
Font.Size:=18;
end;
Tile:=CreateBitmap(64,32);
Tile:=BitmapFromString(64,32,c);
end;

procedure SafeInitForm;
var
v: TVariantArray;
begin
setarraylength(V, 0);
ThreadSafeCall('InitForm', v);
end;

procedure ShowFormModal;
begin
DsgnForm.ShowModal;
end;

procedure SafeShowFormModal;
var
v: TVariantArray;
begin
SetArrayLength(V, 0);
ThreadSafeCall('ShowFormModal', v);
end;
//start\\
begin
a:=(MapSizey * 32)+1;
b:=0;
MapSizeX:=65;//downright rows x //mapsize
MapSizeY:=65;//downleft rows y //mapsize
SafeInitForm;
SafeShowFormModal;
bmps1.free;
freebitmap(Tile);
GroundRenderdPicture.free;
freebitmap(2);
freebitmap(GroundLayer);
//DsgnForm.free;//crashes simba on clicking simba after DsgnForm.free hmm

//this timage "Ground" dont free but also it do not show as Notfreed in debug box ,but i see mem sticking in task manager if this not there//Ground.free\\. hmm
Ground.free; //this frees it from mem after you stop script.if not after running multi times mem loads up and crashes

end.

i can get it to draw around 125x125 before my old pc runs out of ram. would any one test and post there largest map?
you can change the map size at end of script mapsizex/mapsizey