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
ResidentRole
        Matthew Pohlmann edited this page Jan 1, 2014 
        ·
        1 revision
      
    ####Description All people in SimCity201 take on the Resident role when interacting in their own homes. Some residents are also Renters.
####Class Signature
public class ResidentRole extends Role implements Resident{}####Data
ResidentState state;
Residence residence;
ResidentGui gui;
boolean isTest = false;public enum ResidentState {doingNothing, hungry, eating, readyToSleep, sleeping, readyToWakeUp, payingRent, relaxing};####Scheduler
switch (state) {
        case readyToSleep:
		goToSleep();
		return true;
	case hungry: 
	        if (residence.hasFood()) {
			pickAndEatFromFridge();
			return true;
		}
		else {
		        //GetFoodFromMarket?
			return false;
		}
	case relaxing:
		actionFinished();
		return true;
        default: 
		actionFinished();
		return false;
}####Messages
public void msgStartEating() {
	state = ResidentState.hungry;
	stateChanged();
}
public void msgDoneEating() { //from animation
	state = ResidentState.doingNothing;
	stateChanged();
}
public void msgAnimationDone() {
        myPerson.animationRelease();
}####Actions
void pickAndEatFromFridge() {
        goToFridge(); //gui
	state = ResidentState.eating;
        //pick random food
        residence.removeFood(randomFood);
	
        
}private void goToSleep() {
		Do("Going to sleep");
		goToBed(); //animation go to bed
		state = ResidentState.sleeping;
		isActive = false;
		//timer/wait for wakeup
	}void startInteraction(Intention intent) {
	switch (intent) {
		case ResidenceEat:
			this.msgStartEating();
			break;
		case ResidenceSleep:
			state = ResidentState.readyToSleep;
			stateChanged();
			break;
		case ResidenceRelax:
			state = ResidentState.relaxing;
			stateChanged();
			break;
		default:
			break;
	}
		
}private void actionFinished() {
	state = ResidentState.doingNothing;
	isActive = false;
}