setTile(0, 0, new Tile(['type' => 'castle', 'resources' => ['gold' => 100]])); $map->setTile(2, 2, new Tile(['type' => 'forest', 'resources' => ['wood' => 50]])); $map->setTile(4, 4, new Tile(['type' => 'mountain', 'elevation' => 2000])); $mapId = MapModel::create($map, "Carte d'exemple avec différents types de tuiles"); if ($mapId) { echo "✓ Carte créée avec succès, ID: $mapId\n\n"; } else { echo "✗ Erreur lors de la création de la carte\n\n"; return; } // 3. Charger la carte depuis la base echo "3. Chargement de la carte depuis la base...\n"; $loadedMap = MapModel::findMap($mapId); if ($loadedMap) { echo "✓ Carte chargée: {$loadedMap->getName()}\n"; echo "Dimensions: {$loadedMap->getWidth()} x {$loadedMap->getHeight()}\n"; // Afficher quelques statistiques $stats = $loadedMap->getStatistics(); echo "Cases vides: {$stats['empty_count']} ({$stats['empty_percentage']}%)\n"; echo "Types présents: " . implode(', ', array_keys($stats['tile_type_counts'])) . "\n\n"; } else { echo "✗ Erreur lors du chargement de la carte\n\n"; } // 4. Mettre à jour la carte echo "4. Mise à jour de la carte...\n"; $loadedMap->setTile(1, 1, new Tile(['type' => 'river', 'resources' => ['water' => 1000]])); $loadedMap->setName("Carte exemple modifiée"); if (MapModel::update($mapId, $loadedMap, "Carte mise à jour avec une rivière")) { echo "✓ Carte mise à jour avec succès\n\n"; } else { echo "✗ Erreur lors de la mise à jour\n\n"; } // 5. Lister toutes les cartes avec pagination echo "5. Liste des cartes (pagination)...\n"; $paginated = MapModel::paginate(1, 5); echo "Page {$paginated['pagination']['current_page']} sur {$paginated['pagination']['total_pages']}\n"; echo "Total de cartes: {$paginated['pagination']['total']}\n"; foreach ($paginated['data'] as $mapData) { echo "- ID {$mapData['id']}: {$mapData['name']} ({$mapData['width']}x{$mapData['height']})\n"; } echo "\n"; // 6. Recherche de cartes echo "6. Recherche de cartes contenant 'exemple'...\n"; $searchResults = MapModel::search('exemple'); echo "Résultats trouvés: " . count($searchResults) . "\n"; foreach ($searchResults as $result) { echo "- {$result['name']} (ID: {$result['id']})\n"; } echo "\n"; // 7. Statistiques globales echo "7. Statistiques globales...\n"; $globalStats = MapModel::getGlobalStats(); echo "Total de cartes: {$globalStats['total_maps']}\n"; echo "Dimensions moyennes: {$globalStats['average_width']} x {$globalStats['average_height']}\n"; if ($globalStats['latest_map']) { echo "Dernière carte: {$globalStats['latest_map']['name']} (créée le {$globalStats['latest_map']['created_at']})\n"; } echo "\n"; // 8. Dupliquer une carte echo "8. Duplication de la carte...\n"; $duplicateId = MapModel::duplicate($mapId, "Copie de la carte exemple"); if ($duplicateId) { echo "✓ Carte dupliquée avec succès, nouvel ID: $duplicateId\n\n"; } else { echo "✗ Erreur lors de la duplication\n\n"; } // 9. Export de la carte echo "9. Export de la carte au format JSON...\n"; $exportData = MapModel::export($mapId, 'json'); if ($exportData) { echo "✓ Export réussi (" . strlen($exportData) . " caractères)\n"; echo "Aperçu: " . substr($exportData, 0, 100) . "...\n\n"; } else { echo "✗ Erreur lors de l'export\n\n"; } // 10. Nettoyage (optionnel - décommenter pour supprimer les cartes de test) /* echo "10. Suppression des cartes de test...\n"; if (MapModel::delete($mapId)) { echo "✓ Carte originale supprimée\n"; } if (MapModel::delete($duplicateId)) { echo "✓ Carte dupliquée supprimée\n"; } echo "\n"; */ echo "=== Exemple terminé ===\n"; } // Exécuter l'exemple si le fichier est appelé directement if (basename(__FILE__) === basename($_SERVER['PHP_SELF'] ?? '')) { runMapModelExample(); }