Market: GreeterRole - ellenvoegtli/simcity GitHub Wiki

Messages

INeedInventory(CustomerAgent c, int x, int y){
	waitingCustomers.add(new MyWaitingCustomer(c, x, y));
}
INeedInventory(String restaurantName, Map<String, Integer> inventory){
	waitingBusinesses.add(new MyWaitingBusiness(restaurantName, inventory));
}

Data

List<MyWaitingCustomer> waitingCustomers;
List<MyWaitingBusiness> waitingBusinesses;
List<EmployeeAgent> myEmployees;
int nextEmployee = 0;

class MyWaitingCustomer {
	CustomerAgent c;
	int waitingPosX;
	int waitingPosY;
}
class MyWaitingBusiness {
	String restaurantName;
	Map<String, Integer> inventory;
}

Scheduler

if E c in waitingCustomers && if E e in myEmployees
	if nextEmployee doesn't exceed size of myEmployees
	assignCustomerToEmployee(waitingCustomers.get(0), myEmployees.get(nextEmployee));
	nextEmployee++;
if E b in waitingBusinesses && if E e in myEmployees
	if nextEmployee doesn't exceed size of myEmployees
	assignBusinessToEmployee(waitingBusinesses.get(0), myEmployees.get(nextEmployee));
	nextEmployee++;

Actions

assignCustomerToEmployee(MyWaitingCustomer mc, EmployeeAgent e){
	e.AssignedToCustomer(mc.c, mc.waitingPosX, mc.waitingPosY);
	waitingCustomers.remove(mc);
}
assignBusinessToEmployee(MyWaitingBusiness mb, EmployeeAgent e){
	e.AssignedToBusiness(mc.restaurantName, mc.inventory);
	waitingBusinesses.remove(mb)
}