123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- program demo10;
- {$I zglCustomConfig.cfg}
- {$I zgl_config.cfg}
- {$R *.res}
- uses
- zgl_screen,
- zgl_window,
- zgl_timers,
- zgl_keyboard,
- zgl_fx,
- zgl_file,
- zgl_textures,
- zgl_textures_png,
- zgl_textures_jpg,
- zgl_tiles_2d,
- zgl_font,
- zgl_text,
- zgl_math_2d,
- zgl_types,
- zgl_utils
- ;
- var
- dirRes : UTF8String {$IFNDEF MACOSX} = '../data/' {$ENDIF};
- fntMain : Byte;
- map : zglTTiles2D;
- texTiles: zglPTexture;
- procedure Init;
- var
- i, j: Integer;
- f : zglTFile;
- begin
- fntMain := font_LoadFromFile(dirRes + 'font.zfi');
- texTiles := tex_LoadFromFile(dirRes + 'tiles.png');
- tex_SetFrameSize(texTiles, 32, 32);
- // RU: Èíèöèàëèçàöèÿ òàéëîâ ðàçìåðîì 32x32. Ïàðàìåòð Count óêàçûâàåò íà êîëè÷åñòâî òàéëîâ ïî X è Y. Ìàññèâ Tiles ñîäåðæèò êàäðû äëÿ êàæäîãî òàéëà.
- // EN: Initialization of tiles with size 32x32. Parameter Count set amount of tiles on X and Y. Array Tiles contains frames for every tile.
- map.Width := 32;
- map.Height := 32;
- map.X := 25;
- map.Y := 19;
- SetLength(map.Tiles, map.X, map.Y);
- // RU: Çàïîëíÿåì êàðòó "òðàâîé", 19 êàäð.
- // EN: Fill the map by "grass", 19 frame.
- for i := 0 to map.X - 1 do
- for j := 0 to map.Y - 1 do
- map.Tiles[i, j] := 19;
- // RU: Çàãðóæàåì êàðòó èç áèíàðíîãî ôàéëà.
- // EN: Load map from binary file.
- file_Open(f, dirRes + 'ground.map', FOM_OPENR);
- for i := 0 to map.X - 1 do
- file_Read(f, map.Tiles[i, 0], map.Y * SizeOf(Integer));
- file_Close(f);
- setFontTextScale(15, fntMain);
- end;
- procedure Draw;
- begin
- // RU: Ðåíäåðèì òàéëû â êîîðäèíàòàõ 0,0.
- // EN: Render tiles in coordinates 0,0.
- tiles2d_Draw(texTiles, 0, 0, @map);
- text_Draw(fntMain, 0, 0, 'FPS: ' + u_IntToStr(zgl_Get(RENDER_FPS)));
- text_Draw(fntMain, 180, 30, 'This is a tarrible example of tile map, but main idea should be clear :)');
- end;
- Begin
- randomize();
- zgl_Reg(SYS_LOAD, @Init);
- zgl_Reg(SYS_DRAW, @Draw);
- wnd_SetCaption(utf8_Copy('10 - Tiles'));
- zgl_Init();
- End.
|