Reuse of Iterator for knownlists.
This commit is contained in:
@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jmobius.gameserver.model.actor.knownlist;
|
package com.l2jmobius.gameserver.model.actor.knownlist;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
@ -122,25 +123,30 @@ public class CharKnownList extends ObjectKnownList
|
|||||||
{
|
{
|
||||||
if (!fullCheck)
|
if (!fullCheck)
|
||||||
{
|
{
|
||||||
for (L2PcInstance player : getKnownPlayers().values())
|
final Iterator<L2PcInstance> pIter = getKnownPlayers().values().iterator();
|
||||||
|
while (pIter.hasNext())
|
||||||
{
|
{
|
||||||
|
final L2PcInstance player = pIter.next();
|
||||||
if (player == null)
|
if (player == null)
|
||||||
{
|
{
|
||||||
removeKnownObject(player, true);
|
pIter.remove();
|
||||||
}
|
}
|
||||||
else if (!player.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(player), getActiveObject(), player, true))
|
else if (!player.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(player), getActiveObject(), player, true))
|
||||||
{
|
{
|
||||||
|
pIter.remove();
|
||||||
removeKnownObject(player, true);
|
removeKnownObject(player, true);
|
||||||
getKnownRelations().remove(player.getObjectId());
|
getKnownRelations().remove(player.getObjectId());
|
||||||
getKnownObjects().remove(player.getObjectId());
|
getKnownObjects().remove(player.getObjectId());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (L2Summon summon : getKnownSummons().values())
|
final Iterator<L2Summon> sIter = getKnownSummons().values().iterator();
|
||||||
|
while (sIter.hasNext())
|
||||||
{
|
{
|
||||||
|
final L2Summon summon = sIter.next();
|
||||||
if (summon == null)
|
if (summon == null)
|
||||||
{
|
{
|
||||||
removeKnownObject(summon, true);
|
sIter.remove();
|
||||||
}
|
}
|
||||||
else if (getActiveChar().isPlayer() && (summon.getOwner() == getActiveChar()))
|
else if (getActiveChar().isPlayer() && (summon.getOwner() == getActiveChar()))
|
||||||
{
|
{
|
||||||
@ -148,6 +154,7 @@ public class CharKnownList extends ObjectKnownList
|
|||||||
}
|
}
|
||||||
else if (!summon.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(summon), getActiveObject(), summon, true))
|
else if (!summon.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(summon), getActiveObject(), summon, true))
|
||||||
{
|
{
|
||||||
|
sIter.remove();
|
||||||
removeKnownObject(summon, true);
|
removeKnownObject(summon, true);
|
||||||
getKnownObjects().remove(summon.getObjectId());
|
getKnownObjects().remove(summon.getObjectId());
|
||||||
}
|
}
|
||||||
@ -156,14 +163,17 @@ public class CharKnownList extends ObjectKnownList
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Go through knownObjects
|
// Go through knownObjects
|
||||||
for (L2Object object : getKnownObjects().values())
|
final Iterator<L2Object> oIter = getKnownObjects().values().iterator();
|
||||||
|
while (oIter.hasNext())
|
||||||
{
|
{
|
||||||
|
final L2Object object = oIter.next();
|
||||||
if (object == null)
|
if (object == null)
|
||||||
{
|
{
|
||||||
removeKnownObject(object, true);
|
oIter.remove();
|
||||||
}
|
}
|
||||||
else if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
else if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
||||||
{
|
{
|
||||||
|
oIter.remove();
|
||||||
removeKnownObject(object, true);
|
removeKnownObject(object, true);
|
||||||
|
|
||||||
if (object.isPlayer())
|
if (object.isPlayer())
|
||||||
|
@ -16,6 +16,7 @@
|
|||||||
*/
|
*/
|
||||||
package com.l2jmobius.gameserver.model.actor.knownlist;
|
package com.l2jmobius.gameserver.model.actor.knownlist;
|
||||||
|
|
||||||
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
@ -158,8 +159,10 @@ public class ObjectKnownList
|
|||||||
*/
|
*/
|
||||||
public void forgetObjects(boolean fullCheck)
|
public void forgetObjects(boolean fullCheck)
|
||||||
{
|
{
|
||||||
for (L2Object object : getKnownObjects().values())
|
final Iterator<L2Object> oIter = getKnownObjects().values().iterator();
|
||||||
|
while (oIter.hasNext())
|
||||||
{
|
{
|
||||||
|
final L2Object object = oIter.next();
|
||||||
if (!fullCheck && !object.isPlayable())
|
if (!fullCheck && !object.isPlayable())
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
@ -168,6 +171,7 @@ public class ObjectKnownList
|
|||||||
// Remove all objects invisible or too far
|
// Remove all objects invisible or too far
|
||||||
if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
if (!object.isVisible() || !Util.checkIfInShortRadius(getDistanceToForgetObject(object), getActiveObject(), object, true))
|
||||||
{
|
{
|
||||||
|
oIter.remove();
|
||||||
removeKnownObject(object, true);
|
removeKnownObject(object, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user