# Spécifications : Achat et Upgrade des Boutiques ## Construction - 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 (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 ### 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.* ## 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. **Description UI** : Le sprite du bâtiment change (devient plus grand/beau). **Emplacement** : Case Boutique. **Intégration** : Visuel immédiat. **Navigation** : Upgrade -> Validation. **Événements** : `UPGRADE_SHOP_VISUAL`. #### Assets - **Musiques** : Musique d'ascenseur (Muzak) apaisante. - **Sons** : `construction_finish.mp3`. - **Graphiques** : Sprites Boutiques Niv 1-7. - **Images** : Photo avant/après (style émission rénovation). - **Vidéos** : Ruban d'inauguration coupé. - **Animations** : Effet de "pop" ou échafaudage rapide. - **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.