This repository was archived by the owner on Nov 30, 2021. It is now read-only.
  
  
  - 
                Notifications
    You must be signed in to change notification settings 
- Fork 0
Truck
        Matthew Pohlmann edited this page Jan 1, 2014 
        ·
        1 revision
      
    ###Data
Market homeStructure;
List<Delivery> deliveries;
class Delivery { Map<String,Integer> inventory, Structure destination,DeliveryState s, int id};
enum DeliveryState {NotDone,InProgress,Done};###Messages
public void msgMakeDeliveryRun( Map<String,Integer> inventory, Structure destination, int id)
{
	deliveries.add(new Delivery(inventory,destination,id));
}###Scheduler
@Override
protected void pickAndExecuteAnAction()
{
	if deliveries.isEmpty() && currentLocation != homeStructure
		returnHome();
	else
		if there exists some Delivery d in deliveries such that
			d.s = Failed
				homeStructure.manager.msgDeliveryFailed(d.id)
			d.s = Done
				deliveries.remove(d);
			d.s = NotDone
				makeDeliveryRun (d);
}###Actions
private void returnHome()
{
	msgSetDestination (homeStructure);
	doGoToDestination ();
}
private void makeDeliveryRun(Delivery d)
{
	msgSetDestination(homeStructure);
	doGoToDestination();
	
	msgSetDestination(d.destination);
	d.s = InProgress;
	doGoToDestination();
	
	d.destination.msgMakeDelivery(inventory);
	
	if delivery failed
		d.s = Failed
	d.s = Done;
}