/**
** Student.java
**
** Copyright 2011 by Joseph Harrison, Mark Coletti, Cristina Metgher, Andrew Crooks
** George Mason University.
**
** Licensed under the Academic Free License version 3.0
**
** See the file "LICENSE" for more information
**
** $Id$
**/
package sim.app.geo.sickStudents;
import sim.engine.SimState;
import sim.engine.Steppable;
@SuppressWarnings("serial")
public class Student implements Steppable
{
private SickStudentsModel model;
public Status status = Status.SUSCEPTIBLE;
public int timeSinceInfected = 0;
public boolean homebound = false;
public int age;
public Student(SickStudentsModel model, int age)
{
this.model = model;
this.age = age;
}
public void infect()
{
status = Status.INFECTED;
this.timeSinceInfected = 0;
}
public void infect(int timeSinceInfected)
{
status = Status.INFECTED;
this.timeSinceInfected = timeSinceInfected;
}
public void expose()
{
if (status != Status.SUSCEPTIBLE)
{
return;
}
double val = model.random.nextDouble();
if (val <= model.diseaseTransmissionProb)
{
infect();
}
}
@Override
public void step(SimState state)
{
switch (status)
{
case SUSCEPTIBLE:
break; // do nothing
case INFECTED:
timeSinceInfected++;
if (timeSinceInfected >= model.incubationPeriod)
{
homebound = true;
}
if (timeSinceInfected > model.diseaseDuration)
{
status = Status.RECOVERED;
}
break;
case RECOVERED:
homebound = false;
timeSinceInfected++; // just for record-keeping
break;
}
}
}