1.3 The Code
1.3.3 Server
1.3.3.1 Sequence
1.3.3.2 Board
1.3.3.3 Places
1.3.3.4 Engine
1.3.3.5 Background
1.3.3.6 Draw
1.3.3.7 Setup
1.3.3.8 Agent
1.3.3.9 Interval
1.3.3.10 Dispatcher
1.3.3.11 TCP Server
8.14
1.3.3.5 Background🔗

Source code at background.rkt

A background task is running to randomly place blocks on the board. The blocks are randomly chosen from ones that have been transferred to bases.

(define (blocks-in-bases places)
   (filter-map-cargos
    places (λ (entity container-id)
           (and (equal? (occupant-type (occupant-by-id places container-id)) type-base)
                entity))))
(define (background engine)
  (sleep 10)
  (let* ([places (engine-places engine)]
         [blocks (blocks-in-bases places)])
    (unless (empty? blocks)
      (let ([random (random-location (engine-board engine))])
        (when (available? engine random)
          (place-entity places (first blocks) random)))))
  (background engine))