demo10.lpr 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. library demo10;
  2. {$I zglCustomConfig.cfg}
  3. {$I zgl_config.cfg}
  4. uses
  5. zgl_application,
  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_tiles_2d,
  15. zgl_font,
  16. zgl_text,
  17. zgl_types,
  18. zgl_utils,
  19. zgl_render_2d
  20. ;
  21. var
  22. dirRes : UTF8String = 'assets/';
  23. fntMain : LongWord;
  24. map : zglTTiles2D;
  25. texTiles : zglPTexture;
  26. procedure Init;
  27. var
  28. i, j : Integer;
  29. f : zglTFile;
  30. begin
  31. zgl_Enable( CORRECT_RESOLUTION );
  32. scr_CorrectResolution( 800, 600 );
  33. file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
  34. fntMain := font_LoadFromFile( dirRes + 'font.zfi' );
  35. texTiles := tex_LoadFromFile( dirRes + 'tiles.png' );
  36. tex_SetFrameSize( texTiles, 32, 32 );
  37. // RU: Инициализация тайлов размером 32x32. Параметр Count указывает на количество тайлов по X и Y. Массив Tiles содержит кадры для каждого тайла.
  38. // EN: Initialization of tiles with size 32x32. Parameter Count set amount of tiles on X and Y. Array Tiles contains frames for every tile.
  39. map.Width := 32;
  40. map.Height := 32;
  41. map.X := 25;
  42. map.Y := 19;
  43. SetLength( map.Tiles, map.X, map.Y );
  44. // RU: Заполняем карту "травой", 19 кадр.
  45. // EN: Fill the map by "grass", 19 frame.
  46. for i := 0 to map.X - 1 do
  47. for j := 0 to map.Y - 1 do
  48. map.Tiles[ i, j ] := 19;
  49. // RU: Загружаем карту из бинарного файла.
  50. // EN: Load map from binary file.
  51. file_Open( f, dirRes + 'ground.map', FOM_OPENR );
  52. for i := 0 to map.X - 1 do
  53. file_Read( f, map.Tiles[ i, 0 ], map.Y * SizeOf( Integer ) );
  54. file_Close( f );
  55. file_CloseArchive();
  56. setFontTextScale(20, fntMain);
  57. end;
  58. procedure Draw;
  59. begin
  60. // RU: Рендерим тайлы в координатах 0,0.
  61. // EN: Render tiles in coordinates 0,0.
  62. tiles2d_Draw( texTiles, 0, 0, @map );
  63. text_Draw( fntMain, 0, 0, 'FPS: ' + u_IntToStr( zgl_Get( RENDER_FPS ) ) );
  64. text_Draw( fntMain, 180, 30, 'This is a tarrible example of tile map, but main idea should be clear :)' );
  65. end;
  66. procedure Restore;
  67. begin
  68. file_OpenArchive( PAnsiChar( zgl_Get( DIRECTORY_APPLICATION ) ) );
  69. font_RestoreFromFile( fntMain, dirRes + 'font.zfi' );
  70. tex_RestoreFromFile( texTiles, dirRes + 'tiles.png' );
  71. file_CloseArchive();
  72. end;
  73. procedure Java_zengl_android_ZenGL_Main( var env; var thiz ); cdecl;
  74. begin
  75. randomize();
  76. zgl_Reg( SYS_LOAD, @Init );
  77. zgl_Reg( SYS_DRAW, @Draw );
  78. zgl_Reg( SYS_ANDROID_RESTORE, @Restore );
  79. scr_SetOptions();
  80. end;
  81. exports
  82. Java_zengl_android_ZenGL_Main,
  83. {$I android_export.inc}
  84. End.