diff --git a/docs/specs/IMG_20260303_170253.jpg b/docs/specs/IMG_20260303_170253.jpg new file mode 100644 index 0000000..acf773b Binary files /dev/null and b/docs/specs/IMG_20260303_170253.jpg differ diff --git a/docs/specs/accueil_animaux.md b/docs/specs/accueil_animaux.md index bb8b91e..07584b5 100644 --- a/docs/specs/accueil_animaux.md +++ b/docs/specs/accueil_animaux.md @@ -1,11 +1,12 @@ # Spécifications : Accueil des Animaux ## Définition -Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou transferts). +Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou transferts). C'est le point d'entrée unique pour tout animal avant son placement en enclos. ## Fonctionnalités - **Acclimatation** : Période obligatoire avant de pouvoir placer l'animal sur la grille active. - **Stockage temporaire** : Évite de devoir placer immédiatement un animal acheté si le terrain n'est pas prêt. +- **Inspection** : Permet au joueur de voir les stats de l'animal avant placement. ## Niveaux d'Amélioration (7 niveaux) - **Coût** : Progressif par palier. @@ -19,58 +20,74 @@ Zone tampon pour les nouveaux animaux arrivant dans le zoo (achats adultes ou tr ```json { "id": "uuid", - "type": "animal_reception", + "type": "building_reception", + "created_at": "timestamp", + "updated_at": "timestamp", "level": "integer (1-7)", + "position": { "x": "integer", "y": "integer" }, "slots": [ - { "animal_id": "uuid", "arrival_time": "timestamp", "ready_time": "timestamp" } - ] + { + "slot_id": "integer (0-index)", + "animal_id": "uuid (nullable)", + "status": "enum (EMPTY, OCCUPIED, READY)", + "arrival_time": "timestamp", + "acclimatization_end_time": "timestamp", + "bonus_applied": "boolean" + } + ], + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` ### Caractéristiques Initiales -| Caractéristique | Valeur Initiale (Niv 1) | -| :--- | :--- | -| Temps Acclimatation | 10 minutes | -| Capacité | 1 animal | +| Caractéristique | Valeur Initiale (Niv 1) | Valeur Max (Niv 7) | +| :--- | :--- | :--- | +| Temps Acclimatation | 600 secondes (10 min) | 0 secondes (Instantané) | +| Capacité | 1 animal | 7 animaux | ### Scores Initiaux N/A ## 2. Cycles de Vie et Apparition ### Conditions d'Apparition -Présent au démarrage. +Présent au démarrage du jeu (Tutorial ou Nouvelle Partie). Position fixe généralement près de l'entrée. ### Conditions de Disparition -Indestructible. +Indestructible. Ne peut pas être vendu ni déplacé (sauf si feature de réaménagement global). ### Hérédité N/A ## 3. Impacts Environnementaux ### Impact Température -Zone neutre (T° idéale simulée). +Zone neutre (T° idéale simulée). Les animaux ne subissent pas de dégâts de température ici. ### Impact Milieu (Biome) -Zone neutre. +Zone neutre. Compatible avec tous les biomes d'animaux. ### Impact Saisons -Protégé. +Protégé des intempéries. ### Impact Heure / Jour-Nuit -N/A +Fonctionne 24/7. Pas de pénalité la nuit. ## 4. Impacts Biologiques et Sociaux ### Impact Reproduction -**Bonus Repro** : Un animal passant par un accueil de haut niveau gagne un bonus temporaire de fertilité (+10% à +50%). +**Bonus Repro** : Un animal passant par un accueil de haut niveau gagne un bonus temporaire de fertilité. +- Niv 1-3 : +0% +- Niv 4-6 : +10% fertilité (durée 2 jours in-game) +- Niv 7 : +25% fertilité (durée 5 jours in-game) ### Impact Mort -Pas de mort possible en zone d'accueil (Stase). +Pas de mort possible en zone d'accueil (Stase). Les jauges de faim/soif/santé sont gelées. ### Impact Nourriture -Nourri automatiquement. +Nourri automatiquement (coût nul ou inclus dans les frais de gestion globaux). ### Impact Attractivité (Visiteurs/Animaux) -N/A +N/A - Les visiteurs ne voient pas l'intérieur de l'accueil. ### Impact Valeur N/A @@ -78,56 +95,91 @@ N/A ## 5. Impacts Logistiques et Économiques ### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite) **Réduction Temps Acclimatation** : -| Niveau | Temps Base | -| :--- | :--- | -| 1 | 10 min | -| 2 | 8 min | -| 3 | 6 min | -| 4 | 4 min | -| 5 | 2 min | -| 6 | 1 min | -| 7 | Instantané | +| Niveau | Temps Base | Réduction % | +| :--- | :--- | :--- | +| 1 | 10 min | 0% | +| 2 | 8 min | 20% | +| 3 | 6 min | 40% | +| 4 | 4 min | 60% | +| 5 | 2 min | 80% | +| 6 | 1 min | 90% | +| 7 | Instantané | 100% | ### Dépenses (Boutiques/Visiteurs) N/A ### Trajet Visiteurs -N/A +N/A - Bâtiment administratif. ## 6. Événements ### Événements du Jeu / Carte / Zoo / Ville / Visiteur -* **Arrivée** : Animal livré par camion. -* **Prêt** : Animal prêt à être placé. +* **Arrivée (`ANIMAL_ARRIVAL`)** : Animal livré par camion, entre dans un slot libre. +* **Prêt (`ANIMAL_READY`)** : Le temps d'acclimatation est écoulé. +* **Placement (`ANIMAL_PLACED`)** : Le joueur sort l'animal de l'accueil vers un enclos. ## 7. Progression ### Tableau des Upgrades | Niveau | Coût (Pièces) | Capacité | Temps Acclimatation | Temps Construction | | :--- | :--- | :--- | :--- | :--- | | 1 | 100 | 1 | 10 min | 0s | -| 2 | 200 | 2 | 8 min | 0s | -| 3 | 400 | 3 | 6 min | 0s | -| 4 | 800 | 4 | 4 min | 0s | -| 5 | 1600 | 5 | 2 min | 0s | -| 6 | 3200 | 6 | 1 min | 0s | -| 7 | 6400 | 7 | 0 min | 0s | +| 2 | 200 | 2 | 8 min | 10s | +| 3 | 400 | 3 | 6 min | 30s | +| 4 | 800 | 4 | 4 min | 1m | +| 5 | 1600 | 5 | 2 min | 2m | +| 6 | 3200 | 6 | 1 min | 5m | +| 7 | 6400 | 7 | 0 min | 10m | ## 8. Logique et Interfaces ### Pseudo-code Impacts -``` -function updateReception(center): - for slot in center.slots: - if currentTime >= slot.ready_time: - notifyPlayer("ANIMAL_READY", slot.animal_id) +```python +def update_reception(reception_center, current_time): + # Vérification de l'intégrité + if not reception_center or not reception_center.slots: + return error("Invalid reception center") + + for slot in reception_center.slots: + if slot.status == "OCCUPIED": + # Vérifier si le temps est écoulé + if current_time >= slot.acclimatization_end_time: + slot.status = "READY" + trigger_event("ANIMAL_READY", {"animal_id": slot.animal_id}) + +def add_animal_to_reception(reception_center, animal): + # Trouver un slot vide + empty_slot = find_first_empty_slot(reception_center.slots) + + if not empty_slot: + return error("RECEPTION_FULL") + + # Calcul du temps selon le niveau + duration = get_acclimatization_duration(reception_center.level) + + empty_slot.animal_id = animal.id + empty_slot.arrival_time = now() + empty_slot.acclimatization_end_time = now() + duration + empty_slot.status = "OCCUPIED" + + return success() ``` ### Messages d'Infos / Alerte -| ID | Niveau | Message | -| :--- | :--- | :--- | -| `ANIMAL_READY` | Info | "Un nouvel animal est prêt à rejoindre le zoo !" | -| `RECEPTION_FULL` | Warning | "Accueil saturé, impossible d'acheter." | +| ID | Niveau | Message | Condition | +| :--- | :--- | :--- | :--- | +| `ANIMAL_READY` | Info | "Un nouvel animal est prêt à rejoindre le zoo !" | `slot.status` passe à `READY` | +| `RECEPTION_FULL` | Warning | "Accueil saturé, impossible d'acheter." | Tentative d'achat sans slot libre | +| `PLACEMENT_ERROR` | Error | "Impossible de placer ici (Enclos plein / Biome incompatible)." | Drag & Drop invalide | # 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) ### Arrivée Animal (Passif) **Description UX** : Le camion décharge un animal. Il apparaît dans l'Accueil en mode "Attente". @@ -187,3 +239,9 @@ function updateReception(center): - **Couleurs** : N/A - **Textes** : N/A - **Formes** : N/A + +### Vue Isométrique +- **Sprite Bâtiment** : 4 directions (Nord, Sud, Est, Ouest) pour s'aligner avec la route. +- **Occlusion** : Le bâtiment doit être semi-transparent si le joueur passe la souris derrière (pour voir les objets cachés). +- **Indicateur d'état** : Une icône flottante (bulle) au-dessus du bâtiment indique si un animal est prêt (point d'exclamation vert) ou en cours (sablier). +- **Z-Index** : Doit être trié correctement par rapport aux visiteurs passant devant. diff --git a/docs/specs/achat_upgrade_boutique.md b/docs/specs/achat_upgrade_boutique.md index 9928905..873c190 100644 --- a/docs/specs/achat_upgrade_boutique.md +++ b/docs/specs/achat_upgrade_boutique.md @@ -1,24 +1,79 @@ # Spécifications : Achat et Upgrade des Boutiques ## Construction -- Peut être construite sur n'importe quelle case vide. +- Peut être construite sur n'importe quelle case vide de type "Terrain". +- Nécessite une connexion à un chemin pour être accessible aux visiteurs. ## Upgrade (7 Niveaux) -- **Attrait** : Attire les visiteurs de plus loin sur la grille. -- **Revenu** : Augmente le montant dépensé par chaque visiteur qui passe sur la case. -- **Capacité** : Augmente le nombre de visiteurs pouvant interagir simultanément. +- **Attrait** : Attire les visiteurs de plus loin sur la grille (Rayon d'action). +- **Revenu** : Augmente le montant dépensé par chaque visiteur qui passe sur la case (Multiplicateur de prix). +- **Capacité** : Augmente le nombre de visiteurs pouvant interagir simultanément (File d'attente). # Annexes Techniques ## 1. Données et États -Voir `boutique.md` pour le modèle de données complet. +### Modèle de Données (Transaction Upgrade) +```json +{ + "transaction_id": "uuid", + "building_id": "uuid", + "building_type": "shop", + "current_level": "integer", + "target_level": "integer", + "cost": "float", + "currency": "coins", + "status": "enum (PENDING, COMPLETED, FAILED)", + "timestamp": "timestamp" +} +``` +*Voir `boutique.md` pour le modèle de données de l'entité Boutique.* ## 7. Progression ### Tableau des Upgrades -Voir `boutique.md` pour le tableau détaillé des coûts et effets par niveau. +*Voir `boutique.md` pour le tableau détaillé des coûts et effets par niveau.* + +## 8. Logique et Interfaces +### Pseudo-code Interaction +```python +def upgrade_shop(shop, player_wallet): + # Vérification niveau max + if shop.level >= MAX_LEVEL: + return error("MAX_LEVEL_REACHED") + + next_level_config = get_shop_config(shop.type, shop.level + 1) + cost = next_level_config.cost + + # Vérification fonds + if player_wallet.coins < cost: + return error("INSUFFICIENT_FUNDS") + + # Transaction + player_wallet.debit(cost) + shop.level += 1 + shop.stats = next_level_config.stats + shop.visual_state = "UPGRADING" # Déclenche anim + + start_upgrade_timer(shop, next_level_config.build_time) + + return success("UPGRADE_STARTED") +``` + +### Cas Limites +- **Fonds insuffisants** : Bouton grisé + Tooltip rouge. +- **Upgrade en cours** : Impossible de lancer un autre upgrade tant que le précédent n'est pas fini. +- **Boutique utilisée** : L'upgrade n'éjecte pas les visiteurs actuels, mais bloque l'entrée de nouveaux pendant les travaux (si temps > 0). # 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) ### Rénovation (Action) **Description UX** : Améliorer la boutique change son apparence et ses stats. @@ -38,3 +93,8 @@ Voir `boutique.md` pour le tableau détaillé des coûts et effets par niveau. - **Couleurs** : Doré (pour les niveaux élevés). - **Textes** : "Niveau Supérieur !". - **Formes** : Particules Étoiles. + +### Vue Isométrique +- **Travaux** : Si l'upgrade prend du temps, afficher un sprite "En travaux" (bâche, échafaudage) par-dessus la boutique. +- **Particules** : Lors de la complétion, explosion de confettis/étoiles en 3D isométrique au-dessus du toit. +- **Feedback** : Le bâtiment peut faire un petit saut (scale up/down) pour signifier l'upgrade. diff --git a/docs/specs/achat_upgrade_camion.md b/docs/specs/achat_upgrade_camion.md index 56b6717..5aa7acd 100644 --- a/docs/specs/achat_upgrade_camion.md +++ b/docs/specs/achat_upgrade_camion.md @@ -3,25 +3,68 @@ ## Achat - Le joueur possède un camion par défaut. - Possibilité d'acheter des camions supplémentaires (si le design autorise plusieurs flottes). +- **Limite** : Nombre de camions limité par le niveau du Garage (si existant) ou du QG. ## Upgrade (7 Niveaux) - **Niveau 1** : Camion standard. - **Niveau 2-7** : - - **Vitesse** : Augmente la vitesse de déplacement sur la carte du monde. + - **Vitesse** : Augmente la vitesse de déplacement sur la carte du monde (réduit le temps de mission). - **Confort** : Réduit la perte de santé/stress des animaux transportés. - **Capacité** : (Optionnel) Transport de plusieurs animaux ? *Actuellement 1 unité = 1 camion.* + - **Fiabilité** : Réduit les chances de panne (événement aléatoire "Retard"). # Annexes Techniques ## 1. Données et États -Voir `camion.md` pour le modèle de données complet. +### Modèle de Données (Action) +```json +{ + "action": "upgrade_truck", + "truck_id": "uuid", + "current_stats": { "speed": 50, "comfort": 10 }, + "next_stats": { "speed": 60, "comfort": 20 }, + "cost": 500 +} +``` +*Voir `camion.md` pour le modèle de données complet.* ## 7. Progression ### Tableau des Upgrades -Voir `camion.md` pour le tableau détaillé des coûts et effets par niveau. +*Voir `camion.md` pour le tableau détaillé des coûts et effets par niveau.* + +## 8. Logique et Interfaces +### Pseudo-code +```python +def upgrade_truck(truck, player): + if truck.is_on_mission: + return error("TRUCK_BUSY", "Impossible d'améliorer un camion en mission.") + + cost = get_upgrade_cost(truck.level + 1) + if player.money < cost: + return error("NO_MONEY") + + player.money -= cost + truck.level += 1 + truck.update_stats() + + return success("TRUCK_UPGRADED") +``` + +### Cas Limites +- **Camion en mission** : Bouton upgrade désactivé avec message "En mission". +- **Niveau Max** : Afficher "Max" à la place du prix. # 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) ### Garage / Atelier (Consultation) **Description UX** : Le joueur gère sa flotte de camions. @@ -60,3 +103,7 @@ Voir `camion.md` pour le tableau détaillé des coûts et effets par niveau. - **Couleurs** : Palette 16 couleurs. - **Textes** : "Peinture fraîche !". - **Formes** : Taches de peinture au sol. + +### Vue Isométrique +- **Garage** : Si le garage est un bâtiment sur la carte, l'animation d'upgrade se joue dessus. +- **Carte Monde** : Le sprite du camion sur la carte du monde change pour refléter son niveau (ex: plus de fumée, design plus aérodynamique). diff --git a/docs/specs/achat_upgrade_case.md b/docs/specs/achat_upgrade_case.md index 634c799..960c133 100644 --- a/docs/specs/achat_upgrade_case.md +++ b/docs/specs/achat_upgrade_case.md @@ -3,6 +3,7 @@ ## Construction - Sur une case vide de type "Terrain", le joueur peut acheter un bâtiment. - Le coût dépend du type de bâtiment. +- **Pré-requis** : Certaines cases peuvent nécessiter un déblayage (rochers, arbres) avant construction. ## Types Constructibles - Nurserie @@ -10,12 +11,22 @@ - (Les autres bâtiments comme Billeterie/Recherche sont souvent uniques et upgradables, mais on peut imaginer en construire d'autres si le design le permet). ## Upgrade de Case (Terrain) -- **Changement de Milieu** : Payer pour changer la couleur (Biome) d'une case. -- **Changement de Température** : Payer pour installer un régulateur thermique sur une case. +- **Changement de Milieu (Terraforming)** : Payer pour changer la couleur (Biome) d'une case. +- **Changement de Température** : Payer pour installer un régulateur thermique sur une case (invisible ou petit objet technique). # Annexes Techniques ## 1. Données et États +### Modèle de Données (Modification Case) +```json +{ + "tile_id": "x_y_coords", + "action": "terraform", + "target_biome": "savanna", + "cost": 500, + "duration_ms": 2000 +} +``` Voir `case_zoo.md` et `achat_upgrade_generique.md`. ## 7. Progression @@ -23,8 +34,8 @@ Voir `case_zoo.md` et `achat_upgrade_generique.md`. **Changement de Milieu** : | Niveau | Coût | Précision | Temps | | :--- | :--- | :--- | :--- | -| 1 | 500 | Changement vers biome adjacent | 0s | -| 7 | 5000 | Changement vers n'importe quel biome | 0s | +| 1 | 500 | Changement vers biome adjacent uniquement | 5s | +| 7 | 5000 | Changement vers n'importe quel biome (Terraformation avancée) | 2s | **Régulateur Thermique** : | Niveau | Coût | Plage Réglage | Temps | @@ -32,8 +43,38 @@ Voir `case_zoo.md` et `achat_upgrade_generique.md`. | 1 | 200 | +/- 5°C | 0s | | 7 | 2000 | +/- 50°C | 0s | +## 8. Logique et Interfaces +### Algorithme de Terraformation +```python +def terraform_tile(tile, target_biome, player): + # Vérifier adjacence (si niveau bas) + if player.terraform_level < 7: + neighbors = get_neighbors(tile) + if target_biome not in [n.biome for n in neighbors]: + return error("BIOME_NOT_ADJACENT", "Vous devez étendre un biome existant.") + + if player.money < get_terraform_cost(target_biome): + return error("NO_MONEY") + + player.money -= get_terraform_cost(target_biome) + tile.biome = target_biome + update_visuals(tile) + check_animal_compatibility(tile) # Alerte si un animal est dessus + + return success() +``` + # 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) ### Modification Terrain (Action) **Description UX** : Le joueur sélectionne une case et choisit "Modifier Biome" ou "Température". @@ -54,3 +95,8 @@ Voir `case_zoo.md` et `achat_upgrade_generique.md`. - **Couleurs** : Vert, Jaune, Blanc. - **Textes** : "Coût : X". - **Formes** : Curseur Pinceau. + +### Vue Isométrique +- **Grid Overlay** : Lors de l'édition, afficher la grille en surbrillance pour bien délimiter les cases. +- **Feedback Visuel** : La case "saute" légèrement ou émet de la poussière lors du changement de biome. +- **Bords** : Gérer les transitions douces (blends) entre deux cases de biomes différents pour éviter l'effet damier trop strict (sauf si style voxel strict). diff --git a/docs/specs/achat_upgrade_case_zoo.md b/docs/specs/achat_upgrade_case_zoo.md index a3a1ceb..acc054c 100644 --- a/docs/specs/achat_upgrade_case_zoo.md +++ b/docs/specs/achat_upgrade_case_zoo.md @@ -4,12 +4,23 @@ - **Action** : Acheter une nouvelle parcelle de terrain adjacente à la grille existante. - **Coût** : Très élevé, progressif selon la taille actuelle du zoo. - **Contenu** : La nouvelle case arrive avec un biome par défaut (selon sa position géographique Prairie/Océan/Montagne) et vide. +- **Contraintes** : Limité par la taille de la carte globale ("Monde" ou "Région"). # Annexes Techniques ## 1. Données et États ### Modèle de Données (JSON) Action sur l'objet `Zoo` (dimensions). +```json +{ + "zoo_id": "uuid", + "dimensions": { "width": 5, "height": 6 }, + "expansion_history": [ + { "direction": "EAST", "cost": 1000, "timestamp": "..." } + ], + "max_dimensions": { "width": 20, "height": 20 } +} +``` ### Caractéristiques Initiales **Taille Initiale** : 5x6 cases (30 cases). @@ -25,8 +36,39 @@ Action sur l'objet `Zoo` (dimensions). | +1 Colonne (Est 2) | 5000 | +Hauteur cases | | +1 Ligne (Sud 2) | 5000 | +Largeur cases | +## 8. Logique et Interfaces +### Algorithme d'Expansion +```python +def expand_zoo(zoo, direction, player): + cost = calculate_expansion_cost(zoo, direction) + + if player.money < cost: + return error("INSUFFICIENT_FUNDS") + + if reaches_world_limit(zoo, direction): + return error("WORLD_LIMIT_REACHED") + + player.money -= cost + + # Mise à jour de la grille + new_cells = generate_new_strip(direction, zoo.dimensions) + zoo.grid.merge(new_cells) + zoo.update_dimensions(direction) + + return success("ZOO_EXPANDED") +``` + # 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) ### Achat Parcelle (Action) **Description UX** : Le joueur clique sur une zone "Hors Limites" adjacente pour l'acheter. @@ -46,3 +88,8 @@ Action sur l'objet `Zoo` (dimensions). - **Couleurs** : Gris (Inaccessible) -> Vert (Accessible). - **Textes** : "Acheter Terrain (X Pièces)". - **Formes** : Carré. + +### Vue Isométrique +- **Brouillard de Guerre** : Les zones non achetées sont couvertes par des nuages ou un brouillard semi-transparent. +- **Dévoilement** : Lors de l'achat, les nuages se dissipent (fade out + scale up) pour révéler le nouveau terrain. +- **Clôtures** : Les clôtures délimitant le zoo se déplacent automatiquement vers la nouvelle limite. diff --git a/docs/specs/achat_upgrade_centre_recherche.md b/docs/specs/achat_upgrade_centre_recherche.md index e84650e..d6e93e7 100644 --- a/docs/specs/achat_upgrade_centre_recherche.md +++ b/docs/specs/achat_upgrade_centre_recherche.md @@ -3,18 +3,64 @@ ## Upgrade (7 Niveaux) - **Production** : Augmente le nombre d'Unités de Recherche générées par heure. - **Portée** : Augmente le rayon de visibilité sur les offres des autres zoos (voir les détails des animaux lointains). +- **Vitesse** : Réduit le temps nécessaire pour compléter une recherche technologique. # Annexes Techniques ## 1. Données et États -Voir `centre_recherche.md` pour le modèle de données complet. +### Modèle de Données (Transaction) +```json +{ + "action": "upgrade_research_center", + "building_id": "uuid", + "current_level": 2, + "cost": 1500, + "currency": "coins", + "timestamp": "timestamp" +} +``` +*Voir `centre_recherche.md` pour le modèle de données complet.* ## 7. Progression ### Tableau des Upgrades -Voir `centre_recherche.md` pour le tableau détaillé des coûts et effets par niveau. +*Voir `centre_recherche.md` pour le tableau détaillé des coûts et effets par niveau.* + +## 8. Logique et Interfaces +### Pseudo-code Interaction +```python +def upgrade_research_center(center, player): + # Vérifier si une recherche est en cours (bloquant ?) + if center.current_research_project: + return error("RESEARCH_BUSY", "Attendez la fin du projet en cours.") + + cost = get_upgrade_cost("research_center", center.level + 1) + + if player.money < cost: + return error("INSUFFICIENT_FUNDS") + + player.money -= cost + center.level += 1 + center.production_rate *= 1.2 # +20% par niveau + center.range += 1 # +1 case de rayon + + return success("UPGRADE_COMPLETE") +``` + +### Cas Limites +- **Recherche Active** : L'upgrade ne doit pas annuler la recherche en cours, mais peut la mettre en pause ou simplement s'appliquer après. (Choix : S'applique immédiatement sur le taux de production restant). +- **Max Level** : Désactiver le bouton. # 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) ### Arbre Technologique (Consultation) **Description UX** : Visualiser les paliers de recherche. @@ -34,3 +80,8 @@ Voir `centre_recherche.md` pour le tableau détaillé des coûts et effets par n - **Couleurs** : Bleu (Science). - **Textes** : "Niveau Suivant : Portée +10km". - **Formes** : Hexagones. + +### Vue Isométrique +- **Antennes** : À chaque niveau, des antennes paraboliques ou des équipements s'ajoutent sur le toit. +- **Lumières** : Les lumières du bâtiment changent (plus intenses, clignotantes) pour montrer l'activité accrue. +- **Animation** : Les antennes tournent en boucle. diff --git a/docs/specs/achat_upgrade_generique.md b/docs/specs/achat_upgrade_generique.md index 1a6104a..fca02d8 100644 --- a/docs/specs/achat_upgrade_generique.md +++ b/docs/specs/achat_upgrade_generique.md @@ -13,7 +13,23 @@ ## 1. Données et États ### Modèle de Données (JSON) -**Transaction** : `{ "id": "uuid", "type": "BUY/UPGRADE", "item": "string", "cost": "int", "timestamp": "date" }`. +**Transaction** : +```json +{ + "id": "uuid", + "type": "BUY/UPGRADE", + "item_type": "string", + "item_id": "uuid", + "cost": "int", + "currency": "coins", + "status": "enum (SUCCESS, FAILED)", + "failure_reason": "string (optional)", + "timestamp": "date", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" +} +``` ### Caractéristiques Initiales **Solde Joueur** : Voir `joueur.md`. @@ -36,7 +52,7 @@ **Isolation** : Les bâtiments de haut niveau résistent mieux aux coûts énergétiques (Chauffage/Clim -10% par niveau). ### Impact Milieu (Biome) -**Adaptation** : Construire sur un biome "difficile" (Toundra, Désert) coûte +20% à l'achat initial. +**Adaptation** : Construire sur un biome "difficile" (Toundra, Désert) coûte +20% à l'achat initial (frais de fondations). ### Impact Saisons **Soldes** : Certains items moins chers en Hiver (-15% sur les chauffages). @@ -94,21 +110,44 @@ ### Pseudo-code Impacts ```javascript function processPurchase(player, item): + # Vérification pré-requis (ex: niveau joueur) + if player.level < item.required_level: + emitEvent("BUY_FAIL", "Niveau joueur insuffisant") + return + + # Vérification espace (si applicable) + if item.is_physical and not map.hasSpace(item.size): + emitEvent("BUY_FAIL", "Pas de place") + return + if player.coins >= item.cost: player.coins -= item.cost player.inventory.add(item) emitEvent("BUY_SUCCESS") + logTransaction(player, item, "SUCCESS") else: emitEvent("BUY_FAIL", "Fonds insuffisants") + logTransaction(player, item, "FAILED") ``` ### Messages d'Infos / Alerte | ID | Niveau | Message | | :--- | :--- | :--- | | `FUNDS_LOW` | Alerte | "Pas assez de pièces !" | +| `LEVEL_LOW` | Alerte | "Niveau X requis pour acheter ceci." | +| `NO_SPACE` | Alerte | "Impossible de construire ici." | # 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) ### Interface d'Achat (Consultation) **Description UX** : Le joueur ouvre le menu de construction ou d'upgrade. diff --git a/docs/specs/achat_upgrade_nurserie.md b/docs/specs/achat_upgrade_nurserie.md index 32f3125..3870df2 100644 --- a/docs/specs/achat_upgrade_nurserie.md +++ b/docs/specs/achat_upgrade_nurserie.md @@ -2,23 +2,66 @@ ## Construction - Nécessaire pour faire éclore plus d'œufs simultanément. +- Peut être construite sur une case vide. ## Upgrade (7 Niveaux) - **Incubation** : Réduit le temps d'éclosion. - **Soins** : Augmente les chances de survie des bébés (réduit l'impact des écarts de température). -- **Génétique** : (Niveaux élevés) Augmente légèrement la probabilité d'obtenir une rareté supérieure. +- **Génétique** : (Niveaux élevés) Augmente légèrement la probabilité d'obtenir une rareté supérieure (Shiny/Albinos). +- **Capacité** : Débloque des slots d'incubation supplémentaires. # Annexes Techniques ## 1. Données et États -Voir `nurserie.md` pour le modèle de données complet. +### Modèle de Données (Action) +```json +{ + "action": "upgrade_nursery", + "building_id": "uuid", + "unlocked_slots": 3, + "incubation_speed_bonus": 0.2 +} +``` +*Voir `nurserie.md` pour le modèle de données complet.* ## 7. Progression ### Tableau des Upgrades -Voir `nurserie.md` pour le tableau détaillé des coûts et effets par niveau. +*Voir `nurserie.md` pour le tableau détaillé des coûts et effets par niveau.* + +## 8. Logique et Interfaces +### Pseudo-code +```python +def upgrade_nursery(nursery, player): + cost = get_upgrade_cost("nursery", nursery.level + 1) + + if player.money < cost: + return error("NO_MONEY") + + player.money -= cost + nursery.level += 1 + + # Déblocage de slots tous les 2 niveaux + if nursery.level % 2 == 0: + nursery.slots.append(create_empty_slot()) + + return success("NURSERY_UPGRADED") +``` + +### Cas Limites +- **Incubateurs pleins** : L'upgrade n'affecte pas les œufs en cours (ou réduit leur temps restant proportionnellement). +- **Max Slots** : Limité à 6 ou 8 slots max pour l'UI. # 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) ### Extension (Action) **Description UX** : Ajouter des slots d'œufs. @@ -38,3 +81,7 @@ Voir `nurserie.md` pour le tableau détaillé des coûts et effets par niveau. - **Couleurs** : Rose pastel et Bleu ciel. - **Textes** : "Slot débloqué". - **Formes** : Cercles doux (œufs). + +### Vue Isométrique +- **Taille** : Le bâtiment peut s'agrandir visuellement (ajouter une aile) aux niveaux 3 et 5. +- **Fenêtres** : On peut voir la lumière chaude à travers les fenêtres la nuit (incubateurs). diff --git a/docs/specs/affiche_enclos.md b/docs/specs/affiche_enclos.md index 4bbce3c..fcfbf67 100644 --- a/docs/specs/affiche_enclos.md +++ b/docs/specs/affiche_enclos.md @@ -5,7 +5,7 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim ## 2. Fonctions * **Information :** Indique aux visiteurs (et au joueur) quel animal se trouve ici. -* **Éducation :** Augmente légèrement le score d'éducation du zoo. +* **Éducation :** Augmente légèrement le score d'éducation du zoo (les visiteurs s'arrêtent pour lire). * **Esthétique :** Habille les clôtures et rend le zoo plus réaliste. ## 3. Icone @@ -15,6 +15,7 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim ## 4. Interactions * **Clic :** Ouvre la fiche encyclopédique de l'animal ("Zoopédia"). * **Personnalisation :** (Optionnel) Changer le style du cadre ou l'image. +* **Maintenance :** Peut être vandalisé (tagué) ou cassé, nécessitant une réparation par un agent d'entretien. ## 5. Annexes Techniques @@ -23,20 +24,61 @@ Panneau informatif fixé sur la clôture d'un enclos, présentant l'espèce anim { "sign_id": "sign_lion_01", "parent_enclosure_id": "enclosure_lions_01", - "position": {"x": 10, "y": 11, "face": "south"}, // Position sur la grille et orientation + "created_at": "timestamp", + "updated_at": "timestamp", + "position": { + "x": 10, + "y": 11, + "face": "enum (NORTH, SOUTH, EAST, WEST)" + }, + "style_id": "wood_basic", + "status": "enum (OK, BROKEN, TAGGED)", "animal_info": { "name": "Lion d'Afrique", "scientific_name": "Panthera leo", - "conservation_status": "VU" // Vulnerable - } + "conservation_status": "VU" + }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` ### Règles Métier * **Placement Auto :** Le jeu détermine la meilleure position (côté sud ou est généralement, face au chemin le plus proche). * **Unicité :** Une seule affiche par enclos fusionné (ou une tous les X cases de périmètre). +* **Mise à jour :** Si l'animal change (enclos vidé puis rempli avec autre chose), l'affiche se met à jour automatiquement. + +### Algorithme de Placement +```python +def place_sign(enclosure): + # Trouver les murs adjacents à un chemin + valid_walls = [] + for wall in enclosure.walls: + if is_path(wall.neighbor): + valid_walls.append(wall) + + # Priorité : Sud > Est > Ouest > Nord (pour visibilité isométrique) + best_wall = select_best_wall(valid_walls) + + create_sign(best_wall.position, best_wall.orientation) +``` ## 6. Annexes UX/UI * **Visuel :** Petit panneau en bois avec une image miniature de l'animal. * **Lisibilité :** Doit être visible sans cacher les animaux derrière. * **Zoom :** Devient plus détaillé ou affiche une bulle d'info au survol de la souris. +* **Vue Isométrique :** + * **Orientation :** Le sprite doit correspondre à l'orientation du mur (4 sprites différents). + * **Z-Index :** Doit être dessiné *après* la clôture mais *avant* les visiteurs passant devant. + + +# 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. diff --git a/docs/specs/agent_securite.md b/docs/specs/agent_securite.md index ebed5da..bc0a99d 100644 --- a/docs/specs/agent_securite.md +++ b/docs/specs/agent_securite.md @@ -7,6 +7,7 @@ Employé responsable de l'ordre et de la sécurité dans le zoo. Il gère les vi * **Surveillance :** Patrouille dans les allées pour rassurer les visiteurs (+attractivité). * **Intervention :** Expulse les visiteurs qui jettent des déchets ou embêtent les animaux. * **Protection :** Capture les animaux échappés (avec filet ou tranquillisant). +* **Dissuasion :** Sa simple présence réduit la probabilité d'actes de vandalisme dans un rayon donné. ## 3. Icone * **Représentation :** Écusson ou Casquette de police. @@ -15,6 +16,7 @@ Employé responsable de l'ordre et de la sécurité dans le zoo. Il gère les vi ## 4. Interactions * **Recrutement :** Menu "Employés", coût en pièces. * **Ordre :** Le joueur peut cliquer sur une zone pour envoyer l'agent en priorité. +* **Licenciement :** Possible via le menu employé. ## 5. Annexes Techniques @@ -24,20 +26,67 @@ Employé responsable de l'ordre et de la sécurité dans le zoo. Il gère les vi "employee_id": "security_05", "type": "agent_securite", "name": "Sgt. Pepper", + "created_at": "timestamp", "salary": 40, "hire_cost": 400, + "state": "enum (PATROL, CHASE, REST, INTERACT)", + "position": { "x": 12.5, "y": 14.0 }, + "target_position": { "x": 20, "y": 10 }, "stats": { - "intimidation": 10, // Efficacité contre vandales - "speed": 1.1 - } + "intimidation": 10, + "speed": 1.1, + "stamina": 100 + }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` ### Règles Métier -* La présence d'agents réduit le taux de "mécontentement" des visiteurs dû à la foule ou aux déchets. -* Nécessaire pour débloquer certains animaux dangereux. +* **Rayon d'action :** 5 cases autour de lui. +* **Fatigue :** Doit se reposer au Staff Room toutes les 4h in-game. +* **Priorité :** Animal échappé > Vandalism > Déchets > Patrouille. + +### Algorithme de Comportement (FSM) +```python +def update_security_agent(agent, world): + if agent.state == "REST": + agent.stamina += 5 + if agent.stamina >= 100: + agent.state = "PATROL" + return + + # Scan des menaces + threat = scan_for_threats(agent.position, radius=10) + + if threat: + agent.state = "CHASE" + agent.target = threat.position + move_towards(agent, threat.position, agent.speed * 1.5) # Course + if distance(agent, threat) < 1: + neutralize(threat) + else: + agent.state = "PATROL" + patrol_randomly(agent) +``` ## 6. Annexes UX/UI * **Visuel Carte :** Personnage en uniforme bleu. -* **Animation :** Siffle ou fait des grands gestes. +* **Animation :** + * **Marche :** Calme, mains dans le dos. + * **Course :** Rapide, sifflet à la bouche. + * **Action :** Sort un carnet (amende) ou un filet (animal). * **Feedback :** Les visiteurs s'écartent sur son passage. +* **Vue Isométrique :** Sprite 8 directions pour des déplacements fluides. + + +# 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. diff --git a/docs/specs/agrandissement_carte.md b/docs/specs/agrandissement_carte.md index 4ebc91a..50598c5 100644 --- a/docs/specs/agrandissement_carte.md +++ b/docs/specs/agrandissement_carte.md @@ -14,6 +14,16 @@ La carte du monde est vaste, mais le joueur ne voit initialement qu'une petite z ## 1. Données et États ### Modèle de Données (JSON) Propriété `view_radius` sur `Zoo` ou `Player`. +```json +{ + "player_id": "uuid", + "world_map_state": { + "view_radius_km": 100, + "unlocked_zones": ["zone_0_0", "zone_0_1"], + "fog_of_war_mask": "bitmask_string" + } +} +``` ### Caractéristiques Initiales | Caractéristique | Valeur Initiale | @@ -32,8 +42,38 @@ Propriété `view_radius` sur `Zoo` ou `Player`. | 6 | 2500 | 1200 km | | 7 | 5000 | 2000 km | +## 8. Logique et Interfaces +### Algorithme d'Exploration +```python +def explore_world(player): + next_level = get_next_exploration_level(player.exploration_level) + cost = next_level.cost + + if player.research_points < cost: + return error("NOT_ENOUGH_RP", "Points de recherche insuffisants.") + + player.research_points -= cost + player.exploration_level += 1 + player.view_radius = next_level.radius + + # Révéler les POI dans le nouveau rayon + new_pois = find_pois_in_radius(player.zoo_location, player.view_radius) + notify_discovery(new_pois) + + return success("EXPLORATION_SUCCESS") +``` + # 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) ### Découverte (Passif/Action) **Description UX** : En payant des points de recherche, le brouillard de guerre recule sur la carte du monde. @@ -53,3 +93,7 @@ Propriété `view_radius` sur `Zoo` ou `Player`. - **Couleurs** : Blanc/Gris (Nuages). - **Textes** : "Nouvelle zone découverte !". - **Formes** : Cercle (Rayon de vue). + +### Vue Isométrique +- **Carte** : La carte du monde peut être stylisée comme une carte papier posée sur une table, ou un globe holographique. +- **Bords** : Les bords de la zone connue sont flous ou déchirés. diff --git a/docs/specs/animal_generique.md b/docs/specs/animal_generique.md index 538e992..3057d91 100644 --- a/docs/specs/animal_generique.md +++ b/docs/specs/animal_generique.md @@ -9,7 +9,8 @@ Entité biologique principale du jeu. - **Génétique** : - **Couleur** : 15 variations. - **Rareté** : 5 niveaux (pondération Fibonacci). -- **État** : Faim, Température, Santé, Âge. + - **Traits** : Caractéristiques spéciales (ex: "Gourmand", "Agile"). +- **État** : Faim, Température, Santé, Âge, Stress. - **Cycle de vie** : Œuf -> Bébé -> Adulte -> Mort. ## Besoins @@ -18,10 +19,6 @@ Entité biologique principale du jeu. - **Social** : Besoin de congénères (reproduction) ou de solitude (selon espèce). - **Enrichissement** : Besoin d'un objet spécial dans l'enclos (ex: Arbre à singe). -## Mort -Causes possibles : Faim, Froid/Chaud, Solitude, Maladie, Vieillesse (si implémenté), Attaque (si implémenté). -Conséquence : Perte sèche, pénalité d'attractivité. - # Annexes Techniques ## 1. Données et États @@ -38,14 +35,20 @@ Conséquence : Perte sèche, pénalité d'attractivité. "health": "float (0-100)", "hunger": "float (0-100)", "temperature_comfort": "float (-1.0 to 1.0)", - "stress": "float (0-100)" + "stress": "float (0-100)", + "energy": "float (0-100)" }, "genetics": { "parent_a_id": "uuid_v4 | null", "parent_b_id": "uuid_v4 | null", - "mutation_factor": "float" + "mutation_factor": "float", + "traits": ["glutton", "nocturnal"] }, - "position": { "x": "int", "y": "int" } + "position": { "x": "float", "y": "float", "z": "float" }, + "orientation": "enum (N, S, E, W)", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -57,12 +60,6 @@ Conséquence : Perte sèche, pénalité d'attractivité. | Stress | 0.0 | | Âge | 0 (Bébé) | -### Scores Initiaux -| Score | Valeur | -| :--- | :--- | -| Valeur Vente (Base) | 10 * Fibonacci(Rareté) | -| Attractivité (Base) | 5 * Rareté | - ## 2. Cycles de Vie et Apparition ### Conditions d'Apparition | Type | Condition | @@ -79,12 +76,6 @@ Conséquence : Perte sèche, pénalité d'attractivité. | Vente | Transaction validée | | Libération | Action joueur | -### Hérédité -| Paramètre | Formule / Logique | -| :--- | :--- | -| Rareté | `Moyenne(Parents) + Random(-1, +1)` (Pondéré par mutation) | -| Couleur | `Parent_A` (50%) ou `Parent_B` (50%) + Faible chance mutation | - ## 3. Impacts Environnementaux ### Impact Température | Delta T° (Idéal - Réel) | Effet sur Santé / Heure | Effet sur Stress / Heure | @@ -102,110 +93,31 @@ Conséquence : Perte sèche, pénalité d'attractivité. | Adjacente (Cercle chromatique) | 0 | 0 | | Opposée | -5 | +10 | -### Impact Saisons -| Saison | Modificateur Faim | Modificateur Santé | -| :--- | :--- | :--- | -| Printemps | Normal | Bonus Régénération | -| Été | +10% (Soif/Faim) | Malus si T° > Seuil | -| Automne | Normal | Normal | -| Hiver | +20% (Besoin énergie) | Malus si T° < Seuil | - -### Impact Heure / Jour-Nuit -| Cycle | Modificateur Faim | Modificateur Stress | -| :--- | :--- | :--- | -| Jour | Normal | Normal | -| Nuit | -50% (Sommeil) | Récupération rapide (si calme) | - -## 4. Impacts Biologiques et Sociaux -### Impact Reproduction -| Condition | Bonus/Malus Score Repro | -| :--- | :--- | -| Santé > 80% | +10 | -| Faim < 20% | +10 | -| Stress < 10% | +20 | -| Partenaire compatible < 2 cases | Déclencheur | - -### Impact Mort -| Événement | Effet | -| :--- | :--- | -| Mort d'un congénère (Rayon 5) | Stress +20 (Immédiat) | -| Mort isolée | Stress +5 (Ennui) | - -### Impact Nourriture -| État Faim | Effet Santé / Heure | -| :--- | :--- | -| 0-20% | +2 | -| 20-50% | 0 | -| 50-80% | -2 | -| 80-100% | -10 | - -### Impact Attractivité (Visiteurs/Animaux) -| Rareté | Attractivité (Rayon d'action) | -| :--- | :--- | -| 1 (Commun) | 2 cases | -| 2 (Peu commun) | 3 cases | -| 3 (Rare) | 5 cases | -| 4 (Épique) | 8 cases | -| 5 (Légendaire) | 12 cases (Tout le zoo) | - -### Impact Valeur -| Facteur | Multiplicateur Valeur | -| :--- | :--- | -| Santé 100% | x1.2 | -| Santé < 50% | x0.5 | -| Âge (Adulte jeune) | x1.5 | -| Âge (Vieux) | x0.8 | - -## 5. Impacts Logistiques et Économiques -### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite) -**Vitesse Déplacement** : Varie selon l'espèce. -- **Lent** (Tortue) : 0.5 case/sec. -- **Moyen** (Zèbre) : 1 case/sec. -- **Rapide** (Guépard) : 2 cases/sec. - -### Dépenses (Boutiques/Visiteurs) -**Coût Nourriture** : -- **Petit** : 1 unité/jour. -- **Moyen** : 2 unités/jour. -- **Grand** : 5 unités/jour. - -### Trajet Visiteurs -**Point d'Intérêt** : Les visiteurs s'arrêtent 5 à 10 secondes devant l'enclos pour observer l'animal (si visible). - -## 6. Événements -### Événements du Jeu / Carte / Zoo / Ville / Visiteur -* **Maladie** : Si Santé < 20% et hygiène faible. -* **Naissance** : Si conditions reproduction réunies. -* **Mort** : Si Santé <= 0. -* **Évasion** : Si clôture cassée (Probabilité faible). - -## 7. Progression -### Tableau des Upgrades -*Note : L'animal gagne de l'expérience en vieillissant.* -| Niveau Expérience | Nom | Bonus Valeur | Bonus Attractivité | -| :--- | :--- | :--- | :--- | -| 1 (Jeune) | Novice | +0% | +0% | -| 2 (Adulte) | Mature | +10% | +10% | -| 3 (Vétéran) | Star | +20% | +30% | -| 4 (Doyen) | Légende | +50% | +100% | - ## 8. Logique et Interfaces ### Pseudo-code Impacts ```javascript function updateAnimal(animal, context): + # Gestion Température deltaTemp = abs(animal.idealTemp - context.tileTemp) if deltaTemp > 0: animal.health -= tableImpactTemp[deltaTemp] animal.stress += tableImpactTemp[deltaTemp] * 0.5 + # Gestion Biome if context.tileBiome != animal.idealBiome: animal.stress += 5 - if animal.hunger > 0: + # Gestion Faim + if animal.hunger < 100: animal.hunger += baseHungerRate * context.seasonMod + else: + animal.health -= 10 # Famine - if animal.hunger >= 100: - animal.health -= 10 + # Gestion Reproduction + if canReproduce(animal): + mate = findMate(animal) + if mate: + startReproduction(animal, mate) ``` ### Messages d'Infos / Alerte @@ -218,6 +130,15 @@ function updateAnimal(animal, context): # 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) ### Vie Quotidienne (Passif) **Description UX** : L'animal vit sa vie sur la grille. Il bouge, mange, dort. @@ -238,40 +159,7 @@ function updateAnimal(animal, context): - **Textes** : Bulle "Zzz" (Sommeil), "!" (Alerte). - **Formes** : Ombre portée ovale sous l'animal. -### Consultation (Consultation) -**Description UX** : Le joueur clique sur l'animal pour voir ses détails (Santé, Faim, Génétique). -**Description UI** : **Bottom Sheet** (Mobile) ou Panneau Latéral (Desktop) pour ne pas masquer le jeu. Jauges colorées. Arbre généalogique simplifié. -**Emplacement** : Case Zoo. -**Intégration** : Focus caméra sur l'animal. -**Navigation** : Clic Animal -> Panneau. -**Événements** : `SELECT_ANIMAL`. - -#### Assets -- **Musiques** : Thème "Consultation" (calme, analytique). -- **Sons** : Cri spécifique de l'animal sélectionné. -- **Graphiques** : Portrait HD de l'animal. -- **Images** : Icônes Santé (Cœur), Faim (Cuisse), Température (Thermomètre). -- **Vidéos** : Boucle vidéo de l'animal en gros plan (arrière-plan panneau). -- **Animations** : Jauges qui se remplissent. -- **Couleurs** : Vert (>70%), Orange (30-70%), Rouge (<30%). -- **Textes** : Nom, Espèce, Âge. -- **Formes** : Panneau arrondi. - -### Interaction (Action) -**Description UX** : Le joueur peut nourrir, soigner ou déplacer l'animal. -**Description UI** : Boutons d'action dans le panneau de consultation. -**Emplacement** : Panneau Consultation. -**Intégration** : Actions contextuelles. -**Navigation** : Clic Action -> Résultat immédiat. -**Événements** : `FEED_ANIMAL`, `HEAL_ANIMAL`, `MOVE_ANIMAL`. - -#### Assets -- **Musiques** : Son "Action Réussie" (positif). -- **Sons** : `eat.mp3`, `heal.mp3`. -- **Graphiques** : Particules (Cœurs, Étoiles). -- **Images** : Icône Nourriture (Pomme), Seringue. -- **Vidéos** : Effet visuel de soin (aura verte). -- **Animations** : Animal saute de joie. -- **Couleurs** : Vert (Soin), Marron (Nourriture). -- **Textes** : "+10 PV", "-20 Faim". -- **Formes** : Cercle de sélection au sol. +### Vue Isométrique +- **Sprites** : 4 directions (N, S, E, W) minimum. Idéalement 8 pour fluidité. +- **Occlusion** : L'animal doit être caché par les murs sud/est de son enclos, mais visible par-dessus les murs nord/ouest. +- **Comportement** : L'animal ne doit jamais traverser les murs (collision box stricte). diff --git a/docs/specs/artiste.md b/docs/specs/artiste.md index 228a8cb..c142d93 100644 --- a/docs/specs/artiste.md +++ b/docs/specs/artiste.md @@ -15,6 +15,7 @@ Employé dédié au divertissement des visiteurs. Il réalise des spectacles de ## 4. Interactions * **Recrutement :** Menu "Employés", coût en pièces. * **Placement :** Peut être assigné à une "scène" ou un point de passage stratégique. +* **Performance :** Le joueur peut déclencher un "Show Spécial" (cooldown) pour un gros boost. ## 5. Annexes Techniques @@ -27,10 +28,16 @@ Employé dédié au divertissement des visiteurs. Il réalise des spectacles de "name": "Melody", "salary": 45, "hire_cost": 450, + "state": "enum (IDLE, PERFORMING, BREAK)", + "performance_cooldown_end": "timestamp", "stats": { "charisma": 15, - "radius": 3 // Rayon d'effet - } + "radius": 3, // Rayon d'effet + "tips_collected": 0 + }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -38,7 +45,34 @@ Employé dédié au divertissement des visiteurs. Il réalise des spectacles de * L'efficacité diminue si l'artiste reste trop longtemps au même endroit (besoin de rotation ou de pause). * Attire les foules, ce qui peut créer des bouchons (à gérer avec les chemins). +### Algorithme de Performance +```python +def update_artist(artist, visitors_nearby): + if artist.state == "PERFORMING": + for visitor in visitors_nearby: + visitor.happiness += artist.stats.charisma * 0.1 + visitor.stay_duration += 5 # minutes + + # Chance de pourboire + if random() < 0.05: + tip = random(1, 5) + artist.tips_collected += tip + add_coins(tip) +``` + ## 6. Annexes UX/UI * **Visuel Carte :** Personnage coloré, jonglant ou jouant d'un instrument. * **Effet :** Notes de musique ou étoiles flottant autour de lui. * **Son :** Musique d'ambiance locale quand on zoome dessus. +* **Vue Isométrique :** Animation de jonglage ou de jeu d'instrument en boucle. + + +# 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. diff --git a/docs/specs/attractivite_interne_zoo.md b/docs/specs/attractivite_interne_zoo.md index b086932..8f6c2fc 100644 --- a/docs/specs/attractivite_interne_zoo.md +++ b/docs/specs/attractivite_interne_zoo.md @@ -105,6 +105,15 @@ N/A # 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) ### Foule (Passif) **Description UX** : Les visiteurs s'agglutinent devant les animaux les plus intéressants. diff --git a/docs/specs/attractivite_zoo_sur_ville.md b/docs/specs/attractivite_zoo_sur_ville.md index 3df4299..c821659 100644 --- a/docs/specs/attractivite_zoo_sur_ville.md +++ b/docs/specs/attractivite_zoo_sur_ville.md @@ -98,7 +98,7 @@ N/A function calculateDailyVisitors(zoo, city): dist = distance(zoo.pos, city.pos) if dist > zoo.maxAttractionRange: return 0 - + baseFlow = city.population * (zoo.reputation / (dist * dist)) return baseFlow * seasonMod ``` @@ -108,6 +108,15 @@ N/A # 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 Flux (Consultation) **Description UX** : Le joueur regarde la carte du monde pour voir d'où viennent ses visiteurs. diff --git a/docs/specs/avatar_joueur.md b/docs/specs/avatar_joueur.md index be55cf3..c9dba1e 100644 --- a/docs/specs/avatar_joueur.md +++ b/docs/specs/avatar_joueur.md @@ -8,6 +8,7 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn * **Identité :** Associé au pseudonyme du joueur et à son niveau. * **Feedback Visuel :** Peut réagir aux événements du zoo (sourire si tout va bien, inquiet si problème). * **Social :** S'affiche sur la carte du monde à côté du zoo du joueur. +* **NPC Directeur :** Une version miniature de l'avatar se promène physiquement dans le zoo pour inspecter les enclos. ## 3. Icone * **Représentation :** Tête de l'avatar actuel dans un cadre circulaire ou carré. @@ -16,6 +17,7 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn ## 4. Interactions * **Click :** Ouvre le menu de profil du joueur et l'inventaire de skins. * **Survol :** Affiche le niveau actuel et le titre du joueur (ex: "Directeur Débutant"). +* **Level Up :** Animation spéciale lorsque le joueur gagne un niveau. ## 5. Annexes Techniques @@ -24,16 +26,16 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn { "avatar_id": "player_12345", "gender": "female", // "male" | "female" + "level": 12, + "experience": 4500, + "next_level_xp": 5000, + "title": "Expert Zoologist", "equipped_skins": { "head": "skin_hat_safari", "body": "skin_shirt_ranger", "accessory": "skin_glasses_sun" }, - "display_position": { - "x": 10, - "y": 10, - "anchor": "top-left" - }, + "unlocked_titles": ["Beginner", "Novice", "Expert"], "mood_state": "happy" // "happy" | "neutral" | "worried" } ``` @@ -47,3 +49,15 @@ Représentation visuelle du joueur dans l'interface du jeu. L'avatar est personn * **Emplacement :** Coin supérieur (gauche ou droite) de l'interface principale (HUD). * **Style :** Cartoon / Isométrique cohérent avec le reste du jeu. * **Feedback :** Animation légère (clignement des yeux, mouvement de tête). +* **Vue Isométrique :** Le "Directeur" (NPC) a un pathfinding aléatoire mais priorise les zones à problèmes (animaux malades, déchets). + + +# 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. diff --git a/docs/specs/banderole_accueil.md b/docs/specs/banderole_accueil.md index 258dd6b..20e257b 100644 --- a/docs/specs/banderole_accueil.md +++ b/docs/specs/banderole_accueil.md @@ -14,7 +14,7 @@ ## 4. Interactions * **Création :** Lors de la première partie, une pop-up demande le nom du zoo. -* **Modification :** Clic sur la banderole pour ouvrir l'éditeur de nom (peut coûter des pièces ou être gratuit). +* **Modification :** Clic sur la banderole pour ouvrir l'éditeur de nom (peut coûter des pièces ou être gratuit avec cooldown). ## 5. Annexes Techniques @@ -24,16 +24,34 @@ "banner_id": "main_entrance_banner", "text": "Mon Super Zoo", "font_style": "default", // "comic", "serif", "safari" + "font_color": "#FF5733", "material": "wood", // "stone", "metal" (skins possibles) - "position": {"x": 15, "y": 0} // Entrée du zoo + "background_pattern": "stripes", + "last_rename": "timestamp", + "position": {"x": 15, "y": 0} // Entrée du zoo, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` ### Règles Métier * **Longueur Max :** Le nom est limité en caractères (ex: 20 chars) pour tenir sur l'affichage. * **Filtre :** Interdiction des mots offensants (profanity filter). +* **Cooldown :** Changement de nom gratuit 1x/semaine, sinon payant (Gemmes/Pièces). ## 6. Annexes UX/UI * **Visuel :** Modèle 3D/Iso d'une arche en bois rustique avec une planche suspendue par des cordes. * **Animation :** La planche peut se balancer légèrement au vent. -* **Texte :** Police lisible et "fun", intégrée à la texture du panneau. +* **Texte :** Police lisible et "fun", intégrée à la texture du panneau (Texture dynamique). + + +# 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. diff --git a/docs/specs/bebe_animal.md b/docs/specs/bebe_animal.md index 1ca2880..8a01146 100644 --- a/docs/specs/bebe_animal.md +++ b/docs/specs/bebe_animal.md @@ -126,12 +126,12 @@ function updateBaby(baby, context): # Fragilité accrue damageMultiplier = 2.0 growthRate = baseGrowthRate * nurserieLevelBonus - + baby.growth_progress += growthRate - + if baby.growth_progress >= 100: transformToAdult(baby) - + # Reste de la logique héritée de Animal avec damageMultiplier ``` @@ -143,6 +143,15 @@ function updateBaby(baby, context): # 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) ### Croissance en Nurserie (Passif) **Description UX** : Le bébé est visible dans son slot de nurserie. Il grandit visuellement (petite jauge). diff --git a/docs/specs/billeterie.md b/docs/specs/billeterie.md index b18a384..2894ae1 100644 --- a/docs/specs/billeterie.md +++ b/docs/specs/billeterie.md @@ -25,8 +25,15 @@ Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs. "position": { "x": "int", "y": "int" }, "stats": { "total_entries": "integer", - "daily_revenue": "integer" - } + "daily_revenue": "integer", + "current_queue_length": "integer" + }, + "entry_log": [ + { "timestamp": "...", "visitor_count": 5, "revenue": 50 } + ], + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -36,71 +43,6 @@ Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs. | Prix Ticket | 10 pièces | | Capacité Max | 20 visiteurs | -### Scores Initiaux -**File d'attente** : 0 personnes. -**Revenus cumulés** : 0. - -## 2. Cycles de Vie et Apparition -### Conditions d'Apparition -Présent au démarrage (Unique). - -### Conditions de Disparition -Indestructible. - -### Hérédité -**Renommée** : Un vieux zoo (reset) garde 10% de son flux initial grâce à sa réputation passée. - -## 3. Impacts Environnementaux -### Impact Température -**Pluie** : Vente automatique de parapluies à l'entrée (+5 pièces/visiteur). -**Canicule** : Distribution d'éventails (Coût 1 pièce, mais +Satisfaction). - -### Impact Milieu (Biome) -**Décoration** : Si le biome de l'entrée correspond au biome majoritaire du zoo, +5% Attractivité (Cohérence thématique). - -### Impact Saisons -| Saison | Modificateur Prix Ticket | -| :--- | :--- | -| Été | +20% (Haute saison) | -| Hiver | -10% (Basse saison, promo "Hiver Sauvage") | -| Automne | -5% (Rentrée) | -| Printemps | +10% (Vacances Pâques) | - -### Impact Heure / Jour-Nuit -**Ouverture** : 08h00 - 20h00. Fermé la nuit (sauf événements "Nocturne" débloqués au Niv 5). - -## 4. Impacts Biologiques et Sociaux -### Impact Reproduction -**Mascotte** : Si un bébé rare est né < 24h, affiche "Venez voir le bébé !" -> +10% Ventes Tickets. - -### Impact Mort -**Scandale** : Si une mort est visible depuis l'entrée, -50% entrées pendant 24h. - -### Impact Nourriture -**Odeur Snack** : Si un stand de nourriture est proche (< 5 cases), +5% faim des visiteurs dès l'entrée (Mise en appétit). - -### Impact Attractivité (Visiteurs/Animaux) -Point d'entrée unique. L'attractivité globale du zoo détermine le flux qui se présente à la billeterie. - -### Impact Valeur -**Valeur Bâtiment** : 50% du coût de construction/upgrade récupérable si destruction (impossible ici, mais pour info comptable). - -## 5. Impacts Logistiques et Économiques -### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite) -**Flux Entrée** : 1 visiteur / seconde max (Niv 1) -> 5 visiteurs / seconde (Niv 7 - Portiques auto). - -### Dépenses (Boutiques/Visiteurs) -Revenu principal (Ticket). Pas de dépense sauf maintenance (10/jour). - -### Trajet Visiteurs -Point de départ (Spawn) et d'arrivée (Despawn). Les visiteurs mécontents courent vers la sortie. - -## 6. Événements -### Événements du Jeu / Carte / Zoo / Ville / Visiteur -* **Entrée** : Gain pièces. -* **Refoulement** : Si Capacité Max atteinte. -* **VIP** : Arrivée d'un bus de touristes (Flux x2 pendant 1h). - ## 7. Progression ### Tableau des Upgrades | Niveau | Coût (Pièces) | Prix Ticket | Capacité Max | Temps Construction | @@ -115,19 +57,27 @@ Point de départ (Spawn) et d'arrivée (Despawn). Les visiteurs mécontents cour ## 8. Logique et Interfaces ### Pseudo-code Impacts -``` -function processEntry(zoo): - potentialVisitors = calculateAttractionFlow(zoo) - - if zoo.currentVisitors >= zoo.billeterie.capacity: - emitEvent("ZOO_FULL") - return +```python +def process_entry(zoo): + potential_visitors = calculate_attraction_flow(zoo) - actualVisitors = min(potentialVisitors, zoo.billeterie.capacity - zoo.currentVisitors) - - for i in 0..actualVisitors: - spawnVisitor() - player.addCoins(zoo.billeterie.ticketPrice) + # Gestion de la file d'attente + zoo.billeterie.current_queue_length += potential_visitors + + # Traitement des entrées (limité par la vitesse du guichet) + entries_per_tick = get_entry_speed(zoo.billeterie.level) + actual_entries = min(zoo.billeterie.current_queue_length, entries_per_tick) + + # Vérification capacité zoo + if zoo.current_visitors + actual_entries > zoo.billeterie.capacity: + actual_entries = zoo.billeterie.capacity - zoo.current_visitors + emit_event("ZOO_FULL") + + zoo.billeterie.current_queue_length -= actual_entries + + for _ in range(actual_entries): + spawn_visitor() + player.add_coins(zoo.billeterie.ticket_price) ``` ### Messages d'Infos / Alerte @@ -135,16 +85,26 @@ function processEntry(zoo): | :--- | :--- | :--- | | `ZOO_FULL` | Alerte | "Le zoo est complet ! Agrandissez la billeterie." | | `VIP_BUS` | Info | "Un bus de touristes arrive !" | +| `QUEUE_LONG` | Warning | "La file d'attente est trop longue, des visiteurs partent !" | # 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) ### Consultation **Description UX** : Le joueur clique sur la billeterie pour voir ses statistiques et son niveau. **Description UI** : **Bottom Sheet** ou Panneau Latéral affichant le niveau actuel, la capacité, le prix du ticket et les revenus du jour. **Emplacement** : Case Billeterie sur la grille du zoo. -**Intégration** : Bâtiment fixe (ne peut pas être déplacé ou supprimé). -**Navigation** : Clic -> Ouverture Panneau -> Fermeture (Croix ou clic extérieur). +**Intégration** : Bâtiment fixe. +**Navigation** : Clic -> Ouverture Panneau -> Fermeture. **Événements** : `CLICK_BILLETERIE`. #### Assets @@ -158,40 +118,6 @@ function processEntry(zoo): - **Textes** : "Billeterie", "Niveau X", "Revenus : Y". - **Formes** : Carré (case). -### Amélioration (Upgrade) -**Description UX** : Le joueur décide d'améliorer la billeterie pour augmenter la capacité et le prix du ticket. -**Description UI** : Bouton "Améliorer" dans le panneau de consultation, avec coût et prévisualisation des gains. -**Emplacement** : Panneau de consultation. -**Intégration** : Action immédiate si fonds suffisants. -**Navigation** : Clic "Améliorer" -> Confirmation (optionnelle) -> Mise à jour UI. -**Événements** : `UPGRADE_BILLETERIE`. - -#### Assets -- **Musiques** : Fanfare courte "Level Up". -- **Sons** : `upgrade_success.mp3` (caisse enregistreuse). -- **Graphiques** : Icône flèche vers le haut. -- **Images** : Confettis (Sprite). -- **Vidéos** : Effet de lumière "Rayon divin". -- **Animations** : Particules de succès (confettis/étoiles) autour du bâtiment. -- **Couleurs** : Bouton Vert (si achetable), Gris (si fonds insuffisants). -- **Textes** : "Améliorer (X pièces)". -- **Formes** : Bouton rectangulaire arrondi. - -### Flux Visiteurs (Passif) -**Description UX** : Le joueur observe les visiteurs entrer dans le zoo. -**Description UI** : Petits sprites de visiteurs apparaissant à la porte et se dispersant. -**Emplacement** : Devant la billeterie. -**Intégration** : Animation continue pendant les heures d'ouverture. -**Navigation** : Automatique (Flux continu). -**Événements** : `VISITOR_SPAWN`. - -#### Assets -- **Musiques** : Bruit de foule (loop). -- **Sons** : `visitor_entry.mp3` (bruit de foule léger, pas à chaque spawn). -- **Graphiques** : Sprites visiteurs variés. -- **Images** : Silhouettes de foule en arrière-plan. -- **Vidéos** : Effet de foule floue en mouvement. -- **Animations** : Marche (4 directions). -- **Couleurs** : Variées (vêtements). -- **Textes** : Bulles de discussion aléatoires. -- **Formes** : Points mouvants (sur la minimap). +### Vue Isométrique +- **File d'attente** : Afficher physiquement les sprites des visiteurs qui attendent devant le guichet. +- **Portiques** : Animation d'ouverture/fermeture des barrières. diff --git a/docs/specs/bot.md b/docs/specs/bot.md index e509c69..3780aa1 100644 --- a/docs/specs/bot.md +++ b/docs/specs/bot.md @@ -33,7 +33,10 @@ Sélection hiérarchique : **Famille** > **Spécialisation**. "sell_animal_threshold": "float (price factor)", "expand_map_priority": "int (0-10)", "research_priority": "int (0-10)" - } + }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -107,10 +110,10 @@ function runBotLogic(bot, zoo): if zoo.foodStock < bot.logic.buy_food_threshold: buyFood(zoo) return - + if bot.family == 'BREEDER': optimizePairs(zoo) - + if bot.family == 'TRADER': checkMarketArbitrage(zoo) ``` @@ -122,6 +125,15 @@ function runBotLogic(bot, zoo): # 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) ### Sélection du Profil (Configuration) **Description UX** : Le joueur choisit comment son zoo sera géré en son absence. @@ -149,7 +161,6 @@ function runBotLogic(bot, zoo): **Intégration** : Bloquant au démarrage. **Navigation** : Lire -> Fermer. **Événements** : `SHOW_REPORT`. - #### Assets - **Musiques** : N/A - **Sons** : `notification.mp3`. diff --git a/docs/specs/boutique.md b/docs/specs/boutique.md index aa09e37..b8d9ef7 100644 --- a/docs/specs/boutique.md +++ b/docs/specs/boutique.md @@ -26,7 +26,10 @@ Bâtiment commercial générant des revenus passifs grâce aux visiteurs. "stats": { "revenue_total": "integer", "visitors_served": "integer" - } + }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -127,7 +130,7 @@ Point d'intérêt majeur pour le pathfinding (Poids 50). Arrêt obligatoire si b function processShop(shop, visitors): queue = visitors.filter(v => v.target == shop) served = min(queue.length, shop.capacity) - + for i in 0..served: revenue = shop.baseRevenue * seasonMod player.addCoins(revenue) @@ -143,6 +146,15 @@ function processShop(shop, visitors): # 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) ### Vente (Passif) **Description UX** : Les visiteurs entrent dans la boutique, y restent quelques secondes, puis ressortent. Des pièces volent vers le compteur. diff --git a/docs/specs/camion.md b/docs/specs/camion.md index 68ce5ec..2fe9ac1 100644 --- a/docs/specs/camion.md +++ b/docs/specs/camion.md @@ -29,7 +29,10 @@ Véhicule de transport pour les achats et les ventes d'animaux/œufs. "status": "enum ('idle', 'moving_to_target', 'moving_home')", "cargo": "animal_uuid | null", "position": { "x": "float", "y": "float" }, - "target_site_id": "uuid | null" + "target_site_id": "uuid | null", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -131,7 +134,7 @@ function updateTruck(truck, deltaTime): if truck.status == 'moving': distance = truck.speed * deltaTime moveTowardsTarget(truck, distance) - + if truck.cargo: truck.cargo.stress += baseStress * (1.0 - truck.comfortFactor) * deltaTime ``` @@ -144,6 +147,15 @@ function updateTruck(truck, deltaTime): # 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) ### Envoi en Mission (Action) **Description UX** : Le joueur achète un animal sur la carte du monde. Le camion part automatiquement le chercher. diff --git a/docs/specs/carte_generique.md b/docs/specs/carte_generique.md index 2be2336..59d35b8 100644 --- a/docs/specs/carte_generique.md +++ b/docs/specs/carte_generique.md @@ -25,7 +25,10 @@ Une carte est une grille de cases représentant un espace de jeu ou de navigatio "height": "integer", "grid": [ [ { "case_ref": "case_id" } ] - ] + ], + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -107,6 +110,15 @@ function updateMap(map): # 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) ### Navigation (Action) **Description UX** : Le joueur explore la carte. diff --git a/docs/specs/carte_monde.md b/docs/specs/carte_monde.md index b264571..d7ec688 100644 --- a/docs/specs/carte_monde.md +++ b/docs/specs/carte_monde.md @@ -41,7 +41,10 @@ La carte du monde est l'espace multijoueur où sont situés les zoos des joueurs "width": "integer (très grand)", "height": "integer", "sites": [ { "id": "uuid", "type": "zoo|city|lab", "pos": { "x": "int", "y": "int" } } ], - "trucks": [ { "id": "uuid", "owner_id": "uuid", "pos": { "x": "float", "y": "float" }, "target": "uuid" } ] + "trucks": [ { "id": "uuid", "owner_id": "uuid", "pos": { "x": "float", "y": "float" }, "target": "uuid" } ], + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -122,7 +125,7 @@ function updateWorldMap(map, deltaTime): moveTruck(truck, deltaTime) if hasArrived(truck): processTransaction(truck) - + updateWeather(map) updateDayNightCycle(map) ``` @@ -134,6 +137,15 @@ function updateWorldMap(map, deltaTime): # 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) ### Vue Globale (Passif) **Description UX** : Le joueur voit les autres acteurs et les flux économiques. diff --git a/docs/specs/carte_zoo.md b/docs/specs/carte_zoo.md index f2821a9..37399ad 100644 --- a/docs/specs/carte_zoo.md +++ b/docs/specs/carte_zoo.md @@ -1,11 +1,12 @@ # Spécifications : Carte du Zoo ## Définition -La carte du zoo est l'espace principal de gestion du joueur. Elle prend tout l'espace de l'écran sous la barre supérieure (HUD) et permet de zoomer/dézoomer. +La carte du zoo est l'espace principal de gestion du joueur où il place ses bâtiments et ses animaux. ## Structure - **Vue** : Isométrique (2.5D). -- **Grille** : Composée de cases individuelles fusionnables (pour les enclos). +- **Affichage** : Plein écran sous la barre du haut, dézoom possible. +- **Grille** : Composée de cases individuelles. - **Biomes** : Divisée en tiers de largeur : - Gauche : Prairie - Milieu : Océan @@ -128,6 +129,16 @@ function initZooMap(): # Annexes UX/UI +## 0. Direction Artistique & Vue +* **Vue** : Isométrique (2.5D). +* **Grille** : Les déplacements se font sur une grille losange. +* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest). +* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut"). +* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`. + * Coloré, vivant, détails foisonnants. + * Aspect "dessiné à la main" ou "cartoon soigné". + * Couleurs vives et contours nets. + ## 1. Expérience Utilisateur (UX) ### Interaction Grille (Action) **Description UX** : Le joueur clique sur une case pour voir son contenu ou construire. diff --git a/docs/specs/case_generique.md b/docs/specs/case_generique.md index 2a79942..30681b5 100644 --- a/docs/specs/case_generique.md +++ b/docs/specs/case_generique.md @@ -8,10 +8,7 @@ Une case est l'unité élémentaire de la grille (Zoo ou Monde). - **Couleur (Milieu)** : Définit le biome et l'environnement visuel. - **Température** : Liée à la couleur/biome. - **Contenu** : Peut contenir un bâtiment, un animal, un visiteur, ou être vide. -- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre). - -## Règles -- Les transitions de propriétés (couleur, température) entre cases adjacentes doivent être douces. +- **État** : Peut avoir des indicateurs visuels (herbe jaunie, givre, fertilité). # Annexes Techniques @@ -25,107 +22,56 @@ Une case est l'unité élémentaire de la grille (Zoo ou Monde). "temperature_offset": "float", "content_ref": "uuid | null", "content_type": "string", - "state_flags": ["frozen", "dry", "dirty"] + "fertility_level": "float (0-100)", + "state_flags": ["frozen", "dry", "dirty", "fertilized"], + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` -### Caractéristiques Initiales -**Vide** : État par défaut. - -### Scores Initiaux -**Usure** : 0% (Neuf). - -## 2. Cycles de Vie et Apparition -### Conditions d'Apparition -Génération carte. - -### Conditions de Disparition -**Destruction** : Si la case fait partie d'une extension de zoo vendue/annulée (rare). - -### Hérédité -**Mémoire** : Une case se "souvient" de son biome d'origine si on détruit le bâtiment dessus. - -## 3. Impacts Environnementaux -### Impact Température -`Température_Réelle = Température_Biome + Température_Offset + Saison_Mod` - -### Impact Milieu (Biome) -Définit la couleur de fond. - -### Impact Saisons -**Esthétique** : Changement de palette (Vert -> Orange -> Blanc). - -### Impact Heure / Jour-Nuit -**Lumière** : Assombrissement global (Overlay nuit). - -## 4. Impacts Biologiques et Sociaux -### Impact Reproduction -**Support** : Lieu physique de l'acte. - -### Impact Mort -**Support** : Lieu physique du décès. - -### Impact Nourriture -**Support** : Lieu de dépôt de la nourriture. - -### Impact Attractivité (Visiteurs/Animaux) -**Propreté** : Une case sale réduit l'attractivité locale. - -### Impact Valeur -**Immobilier** : Valeur intrinsèque du terrain. - -## 5. Impacts Logistiques et Économiques -### Vitesse (Camion/Nurserie/Accueil/Recherche/Labo/Visite) -**Terrain** : Modificateur de vitesse de déplacement (Boue, Sable). - -### Dépenses (Boutiques/Visiteurs) -**Entretien** : Coût de maintenance du sol. - -### Trajet Visiteurs -**Noeud** : Point de passage pour le pathfinding. - -## 6. Événements -### Événements du Jeu / Carte / Zoo / Ville / Visiteur -* **Clic** : Interaction joueur. - -## 7. Progression -### Tableau des Upgrades -Voir `achat_upgrade_case.md`. - ## 8. Logique et Interfaces ### Pseudo-code Impacts -```javascript -function getCaseState(case): - return { - temp: calculateTemp(case), - biome: case.biome, - isWalkable: !hasBuilding(case) - } +```python +def fertilize_case(case, player): + cost = 50 + if player.money < cost: return error("NO_MONEY") + + player.money -= cost + case.fertility_level = 100 + case.state_flags.append("fertilized") + + # Si plante dessus, boost croissance + if case.content and case.content.type == "plant": + case.content.growth_rate *= 1.5 + + return success("CASE_FERTILIZED") ``` -### Messages d'Infos / Alerte -| ID | Niveau | Message | -| :--- | :--- | :--- | -| `CASE_ERROR` | Erreur | "Impossible d'accéder à cette case." | - # 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) -### Feedback État (Passif) -**Description UX** : La case montre son état physique. -**Description UI** : Overlay de texture (Givre, Craquelures, Boue). -**Emplacement** : Case. -**Intégration** : Layer 1 (Au-dessus du fond, sous le contenu). -**Navigation** : Automatique (Mise à jour visuelle). -**Événements** : `STATE_UPDATE`. +### Fertilisation (Action) +**Description UX** : Le joueur améliore le sol pour que l'herbe repousse plus vite. +**Description UI** : Outil "Sac d'engrais". Clic sur la case. +**Emplacement** : Menu Outils -> Case. +**Intégration** : Curseur. +**Navigation** : Clic. +**Événements** : `FERTILIZE_SOIL`. #### Assets -- **Musiques** : Son d'ambiance très léger (vent). -- **Sons** : Bruit de pas (selon texture). -- **Graphiques** : Textures alpha (Givre blanc, Craquelures marron). -- **Images** : Pattern Sol. -- **Vidéos** : Effet de givre qui s'étend. -- **Animations** : Apparition progressive (Fade). -- **Couleurs** : Blanc, Marron, Gris. -- **Textes** : "Gelé", "Sec". -- **Formes** : Carré. +- **Musiques** : Bruit de poudre. +- **Sons** : `scatter.mp3`. +- **Graphiques** : Particules vertes/brunes. +- **Images** : Texture terre riche (plus foncée). +- **Animations** : Poussière qui retombe. +- **Couleurs** : Marron foncé. diff --git a/docs/specs/case_monde.md b/docs/specs/case_monde.md index b9dd049..2a88d81 100644 --- a/docs/specs/case_monde.md +++ b/docs/specs/case_monde.md @@ -98,6 +98,15 @@ function getTravelCost(case): # 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) ### Survol (Passif) **Description UX** : Explorer la carte du monde. diff --git a/docs/specs/case_zoo.md b/docs/specs/case_zoo.md index 90f09f0..7a3ea9a 100644 --- a/docs/specs/case_zoo.md +++ b/docs/specs/case_zoo.md @@ -117,6 +117,15 @@ function checkAnimalDisappearance(case): # 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) ### Sélection (Action) **Description UX** : Clic sur une case zoo. diff --git a/docs/specs/centre_recherche.md b/docs/specs/centre_recherche.md index d40a1ba..8cb3319 100644 --- a/docs/specs/centre_recherche.md +++ b/docs/specs/centre_recherche.md @@ -4,8 +4,7 @@ Bâtiment produisant des points de science/recherche. ## Fonctionnalités -- **Production** : Génère des unités de recherche périodiquement grâce aux chercheurs assignés (Max 3). -- **Distinction** : Ne pas confondre avec le Laboratoire (qui gère la génétique et les bébés). Le Centre de Recherche produit du savoir (Science). +- **Production** : Génère des unités de recherche périodiquement. - **Déblocage** : Permet de payer l'agrandissement de la carte du monde. - **Visibilité** : Donne accès aux niveaux d'animaux/bébés supérieurs dans les autres zoos (débloque la vue sur les offres rares). @@ -23,11 +22,13 @@ Bâtiment produisant des points de science/recherche. "id": "uuid", "type": "research_center", "level": "integer (1-7)", - "assigned_researchers": ["uuid", "uuid", "uuid"], // Max 3 "stats": { "points_generated": "integer", "last_collection": "timestamp" - } + }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -123,7 +124,7 @@ Production continue 24h/24. function updateResearch(center): points = center.productionRate * deltaTime player.addResearchPoints(points) - + visibleRarity = center.maxRarityVisible updateWorldMapVisibility(center.range, visibleRarity) ``` @@ -136,6 +137,15 @@ function updateResearch(center): # 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) ### Collecte de Points (Action) **Description UX** : Les points de recherche s'accumulent. Le joueur clique sur le bâtiment pour les récolter (ou collecte auto si implémenté). diff --git a/docs/specs/chemin.md b/docs/specs/chemin.md index c5b8f3e..1f210ea 100644 --- a/docs/specs/chemin.md +++ b/docs/specs/chemin.md @@ -1,48 +1,55 @@ -# Chemin +# Spécifications : Chemin -## 1. Définition -Voie de circulation pour les visiteurs à l'intérieur du zoo. Les chemins relient l'entrée aux enclos et aux bâtiments de service. Ils sont améliorables (Terre -> Gravier -> Pavés -> Marbre, etc.), ce qui influence la vitesse de déplacement et l'attractivité du parc. +## Définition +Les chemins sont des cases aménagées permettant aux visiteurs et au staff de se déplacer efficacement à travers le zoo. Ils connectent les différentes infrastructures (Enclos, Boutiques, Services). -## 2. Fonctions -* **Circulation :** Guide le flux des visiteurs (pathfinding). -* **Vitesse :** Les visiteurs marchent plus vite sur des chemins de meilleure qualité. -* **Attractivité :** Un beau chemin (pavé, décoré) augmente la note globale du zoo. -* **Canalisation :** Les visiteurs préfèrent rester sur les chemins plutôt que de marcher dans l'herbe (si l'herbe est accessible). +## Fonctions +* **Circulation :** Permet le déplacement des entités (Visiteurs, Staff). +* **Connexion :** Relie les bâtiments entre eux pour former un réseau accessible. +* **Esthétique :** Améliore l'aspect visuel du zoo. -## 3. Icone -* **Représentation :** Route sinueuse ou Pavé. -* **Couleur dominante :** Gris et Beige. +# Annexes Techniques -## 4. Interactions -* **Construction :** Outil "Route" -> Sélection du type -> Tracer sur la grille. -* **Upgrade :** Clic sur une portion de chemin -> Bouton "Améliorer" (coût en pièces). -* **Destruction :** Outil Bulldozer. - -## 5. Annexes Techniques - -### Données (JSON) +## 1. Données et États +### Modèle de Données (JSON) ```json { - "path_id": "path_segment_10_12", - "type": "gravel", // "dirt", "paved", "marble" - "coordinates": {"x": 10, "y": 12}, - "stats": { - "speed_modifier": 1.2, // x1.2 vitesse de marche - "attractiveness_bonus": 2 - }, - "cost_per_tile": 10 + "type": "path", + "material": "gravel", + "x": 10, + "y": 12, + "connected_neighbors": ["N", "S", "E"], + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` -### Règles Métier -* **Connexion :** Les chemins adjacents se connectent visuellement (textures dynamiques). -* **Accessibilité :** Les bâtiments doivent être reliés à un chemin pour être fonctionnels. -* **Coût :** L'amélioration coûte des pièces par case. +## 2. Règles Métier +* **Connexion Automatique :** Les textures des chemins se connectent automatiquement aux chemins adjacents (Auto-tiling). +* **Vitesse :** Bonus de vitesse de déplacement pour les entités sur les chemins. -## 6. Annexes UX/UI -* **Textures :** - * Terre : Marron, irrégulier, poussière. - * Gravier : Gris clair, petits cailloux, bruit de pas "crunchy". - * Pavés : Motif régulier, propre, bruit de pas "clac". - * Marbre/Luxe : Blanc, brillant, très rapide. -* **Feedback :** Les visiteurs ont une animation de marche plus rapide sur les bons chemins. +# 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. + +## 0. Direction Artistique & Vue +* **Vue** : Isométrique (2.5D). +* **Grille** : Les déplacements se font sur une grille losange. +* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest). +* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut"). +* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`. + * Coloré, vivant, détails foisonnants. + * Aspect "dessiné à la main" ou "cartoon soigné". + * Couleurs vives et contours nets. + +## 1. Détails Spécifiques +* **Textures Connectées :** Les chemins utilisent des textures connectées (Terre, Gravier, Pavés) pour éviter les coupures nettes entre les cases. +* **Variété :** Différents types de sols disponibles (Terre, Gravier, Pavés). diff --git a/docs/specs/chercheur.md b/docs/specs/chercheur.md index e01d8cd..a164495 100644 --- a/docs/specs/chercheur.md +++ b/docs/specs/chercheur.md @@ -15,6 +15,7 @@ Employé travaillant dans le Centre de Recherche pour générer des points de sc ## 4. Interactions * **Recrutement :** Menu "Employés", coût en pièces. * **Assignation :** Doit être assigné à un Centre de Recherche (max 3 par centre). +* **Formation :** Peut être envoyé en stage pour augmenter son intelligence (coût + temps). ## 5. Annexes Techniques @@ -27,19 +28,35 @@ Employé travaillant dans le Centre de Recherche pour générer des points de sc "salary": 60, "hire_cost": 600, "assigned_building": "research_center_01", + "fatigue_level": "float (0-100)", + "current_task": "enum (IDLE, RESEARCHING, TRAINING)", "stats": { "intelligence": 10, // Points de recherche par cycle "specialty": "genetics" // Bonus dans un domaine - } + }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` ### Règles Métier * **Limite :** Maximum 3 chercheurs par bâtiment "Centre de Recherche". -* Ne peut pas travailler sans bâtiment assigné. -* Le coût de salaire est élevé. +* **Fatigue :** L'efficacité diminue si la fatigue > 80%. Doit prendre des pauses. +* **Synergie :** 3 chercheurs de la même spécialité dans un centre = Bonus +20%. ## 6. Annexes UX/UI * **Visuel Carte :** Visible à travers les fenêtres du Centre de Recherche ou entrant/sortant. * **Interface Bâtiment :** Slots d'employés (0/3) dans le menu du Centre de Recherche. * **Feedback :** Bulles de science (fioles, atomes) s'élevant du bâtiment quand ils travaillent. + + +# 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. diff --git a/docs/specs/enchere_generique.md b/docs/specs/enchere_generique.md index 82111d2..0a06f1a 100644 --- a/docs/specs/enchere_generique.md +++ b/docs/specs/enchere_generique.md @@ -29,7 +29,10 @@ Mécanisme de vente entre joueurs/bots sur la Carte du Monde. "highest_bidder_id": "uuid | null", "end_time": "timestamp", "status": "enum ('active', 'pending_validation', 'finalizing', 'completed', 'cancelled')", - "finalization_timer": "timestamp (end)" + "finalization_timer": "timestamp (end)", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -42,13 +45,13 @@ Mécanisme de vente entre joueurs/bots sur la Carte du Monde. function placeBid(auction, bidder, amount): if amount <= auction.current_bid: return Error if bidder.coins < amount: return Error - + auction.current_bid = amount auction.highest_bidder_id = bidder.id - + function finalizeAuction(auction): if now < auction.finalization_timer: return - + transferCoins(auction.highest_bidder_id, auction.seller_id, auction.current_bid) transferAnimal(auction.seller_id, auction.highest_bidder_id, auction.animal_ref) auction.status = 'completed' @@ -63,6 +66,15 @@ function finalizeAuction(auction): # 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) ### Consultation des Offres (Consultation) **Description UX** : Le joueur survole les zoos sur la carte du monde pour voir les offres. diff --git a/docs/specs/enclos.md b/docs/specs/enclos.md index ff51363..ea88549 100644 --- a/docs/specs/enclos.md +++ b/docs/specs/enclos.md @@ -5,19 +5,10 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e ## 2. Fonctions * **Hébergement :** Lieu de vie des animaux. -* **Fusion (Merge) :** Si deux cases "Enclos [Animal X]" sont posées côte à côte, les barrières internes disparaissent pour créer un espace commun. +* **Fusion (Merge) :** Si deux cases "Enclos [Animal X]" sont posées côte à côte, les barrières internes disparaissent pour créer un espace commun (Auto-tiling). * **Visibilité :** Permet aux visiteurs d'observer les animaux (augmente l'attractivité). * **Sécurité :** Empêche les animaux de s'enfuir (si entretenu). -## 3. Icone -* **Représentation :** Barrière en bois ou Grillage. -* **Couleur dominante :** Marron et Vert. - -## 4. Interactions -* **Construction :** Outil "Enclos" -> Sélection de l'animal -> Clic sur la carte (glisser pour zone). -* **Gestion :** Clic sur n'importe quelle case de l'enclos fusionné ouvre le menu global de cet enclos. -* **Modification :** Ajouter/Retirer des cases, changer le type de barrière. - ## 5. Annexes Techniques ### Données (JSON) @@ -25,6 +16,7 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e { "enclosure_id": "enclosure_lions_01", "animal_type": "lion", + "biome_type": "savanna", "cells": [ {"x": 10, "y": 10}, {"x": 10, "y": 11}, @@ -32,20 +24,43 @@ Espace délimité destiné à accueillir une ou plusieurs espèces animales. L'e {"x": 11, "y": 11} ], "area": 4, - "capacity": 6, // Capacité totale calculée (ex: 1.5 animaux par case) + "capacity": 6, "current_population": 3, "cleanliness": 85, - "fence_health": 100 + "fence_health": 100, + "decoration_score": 15, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` ### Règles Métier -* **Adjacence :** La fusion se fait horizontalement et verticalement (pas en diagonale seule). -* **Cohérence :** Impossible de fusionner deux enclos d'espèces différentes (message d'erreur ou création de deux enclos séparés par une barrière). -* **Taille Minimum :** Certains animaux nécessitent un enclos de X cases minimum pour être heureux. -* **Affichage Animal :** Les animaux apparaissent "en petit" à l'intérieur de l'enclos, se déplaçant librement dans l'espace fusionné. +* **Algorithme de Fusion :** À chaque placement/suppression de case enclos, recalculer les composants connectés (Connected Components) pour mettre à jour les murs. +* **Murs :** Les murs ne sont générés que sur les bords de la zone connectée qui ne touchent pas une autre case du même enclos. ## 6. Annexes UX/UI -* **Visuel Barrières :** Génération procédurale des barrières uniquement sur le pourtour de l'ensemble des cases fusionnées (algorithme de "blob" ou "marching squares"). -* **Affiche :** Une affiche descriptive de l'animal est placée automatiquement sur une portion horizontale de la clôture (voir `affiche_enclos.md`). -* **Isométrique :** Les barrières doivent avoir une hauteur et une profondeur en vue isométrique. + + +## 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. + +### 0. Direction Artistique & Vue +* **Vue** : Isométrique (2.5D). +* **Grille** : Les déplacements se font sur une grille losange. +* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest). +* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut"). +* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`. + * Coloré, vivant, détails foisonnants. + * Aspect "dessiné à la main" ou "cartoon soigné". + * Couleurs vives et contours nets. + +### Détails Spécifiques +* **Visuel Barrières :** Génération procédurale des barrières uniquement sur le pourtour (Auto-tiling). Fusion visuelle des barrières si adjacents. +* **Isométrique :** Les barrières au Sud et à l'Est doivent être semi-transparentes ou plus basses pour ne pas cacher les animaux. +* **Signalétique :** Affiche de l'animal visible sur la clôture. diff --git a/docs/specs/etat.md b/docs/specs/etat.md index 48fc7ee..ffb8240 100644 --- a/docs/specs/etat.md +++ b/docs/specs/etat.md @@ -104,6 +104,15 @@ elif animal.temp > animal.idealTemp + 10: # 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) ### Lecture Immédiate (Passif) **Description UX** : Le joueur comprend la situation d'un coup d'œil sans ouvrir de menu. diff --git a/docs/specs/impacts_generique.md b/docs/specs/impacts_generique.md index 9215960..3d30441 100644 --- a/docs/specs/impacts_generique.md +++ b/docs/specs/impacts_generique.md @@ -42,12 +42,21 @@ function applyImpact(target, impactType, value): target.attractiveness += value elif impactType == 'SURVIVAL': target.survival_score += value - + logEvent(target.id, impactType, value) ``` # 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) ### Feedback Visuel d'Impact (Passif) **Description UX** : Le joueur voit les conséquences de ses actions. diff --git a/docs/specs/inventaire_animaux.md b/docs/specs/inventaire_animaux.md index 4949aa3..956ddda 100644 --- a/docs/specs/inventaire_animaux.md +++ b/docs/specs/inventaire_animaux.md @@ -25,7 +25,10 @@ Table statique `animal_types`. "rarity": "int", "ideal_biome": "int", "ideal_temp": "float", - "base_value": "int" + "base_value": "int", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -119,6 +122,15 @@ function getCollectionBonus(player): # 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) ### Bestiaire / Encyclopédie (Consultation) **Description UX** : Le joueur consulte les animaux découverts/possédés. diff --git a/docs/specs/inventaire_bebe_animaux.md b/docs/specs/inventaire_bebe_animaux.md index 75624dc..69b5738 100644 --- a/docs/specs/inventaire_bebe_animaux.md +++ b/docs/specs/inventaire_bebe_animaux.md @@ -92,6 +92,15 @@ function getBabyBonus(baby): # 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 Bébé (Passif) **Description UX** : Différencier les bébés des adultes. diff --git a/docs/specs/inventaire_heures.md b/docs/specs/inventaire_heures.md index 5ca0881..ba10af3 100644 --- a/docs/specs/inventaire_heures.md +++ b/docs/specs/inventaire_heures.md @@ -94,6 +94,15 @@ function updateTime(world, deltaTime): # 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) ### Cycle Jour/Nuit (Passif) **Description UX** : La luminosité change progressivement. diff --git a/docs/specs/inventaire_meteos.md b/docs/specs/inventaire_meteos.md index afa77b5..53130fa 100644 --- a/docs/specs/inventaire_meteos.md +++ b/docs/specs/inventaire_meteos.md @@ -97,6 +97,15 @@ function updateWeather(world): # 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) ### Ambiance Météo (Passif) **Description UX** : Le joueur ressent la météo actuelle. diff --git a/docs/specs/inventaire_milieux.md b/docs/specs/inventaire_milieux.md index 6da840d..4bd275a 100644 --- a/docs/specs/inventaire_milieux.md +++ b/docs/specs/inventaire_milieux.md @@ -100,6 +100,15 @@ function getBiomeEffect(biome): # 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) ### Palette Biome (Consultation) **Description UX** : Le joueur consulte la liste des biomes disponibles pour terraformer. diff --git a/docs/specs/inventaire_problemes_visiteurs.md b/docs/specs/inventaire_problemes_visiteurs.md index b3419ac..6fc0c82 100644 --- a/docs/specs/inventaire_problemes_visiteurs.md +++ b/docs/specs/inventaire_problemes_visiteurs.md @@ -97,6 +97,15 @@ function checkVisitorNeeds(visitor): # 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) ### Bulles d'Incidents (Action) **Description UX** : Voir `visiteur.md`. diff --git a/docs/specs/inventaire_quetes.md b/docs/specs/inventaire_quetes.md index 6b363ed..33f36ab 100644 --- a/docs/specs/inventaire_quetes.md +++ b/docs/specs/inventaire_quetes.md @@ -17,7 +17,10 @@ "objective_type": "string", "target_value": "int", "reward_coins": "int", - "is_completed": "boolean" + "is_completed": "boolean", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -106,6 +109,15 @@ function checkQuests(player, action): # 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) ### Suivi Quêtes (Permanent) **Description UX** : Le joueur voit ses objectifs en cours. diff --git a/docs/specs/inventaire_saisons.md b/docs/specs/inventaire_saisons.md index 60c0993..d5d82b8 100644 --- a/docs/specs/inventaire_saisons.md +++ b/docs/specs/inventaire_saisons.md @@ -136,6 +136,15 @@ function updateSeason(world): # 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) ### Ambiance Saisonnière (Passif) **Description UX** : Le décor change selon la saison. diff --git a/docs/specs/inventaire_skins.md b/docs/specs/inventaire_skins.md index 182de9e..f440448 100644 --- a/docs/specs/inventaire_skins.md +++ b/docs/specs/inventaire_skins.md @@ -48,3 +48,14 @@ Interface de gestion permettant au joueur de visualiser, trier et équiper les * **Grille :** Affichage des items sous forme de grille scrollable. * **Paper Doll :** Prévisualisation de l'avatar au centre ou sur le côté avec les équipements actuels. * **Drag & Drop :** (Optionnel) Glisser un item sur la prévisualisation pour l'équiper. + + +# 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. diff --git a/docs/specs/inventaire_temperatures.md b/docs/specs/inventaire_temperatures.md index 708958c..8f4f6a7 100644 --- a/docs/specs/inventaire_temperatures.md +++ b/docs/specs/inventaire_temperatures.md @@ -97,6 +97,15 @@ function getTemp(case): # 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) ### Thermomètre (Consultation) **Description UX** : Le joueur voit la température actuelle. diff --git a/docs/specs/joueur.md b/docs/specs/joueur.md index 64044d9..cbe61e0 100644 --- a/docs/specs/joueur.md +++ b/docs/specs/joueur.md @@ -34,7 +34,10 @@ L'utilisateur humain. "settings": { "music_enabled": "boolean", "bot_profile_id": "integer" - } + }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -125,6 +128,15 @@ function playerAction(action): # 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) ### HUD Principal (Permanent) **Description UX** : Le joueur voit en permanence ses ressources et accès rapides. diff --git a/docs/specs/laboratoire.md b/docs/specs/laboratoire.md index ed43deb..bce2ef0 100644 --- a/docs/specs/laboratoire.md +++ b/docs/specs/laboratoire.md @@ -286,6 +286,15 @@ Microscope stylisé bleu néon sur fond sombre, évoquant la haute technologie. ## 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) #### Description UX diff --git a/docs/specs/menu_achats.md b/docs/specs/menu_achats.md index d18c3d5..d1a673c 100644 --- a/docs/specs/menu_achats.md +++ b/docs/specs/menu_achats.md @@ -37,7 +37,10 @@ Interface centralisée dédiée aux transactions utilisant la monnaie premium (p "currency_balance": { "coins": 1500, "gems": 50 - } + }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -49,3 +52,14 @@ Interface centralisée dédiée aux transactions utilisant la monnaie premium (p * **Design :** Fenêtre modale propre, avec de grandes icônes et des prix clairs. * **Feedback Achat :** Animation de pièces qui volent vers le compteur total lors de la dépense. * **Confirmation :** Pop-up de confirmation pour les achats coûteux (> 1000 pièces). + + +# 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. diff --git a/docs/specs/milieu.md b/docs/specs/milieu.md index a3224d0..42910ca 100644 --- a/docs/specs/milieu.md +++ b/docs/specs/milieu.md @@ -24,7 +24,10 @@ Le milieu représente l'environnement écologique d'une case, défini par sa cou "name": "string", "color_hex": "string (#RRGGBB)", "default_temperature": "float", - "fertility_bonus": "float" + "fertility_bonus": "float", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -122,6 +125,15 @@ function checkBiomeCompatibility(animal, tile): # 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) ### Identification Visuelle (Passif) **Description UX** : Le joueur identifie le biome à la couleur du sol. diff --git a/docs/specs/mort_bebe.md b/docs/specs/mort_bebe.md index 4f6a92f..3d1c264 100644 --- a/docs/specs/mort_bebe.md +++ b/docs/specs/mort_bebe.md @@ -102,6 +102,15 @@ function handleBabyDeath(baby): # 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) ### Drame (Événement) **Description UX** : Le bébé meurt. diff --git a/docs/specs/nourisseur.md b/docs/specs/nourisseur.md index 76f253f..314f079 100644 --- a/docs/specs/nourisseur.md +++ b/docs/specs/nourisseur.md @@ -30,7 +30,10 @@ Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les "capacity": 50, // Quantité de nourriture transportable "speed": 1.2 }, - "current_task": "moving_to_enclosure_12" + "current_task": "moving_to_enclosure_12", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -42,3 +45,14 @@ Employé chargé de l'approvisionnement en nourriture des enclos. Il remplit les * **Visuel Carte :** Personnage avec une brouette ou un sac sur le dos. * **Animation :** Verse de la nourriture dans l'auge. * **Alerte :** Icône "Faim" rouge clignotante si le nourisseur est débordé. + + +# 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. diff --git a/docs/specs/nourriture_speciale.md b/docs/specs/nourriture_speciale.md index 288d885..22f8b7b 100644 --- a/docs/specs/nourriture_speciale.md +++ b/docs/specs/nourriture_speciale.md @@ -43,3 +43,14 @@ Consommable premium achetable avec des pièces, offrant un boost temporaire aux * **Particules :** Effet scintillant autour de l'animal pendant la durée du boost. * **Icône de Buff :** Petite icône (éclair, cœur) à côté de la barre de vie de l'animal. * **Son :** Bruit de mastication joyeux. + + +# 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. diff --git a/docs/specs/nurserie.md b/docs/specs/nurserie.md index 81d7f90..ee24e1d 100644 --- a/docs/specs/nurserie.md +++ b/docs/specs/nurserie.md @@ -24,7 +24,10 @@ Bâtiment dédié à l'éclosion des œufs et à la croissance des bébés anima "level": "integer (1-7)", "slots": [ { "slot_id": 1, "content": "egg_uuid | baby_uuid | null", "timer_end": "timestamp" } - ] + ], + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -140,6 +143,15 @@ function updateNurserie(nurserie): # 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) ### Gestion des Slots (Consultation) **Description UX** : Le joueur clique sur la nurserie pour voir l'état de ses œufs et bébés. diff --git a/docs/specs/objet_enclos.md b/docs/specs/objet_enclos.md index c18a2df..c32820e 100644 --- a/docs/specs/objet_enclos.md +++ b/docs/specs/objet_enclos.md @@ -38,3 +38,14 @@ ## 6. Annexes UX/UI * **Visuel 3D/Iso :** Modèle détaillé correspondant au thème de l'animal. * **Feedback :** Cœurs ou étoiles émanant de l'animal lorsqu'il utilise l'objet. + + +# 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. diff --git a/docs/specs/passe_saisonnier.md b/docs/specs/passe_saisonnier.md index b6bea6f..5700e8c 100644 --- a/docs/specs/passe_saisonnier.md +++ b/docs/specs/passe_saisonnier.md @@ -53,3 +53,14 @@ Système de progression temporaire (durée typique : 1 mois) offrant des récomp * **Barre de Progression :** Visuel clair de l'avancement (jauge remplie). * **Paliers :** Icônes des récompenses cliquables pour détails. * **Mise en avant :** Pop-up à la connexion annonçant le nouveau passe ou les récompenses non réclamées. + + +# 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. diff --git a/docs/specs/personnage_generique.md b/docs/specs/personnage_generique.md index 6eb12ff..0eb9b4c 100644 --- a/docs/specs/personnage_generique.md +++ b/docs/specs/personnage_generique.md @@ -19,7 +19,10 @@ Classe abstraite ou interface commune. "id": "uuid", "type": "string", "position": { "x": "int", "y": "int" }, - "active": "boolean" + "active": "boolean", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -95,6 +98,15 @@ N/A # 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) ### Identification (Passif) **Description UX** : Reconnaître le type de personnage au premier coup d'œil. diff --git a/docs/specs/pont.md b/docs/specs/pont.md index b586c39..81ef4f0 100644 --- a/docs/specs/pont.md +++ b/docs/specs/pont.md @@ -29,7 +29,10 @@ Structure permettant aux visiteurs (et au personnel) de traverser les étendues "speed_modifier": 1.0, "attractiveness_bonus": 5 }, - "cost_per_tile": 50 + "cost_per_tile": 50, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -41,3 +44,14 @@ Structure permettant aux visiteurs (et au personnel) de traverser les étendues * **Visuel :** Planches de bois avec rambardes, piliers plongeant dans l'eau. * **Son :** Bruit de pas sur le bois (creux). * **Reflet :** Reflet du pont dans l'eau (si moteur graphique le permet). + + +# 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. diff --git a/docs/specs/reproduction.md b/docs/specs/reproduction.md index 2c8d342..21a9699 100644 --- a/docs/specs/reproduction.md +++ b/docs/specs/reproduction.md @@ -119,6 +119,15 @@ if checkConditions(parentA, parentB): # 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) ### Amour (Passif) **Description UX** : Deux animaux compatibles se rencontrent. Des cœurs apparaissent. diff --git a/docs/specs/score_reputation.md b/docs/specs/score_reputation.md index ad9ef30..4930291 100644 --- a/docs/specs/score_reputation.md +++ b/docs/specs/score_reputation.md @@ -96,6 +96,15 @@ N/A # 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) ### Affichage Score (Permanent) **Description UX** : Le joueur connaît son niveau de prestige. diff --git a/docs/specs/score_survie.md b/docs/specs/score_survie.md index 142d293..81a9462 100644 --- a/docs/specs/score_survie.md +++ b/docs/specs/score_survie.md @@ -97,6 +97,15 @@ survivalScore = average(allAnimals.health) # 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) ### Monitoring Santé (Permanent) **Description UX** : Le joueur surveille la santé globale de son zoo. diff --git a/docs/specs/site_generique.md b/docs/specs/site_generique.md index 6a52090..be9fbe4 100644 --- a/docs/specs/site_generique.md +++ b/docs/specs/site_generique.md @@ -22,7 +22,10 @@ Un site est un lieu d'intérêt positionné sur la Carte du Monde. "id": "uuid", "type": "enum", "name": "string", - "position": { "x": "int", "y": "int" } + "position": { "x": "int", "y": "int" }, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -98,6 +101,15 @@ N/A # 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) ### Info-bulle (Consultation) **Description UX** : Survoler un site donne ses détails. diff --git a/docs/specs/skin.md b/docs/specs/skin.md index 79a5033..e12d87f 100644 --- a/docs/specs/skin.md +++ b/docs/specs/skin.md @@ -31,7 +31,10 @@ "amount": 500, "currency": "coins" }, - "asset_path": "assets/skins/avatar/head/pirate_hat.png" + "asset_path": "assets/skins/avatar/head/pirate_hat.png", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -43,3 +46,14 @@ * **Inventaire :** Grille d'icônes représentant les skins possédés. * **Rareté :** Bordure de couleur autour de l'icône (Gris=Commun, Vert=Atypique, Bleu=Rare, Violet=Épique, Or=Légendaire). * **Notification :** "Nouveau skin débloqué !" avec animation de coffre ou d'éclat. + + +# 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. diff --git a/docs/specs/soigneur.md b/docs/specs/soigneur.md index d3c41f3..5faa912 100644 --- a/docs/specs/soigneur.md +++ b/docs/specs/soigneur.md @@ -32,7 +32,10 @@ Employé spécialisé dans la santé des animaux. Il intervient pour prévenir l "efficiency": 0.8, "range": 5 // Rayon d'action en cases }, - "assigned_zone": null // null = tout le zoo, ou ID de zone + "assigned_zone": null // null = tout le zoo, ou ID de zone, + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -45,3 +48,14 @@ Employé spécialisé dans la santé des animaux. Il intervient pour prévenir l * **Visuel Carte :** Personnage en blouse blanche avec une mallette. * **Feedback :** Icône de croix verte au-dessus de l'animal soigné. * **Notification :** "Un animal est malade !" (si pas de soigneur dispo) ou "Animal soigné par [Nom]". + + +# 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. diff --git a/docs/specs/tech_architecture.md b/docs/specs/tech_architecture.md index 4d286a8..1e35f03 100644 --- a/docs/specs/tech_architecture.md +++ b/docs/specs/tech_architecture.md @@ -97,6 +97,15 @@ Certains événements doivent arriver même si le joueur est hors ligne (ex: Enc # 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) ### Chargement (Feedback) **Description UX** : Le joueur attend le calcul du Lazy Update à la connexion. diff --git a/docs/specs/temperature.md b/docs/specs/temperature.md index eda0a70..81d5a9a 100644 --- a/docs/specs/temperature.md +++ b/docs/specs/temperature.md @@ -111,6 +111,15 @@ currentTemp = baseBiomeTemp + seasonMod + dayNightMod + caseRegulatorOffset # 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 Thermique (Passif) **Description UX** : Le joueur voit la température de chaque case. diff --git a/docs/specs/theme.md b/docs/specs/theme.md index f23da03..3127516 100644 --- a/docs/specs/theme.md +++ b/docs/specs/theme.md @@ -45,3 +45,14 @@ Ensemble cohérent de skins et d'éléments visuels transformant l'ambiance gén ## 6. Annexes UX/UI * **Sélecteur de Thème :** Carrousel ou liste déroulante dans les options graphiques. * **Transition :** Fondu au noir ou effet de "rideau" lors du changement de thème. + + +# 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. diff --git a/docs/specs/vente_animal.md b/docs/specs/vente_animal.md index f6e1fc5..2a53a0d 100644 --- a/docs/specs/vente_animal.md +++ b/docs/specs/vente_animal.md @@ -105,6 +105,15 @@ function sellAnimal(animal, price, mode): # 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) ### Libération (Action) **Description UX** : Le joueur relâche un animal (vente système). diff --git a/docs/specs/vente_enchere_animal.md b/docs/specs/vente_enchere_animal.md index cc6b707..85f6084 100644 --- a/docs/specs/vente_enchere_animal.md +++ b/docs/specs/vente_enchere_animal.md @@ -88,6 +88,15 @@ N/A # 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) ### Mise en Vente (Action) **Description UX** : Le joueur sélectionne un animal adulte sur la grille et choisit "Vendre". diff --git a/docs/specs/vente_enchere_bebe.md b/docs/specs/vente_enchere_bebe.md index d8fe899..830cc40 100644 --- a/docs/specs/vente_enchere_bebe.md +++ b/docs/specs/vente_enchere_bebe.md @@ -29,7 +29,10 @@ Processus de vente spécifique pour les bébés animaux nés dans le zoo. "current_bid": "int", "highest_bidder": "uuid | null", "end_time": "timestamp", - "status": "active | sold | expired" + "status": "active | sold | expired", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -113,6 +116,15 @@ N/A # 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) ### Mise en Vente (Action) **Description UX** : Le joueur glisse un bébé depuis la nurserie vers le camion. diff --git a/docs/specs/ville.md b/docs/specs/ville.md index 8dd7d60..cc5ba30 100644 --- a/docs/specs/ville.md +++ b/docs/specs/ville.md @@ -23,7 +23,10 @@ Une ville est une entité sur la Carte du Monde qui génère le flux de visiteur "type": "city", "name": "string", "population": "integer", - "wealth_factor": "float (0.5 - 2.0)" + "wealth_factor": "float (0.5 - 2.0)", + "iso_x": "integer", + "iso_y": "integer", + "z_index": "integer" } ``` @@ -121,6 +124,15 @@ function calculateVisitorFlow(city, zoo): # 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. diff --git a/docs/specs/vip.md b/docs/specs/vip.md index 0963cd0..bb5e224 100644 --- a/docs/specs/vip.md +++ b/docs/specs/vip.md @@ -40,3 +40,14 @@ Statut premium pour les joueurs, généralement obtenu par abonnement ou achat i * **Badge VIP :** Petite icône couronne à côté du pseudo partout dans l'interface. * **Interface Boutique :** Section dédiée "Devenir VIP" avec mise en avant des avantages (surtout la conservation des thèmes). * **Feedback :** Effet visuel doré lors de la récupération de récompenses. + + +# 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. diff --git a/docs/specs/visiteur.md b/docs/specs/visiteur.md index b160702..a4ec5b1 100644 --- a/docs/specs/visiteur.md +++ b/docs/specs/visiteur.md @@ -305,6 +305,24 @@ Silhouette humaine simplifiée, couleur variable selon le type (Standard, VIP, E ## 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 du personnage pour le sélectionner. + * **Feedback** : Surbrillance (outline blanc/jaune) au survol de la souris. + +### 0. Direction Artistique & Vue (Existante) +* **Vue** : Isométrique (2.5D). +* **Grille** : Les déplacements se font sur une grille losange. +* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest). +* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut"). +* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`. + * Coloré, vivant, détails foisonnants. + * Aspect "dessiné à la main" ou "cartoon soigné". + * Couleurs vives et contours nets. + ### 1. Expérience Utilisateur (UX) #### Description UX @@ -312,8 +330,11 @@ Silhouette humaine simplifiée, couleur variable selon le type (Standard, VIP, E |---|---|---| | Observation | Zoom sur visiteur | Affichage info-bulle nom/état | | Plainte | Clic sur bulle rouge | Ouverture fenêtre résolution problème | +| Déplacement | Se déplace sur les chemins | Attraction forte pour les chemins | #### Description UI +Style graphique inspiré de `IMG_20260303_170253.jpg` : Coloré, vivant, détails foisonnants, aspect 'dessiné à la main' ou 'cartoon soigné'. + | Élément | Type (Bouton/Panel) | Contenu | État par défaut | |---|---|---|---| | Bulle Pensée | Icône Flottante | Image (Burger, WC...) | Caché | diff --git a/docs/specs/zoo.md b/docs/specs/zoo.md index 4b776ad..27cd084 100644 --- a/docs/specs/zoo.md +++ b/docs/specs/zoo.md @@ -4,9 +4,9 @@ Représentation d'un zoo (joueur ou bot) sur la Carte du Monde. ## Affichage -- **Nom du zoo** : Sur une banderole d'accueil personnalisable. -- **Avatar Joueur** : Visible à côté du nom ou sur la carte du monde. -- **Vue** : Isométrique (2.5D). +- **Nom du zoo** : Sur une banderole d'accueil personnalisable (poteaux bois). +- **Avatar Joueur** : Visible en coin de l'écran. +- **Vue** : Isométrique (2.5D). Le zoo est présenté comme un diorama vivant. La banderole flotte au vent. - **Skins** : Le zoo peut avoir des thèmes visuels (Skins de Zoo). - **Icône** : 🏠 - **Slot d'offre** : @@ -170,6 +170,16 @@ function updateZooState(zoo) { # Annexes UX/UI +## 0. Direction Artistique & Vue +* **Vue** : Isométrique (2.5D). +* **Grille** : Les déplacements se font sur une grille losange. +* **Sprites** : 4 directions (Nord-Est, Sud-Est, Sud-Ouest, Nord-Ouest). +* **Profondeur** : Gestion du Z-index (les éléments "en bas" cachent ceux "en haut"). +* **Style Visuel** : Inspiré de `IMG_20260303_170253.jpg`. + * Coloré, vivant, détails foisonnants. + * Aspect "dessiné à la main" ou "cartoon soigné". + * Couleurs vives et contours nets. + ## 1. Expérience Utilisateur (UX) ### Visualisation Offre (Passif) **Description UX** : Voir ce que vend un autre joueur.