minimap_example.cpp 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. #include "map/map_loader.h"
  2. #include "map/minimap/minimap_generator.h"
  3. #include "map/minimap/minimap_texture_manager.h"
  4. #include <QCoreApplication>
  5. #include <QDebug>
  6. using namespace Game::Map;
  7. using namespace Game::Map::Minimap;
  8. auto main(int argc, char *argv[]) -> int {
  9. QCoreApplication app(argc, argv);
  10. qDebug() << "=== Minimap Generation Example ===";
  11. qDebug() << "";
  12. qDebug() << "Step 1: Loading map from JSON...";
  13. const QString mapPath = "assets/maps/map_rivers.json";
  14. MapDefinition mapDef;
  15. QString error;
  16. if (!MapLoader::loadFromJsonFile(mapPath, mapDef, &error)) {
  17. qCritical() << "Failed to load map:" << error;
  18. return 1;
  19. }
  20. qDebug() << " ✓ Loaded map:" << mapDef.name;
  21. qDebug() << " ✓ Grid size:" << mapDef.grid.width << "x"
  22. << mapDef.grid.height;
  23. qDebug() << " ✓ Terrain features:" << mapDef.terrain.size();
  24. qDebug() << " ✓ Rivers:" << mapDef.rivers.size();
  25. qDebug() << " ✓ Roads:" << mapDef.roads.size();
  26. qDebug() << " ✓ Spawns:" << mapDef.spawns.size();
  27. qDebug() << "";
  28. qDebug() << "Step 2: Generating minimap texture...";
  29. MinimapGenerator generator;
  30. QImage minimapImage = generator.generate(mapDef);
  31. if (minimapImage.isNull()) {
  32. qCritical() << "Failed to generate minimap image";
  33. return 1;
  34. }
  35. qDebug() << " ✓ Generated minimap texture";
  36. qDebug() << " ✓ Size:" << minimapImage.width() << "x"
  37. << minimapImage.height();
  38. qDebug() << " ✓ Format:" << minimapImage.format();
  39. qDebug() << "";
  40. const QString outputPath = "/tmp/minimap_example.png";
  41. if (minimapImage.save(outputPath)) {
  42. qDebug() << " ✓ Saved minimap to:" << outputPath;
  43. } else {
  44. qWarning() << " ⚠ Could not save minimap to:" << outputPath;
  45. }
  46. qDebug() << "";
  47. qDebug() << "Step 4: Using MinimapTextureManager (recommended approach)...";
  48. MinimapTextureManager manager;
  49. if (!manager.generateForMap(mapDef)) {
  50. qCritical() << "Failed to generate minimap via manager";
  51. return 1;
  52. }
  53. qDebug() << " ✓ Minimap texture manager initialized";
  54. qDebug() << " ✓ Texture ready for OpenGL upload";
  55. qDebug() << "";
  56. qDebug() << "=== Integration Guide ===";
  57. qDebug() << "";
  58. qDebug() << "In your game initialization code:";
  59. qDebug() << "";
  60. qDebug() << " 1. Load your map JSON:";
  61. qDebug() << " MapDefinition mapDef;";
  62. qDebug() << " MapLoader::loadFromJsonFile(path, mapDef);";
  63. qDebug() << "";
  64. qDebug() << " 2. Generate the minimap:";
  65. qDebug() << " MinimapTextureManager minimap;";
  66. qDebug() << " minimap.generateForMap(mapDef);";
  67. qDebug() << "";
  68. qDebug() << " 3. Use the texture in your renderer:";
  69. qDebug() << " auto* texture = minimap.getTexture();";
  70. qDebug() << " // Bind and render in your UI";
  71. qDebug() << "";
  72. qDebug() << "=== Complete ===";
  73. return 0;
  74. }