... | ... | @@ -30,3 +30,7 @@ Le reflex `processOrders` se déclenche automatiquement toutes les `nbStepsBetwe |
|
|
Le reflex parcourt l'ensemble des `Order` de `currentOrders` et pour chacun d'entre eux, va essayer de retrouver le stock correspondant dans lequel il va puiser pour envoyer les marchandises. Le stock correspond si le type de produit et le destinataire final du stock sont conformes à ceux de la commande.
|
|
|
|
|
|
Lorsque le reflex a trouvé le bon stock, il va déduire de celui-ci la quantité indiquée par la commande (bien sûr dans la limite de la quantité présente dans le stock). Un objet `Stock` est créé avec la quantité de marchandise qui doit être envoyé. Cet objet `Stock` est lui-même incorporé dans un nouvel objet `Commodity` qui est transmis à l'agent `ForwardingAgent`. Ce dernier se charge de calculer le plus court chemin entre le bâtiment source (donc le bâtiment qui exécute le reflex `processOrders`) et la destination (donc le bâtiment qui a effectué la commande). Le chemin est stocké dans l'objet `Commodity` qui est lui-même ajouté à la liste `leavingCommodities` dans laquelle les véhicules viendront prendre les marchandises à transporter.
|
|
|
|
|
|
# Départ d'un véhicule
|
|
|
|
|
|
Lorsqu'un véhicule quitte un bâtiment, il fait appel à la fonction `removeVehicleFromList` défini au sein des agents `Building`. Cette fonction permet de maintenir à jour les dates des derniers départs de véhicule par mode (`lastVehicleDeparture_[mode de transport]`) ainsi que les listes `leavingVehicle_[mode de transport]`. Ces variables sont utilisés par les agents `Transporter` lorsqu'ils souhaitent déterminer l'heure de départ des véhicules. |
|
|
\ No newline at end of file |