**Motivations:** - Make docs/specs implementation-ready without empty sections or placeholders. **Root causes:** - Multiple specs still contained non-actionable placeholders (N/A, “see above”, "..."), and inconsistent “no cache” wording. **Correctifs:** - Replace placeholders with explicit tables, structures, and typed examples. - Align “no cache / no memorization” statements where relevant. **Evolutions:** - Add a features doc entry to track the documentation enrichment effort. **Pages affectées:** - docs/specs/* - docs/features/docs-specs-enrichment.md - docs/leo.md - docs/plan-enrich-docs-specs.md
124 lines
4.1 KiB
Markdown
124 lines
4.1 KiB
Markdown
# Spécifications : Billeterie
|
|
|
|
## Définition
|
|
Bâtiment d'entrée du zoo. Point d'apparition et de départ des visiteurs.
|
|
|
|
## Fonctionnalités
|
|
- **Entrée/Sortie** : Génère le flux de visiteurs.
|
|
- **Vente de tickets** : Génère des revenus par visiteur entrant.
|
|
- **Capacité** : Limite le nombre de visiteurs simultanés dans le zoo.
|
|
|
|
## Niveaux d'Amélioration (7 niveaux)
|
|
- **Coût** : Progressif par palier.
|
|
- **Effet** : Augmente le prix du ticket et la capacité maximale de visiteurs simultanés.
|
|
- **Ratio** : 1 unité couvre 20 visiteurs simultanés max.
|
|
|
|
# Annexes Techniques
|
|
|
|
## 1. Données et États
|
|
### Modèle de Données (JSON)
|
|
```json
|
|
{
|
|
"id": "uuid",
|
|
"type": "ticket_booth",
|
|
"level": "integer (1-7)",
|
|
"position": { "x": "int", "y": "int" },
|
|
"stats": {
|
|
"total_entries": "integer",
|
|
"daily_revenue": "integer",
|
|
"current_queue_length": "integer"
|
|
},
|
|
"entry_log": [
|
|
{ "timestamp": "timestamp", "visitor_count": 5, "revenue": 50 }
|
|
],
|
|
"iso_x": "integer",
|
|
"iso_y": "integer",
|
|
"z_index": "integer"
|
|
}
|
|
```
|
|
|
|
### Caractéristiques Initiales
|
|
| Caractéristique | Valeur Initiale (Niv 1) |
|
|
| :--- | :--- |
|
|
| Prix Ticket | 10 pièces |
|
|
| Capacité Max | 20 visiteurs |
|
|
|
|
## 7. Progression
|
|
### Tableau des Upgrades
|
|
| Niveau | Coût (Pièces) | Prix Ticket | Capacité Max | Temps Construction |
|
|
| :--- | :--- | :--- | :--- | :--- |
|
|
| 1 | 0 (Base) | 10 | 20 | 0s |
|
|
| 2 | 200 | 12 | 40 | 0s |
|
|
| 3 | 400 | 15 | 70 | 0s |
|
|
| 4 | 800 | 18 | 110 | 0s |
|
|
| 5 | 1600 | 22 | 160 | 0s |
|
|
| 6 | 3200 | 28 | 220 | 0s |
|
|
| 7 | 6400 | 35 | 300 | 0s |
|
|
|
|
## 8. Logique et Interfaces
|
|
### Pseudo-code Impacts
|
|
```python
|
|
def process_entry(zoo):
|
|
potential_visitors = calculate_attraction_flow(zoo)
|
|
|
|
# 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
|
|
| ID | Niveau | Message |
|
|
| :--- | :--- | :--- |
|
|
| `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.
|
|
**Navigation** : Clic -> Ouverture Panneau -> Fermeture.
|
|
**Événements** : `CLICK_BILLETERIE`.
|
|
|
|
#### Assets
|
|
- **Musiques** : Ambiance "Hall de Gare" (brouhaha léger).
|
|
- **Sons** : `ui_open.mp3`
|
|
- **Graphiques** : Pixel Art, style guichet.
|
|
- **Images** : `billeterie_lvl[1-7].png`
|
|
- **Vidéos** : Flux vidéo surveillance (fictif, décoratif).
|
|
- **Animations** : Légère surbrillance au survol.
|
|
- **Couleurs** : Palette UI standard.
|
|
- **Textes** : "Billeterie", "Niveau X", "Revenus : Y".
|
|
- **Formes** : Carré (case).
|
|
|
|
### 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.
|