protected void UpdateLair(IAction action, RabbitLair rabbitLair) { if ((rabbitLair.State == LairState.Empty) && (this.rand.Next(10) < CLOSE_PROB)) { //closes the lair if open with certain probability rabbitLair.State = LairState.Closed; } else if ((rabbitLair.State == LairState.Closed) && (action != null) && (action is OpenLair) && (this.Agent.Cell == rabbitLair.Cell)) { //shows prey if the lair if closed, agent is colocated and performed action "open" rabbitLair.State = LairState.Rabbit; } else if (rabbitLair.State == LairState.Rabbit) { //the prey flees after one time step rabbitLair.State = LairState.Empty; } else { rabbitLair.ForceRepaint = false; return; } rabbitLair.ForceRepaint = true; }
public override void Init() { base.Init(); //creates lair elements this.Lair1 = new RabbitLair { IdToken = "lair1", Description = "lair", Reward = RABBIT_REWARD, Visible = true, Walkable = true, HasSmell = true, ImagePath = RABBIT_IMG_PATH, ClosedLairImagePath = CLOSED_LAIR_IMG_PATH, OpenedLairImagePath = OPENED_LAIR_IMG_PATH, }; this.Lair2 = new RabbitLair { IdToken = "lair2", Description = "lair", Reward = RABBIT_REWARD, Visible = true, Walkable = true, HasSmell = true, ImagePath = RABBIT_IMG_PATH, ClosedLairImagePath = CLOSED_LAIR_IMG_PATH, OpenedLairImagePath = OPENED_LAIR_IMG_PATH, }; }
protected void AddLairSensations(RabbitLair lair) { //adds lair state this.CurrentSensations.Add((lair.State != LairState.Rabbit ? lair.IdToken + "-" : string.Empty) + lair.State); }