1: package agent2d;

  3: import swarm.objectbase.SwarmImpl;
  4: import swarm.objectbase.Swarm;
  5: import swarm.activity.Activity;
  6: import swarm.activity.Schedule;
  7: import swarm.activity.ScheduleImpl;
  8: import swarm.defobj.Zone;
  9: import swarm.gui.Raster;

 11: import swarm.Selector;
 12: import swarm.Globals;

 14: import ObserverSwarm;
 15: import Organization;

 17: public class User2d extends DirectedAgent2d {
 18:   Schedule schedule;

 20:   void newEffort () {
 21:     direction = Globals.env.uniformIntRand.getIntegerWithMin$withMax (0, 359);
 22:     sampleEnergy ();
 23:   }

 25:   public User2d (Zone aZone, Organization org,
 26:                  int x, int y,
 27:                  int scatter,
 28:                  double resistanceProbabilityMean,
 29:                  double resistanceProbabilityDeviation,
 30:                  int energyMean, int energyDeviation) {

 32:     super (aZone, org, x, y, scatter, 2,
 33:            resistanceProbabilityMean, resistanceProbabilityDeviation,
 34:            energyMean, energyDeviation);

 36:     sampleResistProbability ();
 37:     newEffort ();
 38:     schedule = new ScheduleImpl (aZone, 1);

 40:     try {
 41:       schedule.at$createActionTo$message
 42:         (0,
 43:          this,
 44:          new Selector (getClass (), "stepAgent", false));
 45:     } catch (Exception e) {
 46:       e.printStackTrace (System.err);
 47:       System.exit (1);
 48:     }
 49:   }

 51:   public Activity activateIn (Swarm context) {
 52:     super.activateIn (context);

 54:     schedule.activateIn (this);
 55:     return getActivity ();
 56:   }

 58:   public void stepAgent () {
 59:     if (frobbed && !resisting)
 60:       color = ObserverSwarm.UserListenColor;
 61:     else
 62:       color = resisting ? ObserverSwarm.UserResistColor : ObserverSwarm.UserTourColor;
 63:     moveDirection ();
 64:     if (energy == 0)
 65:       newEffort ();
 66:     else
 67:       energy--;
 68:     clearFrobStatus ();
 69:   }
 70: }