demo10.dpr 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. program demo10;
  2. {$I zglCustomConfig.cfg}
  3. {$I zgl_config.cfg}
  4. {$R *.res}
  5. uses
  6. zgl_screen,
  7. zgl_window,
  8. zgl_timers,
  9. zgl_keyboard,
  10. zgl_fx,
  11. zgl_file,
  12. zgl_textures,
  13. zgl_textures_png,
  14. zgl_textures_jpg,
  15. zgl_tiles_2d,
  16. zgl_font,
  17. zgl_text,
  18. zgl_math_2d,
  19. zgl_types,
  20. zgl_utils
  21. ;
  22. var
  23. dirRes : UTF8String {$IFNDEF MACOSX} = '../data/' {$ENDIF};
  24. fntMain : Byte;
  25. map : zglTTiles2D;
  26. texTiles: zglPTexture;
  27. procedure Init;
  28. var
  29. i, j: Integer;
  30. f : zglTFile;
  31. begin
  32. fntMain := font_LoadFromFile(dirRes + 'font.zfi');
  33. texTiles := tex_LoadFromFile(dirRes + 'tiles.png');
  34. tex_SetFrameSize(texTiles, 32, 32);
  35. // RU: Èíèöèàëèçàöèÿ òàéëîâ ðàçìåðîì 32x32. Ïàðàìåòð Count óêàçûâàåò íà êîëè÷åñòâî òàéëîâ ïî X è Y. Ìàññèâ Tiles ñîäåðæèò êàäðû äëÿ êàæäîãî òàéëà.
  36. // EN: Initialization of tiles with size 32x32. Parameter Count set amount of tiles on X and Y. Array Tiles contains frames for every tile.
  37. map.Width := 32;
  38. map.Height := 32;
  39. map.X := 25;
  40. map.Y := 19;
  41. SetLength(map.Tiles, map.X, map.Y);
  42. // RU: Çàïîëíÿåì êàðòó "òðàâîé", 19 êàäð.
  43. // EN: Fill the map by "grass", 19 frame.
  44. for i := 0 to map.X - 1 do
  45. for j := 0 to map.Y - 1 do
  46. map.Tiles[i, j] := 19;
  47. // RU: Çàãðóæàåì êàðòó èç áèíàðíîãî ôàéëà.
  48. // EN: Load map from binary file.
  49. file_Open(f, dirRes + 'ground.map', FOM_OPENR);
  50. for i := 0 to map.X - 1 do
  51. file_Read(f, map.Tiles[i, 0], map.Y * SizeOf(Integer));
  52. file_Close(f);
  53. setFontTextScale(15, fntMain);
  54. end;
  55. procedure Draw;
  56. begin
  57. // RU: Ðåíäåðèì òàéëû â êîîðäèíàòàõ 0,0.
  58. // EN: Render tiles in coordinates 0,0.
  59. tiles2d_Draw(texTiles, 0, 0, @map);
  60. text_Draw(fntMain, 0, 0, 'FPS: ' + u_IntToStr(zgl_Get(RENDER_FPS)));
  61. text_Draw(fntMain, 180, 30, 'This is a tarrible example of tile map, but main idea should be clear :)');
  62. end;
  63. Begin
  64. randomize();
  65. zgl_Reg(SYS_LOAD, @Init);
  66. zgl_Reg(SYS_DRAW, @Draw);
  67. wnd_SetCaption(utf8_Copy('10 - Tiles'));
  68. zgl_Init();
  69. End.