# Spécifications : Ville (Site) ## Définition Une ville est une entité sur la Carte du Monde qui génère le flux de visiteurs vers les zoos. ## Propriétés - **Nom** : Nom de la ville. - **Population** : Nombre de visiteurs potentiels maximum. - **Icône** : 🏙️ ## Mécanique d'Attraction - Les visiteurs partent de la ville pour aller vers les zoos. - **Facteur de Distance** : Plus un zoo est proche d'une ville, plus il attire de visiteurs. - **Facteur d'Attractivité** : La valeur et la diversité du zoo influencent le choix des visiteurs. ## Personnage contextuel (événements & interaction) Voir `maire.md`. ### Affichage Le maire s’affiche lorsque : - la ville est **actionnée** (sélection/clic ville, ouverture panneau ville) ; - un **événement** de ville survient (festival, grève, bonus économique, `CITY_EVENT`). ### Déclencheurs (exemples) | Event | Condition | Effet UI personnage | |---|---|---| | sélection ville | clic icône ville | portrait + synthèse (population, richesse, flux) | | `CITY_EVENT` | événement actif | bulle “Événement en cours” + impacts chiffrés | ### Skins & thèmes Portrait et accessoires suivent `theme.md` ; variantes “ville” possibles via `inventaire_skins.md`. # Annexes Techniques ## 1. Données et États ### Modèle de Données (JSON) ```json { "id": "uuid", "type": "city", "name": "string", "population": "integer", "wealth_factor": "float (0.5 - 2.0)", "iso_x": "integer", "iso_y": "integer", "z_index": "integer" } ``` ### Caractéristiques Initiales | Caractéristique | Valeur Moyenne | | :--- | :--- | | Population | 10,000 - 1,000,000 | | Richesse | 1.0 | ### Scores Initiaux **Niveau de Bonheur** : 50% (Influence la fréquence des visites). ## 2. Cycles de Vie et Apparition ### Conditions d'Apparition Génération carte. ### Conditions de Disparition **Désastre** : Ville détruite (Event rare "Météorite" ou "Crise Éco"). ### Hérédité **Jumelage** : Bonus permanent de flux (+5%) si relation max atteinte avec une ville. ## 3. Impacts Environnementaux ### Impact Température **Ilot de chaleur** : La ville est toujours +2°C par rapport à la campagne environnante. ### Impact Milieu (Biome) **Architecture** : Adaptée au biome (Igloos en Toundra, Tentes en Désert, Gratte-ciels en Plaine). ### Impact Saisons **Festivals** : Event saisonnier en ville (+Visiteurs pendant 24h). - Été : Carnaval. - Hiver : Marché de Noël. ### Impact Heure / Jour-Nuit **Lumières** : La ville brille la nuit (Pollution lumineuse visible). ## 4. Impacts Biologiques et Sociaux ### Impact Reproduction **Baby Boom** : Augmente la population de la ville (+Flux) pendant 1 semaine. ### Impact Mort **Épidémie** : Baisse population temporaire (-Flux). ### Impact Nourriture **Marché** : La ville vend de la nourriture au joueur (Source d'approvisionnement). ### Impact Attractivité (Visiteurs/Animaux) Source du flux. `Flux = Pop * (AttractivitéZoo / Distance²)`. ### Impact Valeur **PIB** : Influence le budget des visiteurs (Richesse). Une ville riche envoie des VIP. ## 5. Impacts Logistiques et Économiques ### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite) **Trafic** : Ralentit les camions traversant la ville aux heures de pointe (8h-9h, 17h-18h). ### Dépenses (Boutiques/Visiteurs) **Facteur Richesse** : Multiplie le budget des visiteurs issus de cette ville. ### Trajet Visiteurs Point de départ. Les visiteurs arrivent en bus/voiture depuis la ville. ## 6. Événements ### Événements du Jeu / Carte / Zoo / Ville / Visiteur * **Fête Nationale** : Flux x2. * **Grève** : Flux / 2. ## 7. Progression ### Tableau des Upgrades *Note : Campagnes Marketing ciblées.* | Niveau Campagne | Coût | Effet | | :--- | :--- | :--- | | 1 (Panneaux) | 500 | +5% Flux | | 2 (Radio) | 1500 | +10% Flux | | 3 (TV) | 5000 | +20% Flux | ## 8. Logique et Interfaces ### Pseudo-code Impacts ```javascript function calculateVisitorFlow(city, zoo): distance = getDistance(city, zoo) baseFlow = city.population * (zoo.attractiveness / (distance * distance)) if isPeakHour(): baseFlow *= 1.5 if city.hasEvent(): baseFlow *= 2.0 return baseFlow ``` ### Messages d'Infos / Alerte | ID | Niveau | Message | | :--- | :--- | :--- | | `CITY_EVENT` | Info | "C'est la fête à [NomVille] ! Attendez-vous à du monde." | # Annexes UX/UI ## 0. Direction Artistique & Vue * **Vue** : Isométrique (2.5D). * **Style** : Coloré, vivant, détails foisonnants (Réf: IMG_20260303_170253.jpg). * **Sprites** : 4 directions. * **Interactions** : * **Sélection** : Cliquer sur la base de l'élément (ou son sprite principal) pour le sélectionner. * **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris. ## 1. Expérience Utilisateur (UX) ### Visualisation Taille (Passif) **Description UX** : Distinguer les grandes villes des petites. **Description UI** : Taille de l'icône proportionnelle à la population. Gratte-ciels vs Maisons. **Emplacement** : Carte Monde. **Intégration** : Sprite. **Navigation** : Zoom sur la carte. **Événements** : `MAP_ZOOM`. #### Assets - **Musiques** : Ambiance urbaine (klaxons lointains, vent). - **Sons** : Bruit de trafic faible. - **Graphiques** : Sprites Ville (Petit, Moyen, Grand). - **Images** : Silhouette Skyline. - **Vidéos** : Lumières des fenêtres qui s'allument la nuit (Pixel Art animé). - **Animations** : Fumée des cheminées. - **Couleurs** : Gris/Bleu. - **Textes** : Nom Ville. - **Formes** : Cercle d'influence (zone de chalandise).