From a95048639a27751eca6e2ff7ce4adb68758c60b1 Mon Sep 17 00:00:00 2001
From: Hugo Roussel <hugo.roussel@univ-tlse3.fr>
Date: Wed, 10 Jul 2019 16:06:07 +0200
Subject: [PATCH] Improve percepts cache

---
 AMOEBAonAMAK/src/agents/percept/Percept.java |  6 ++++++
 AMOEBAonAMAK/src/kernel/AMOEBA.java          | 21 ++++++--------------
 2 files changed, 12 insertions(+), 15 deletions(-)

diff --git a/AMOEBAonAMAK/src/agents/percept/Percept.java b/AMOEBAonAMAK/src/agents/percept/Percept.java
index 633a06b3..06496946 100644
--- a/AMOEBAonAMAK/src/agents/percept/Percept.java
+++ b/AMOEBAonAMAK/src/agents/percept/Percept.java
@@ -439,4 +439,10 @@ public class Percept extends AmoebaAgent {
 	public String toString() {
 		return getName();
 	}
+	
+	@Override
+	public void destroy() {
+		super.destroy();
+		getAmas().setPercepts();
+	}
 }
diff --git a/AMOEBAonAMAK/src/kernel/AMOEBA.java b/AMOEBAonAMAK/src/kernel/AMOEBA.java
index 53a894b5..d05843c6 100644
--- a/AMOEBAonAMAK/src/kernel/AMOEBA.java
+++ b/AMOEBAonAMAK/src/kernel/AMOEBA.java
@@ -611,22 +611,10 @@ public class AMOEBA extends Amas<World> implements IAMOEBA {
 	}
 
 	public ArrayList<Percept> getPercepts() {
-		
-		
 		if(percepts == null || percepts.size()==0) {
-			ArrayList<Percept> pcts = new ArrayList<Percept>();
-			for (Agent<? extends Amas<World>, World> agent : getAgents()) {
-				if ((agent instanceof Percept)) {
-					pcts.add((Percept) agent);
-				}
-			}
-			percepts = pcts;
-		}
-			
-		
+			setPercepts();
+		}	
 		return percepts;
-		
-
 	}
 
 	/**
@@ -834,7 +822,10 @@ public class AMOEBA extends Amas<World> implements IAMOEBA {
 		percepts = new ArrayList<Percept>();
 		for (Agent<? extends Amas<World>, World> agent : getAgents()) {
 			if ((agent instanceof Percept)) {
-				percepts.add((Percept) agent);
+				Percept p = (Percept) agent;
+				if(!p.isDying()) {
+					percepts.add(p);
+				}
 			}
 		}
 	}
-- 
GitLab