Răsfoiți Sursa

BETA: L2TIntObjectHashMap at GameTimeController, L2Manor, L2Attackable, L2ZoneType. Can't think of any more places where i can use this, except knownlist (im still testing this rework).

Nik 13 ani în urmă
părinte
comite
89a81beaa6

+ 7 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/GameTimeController.java

@@ -14,17 +14,16 @@
  */
 package com.l2jserver.gameserver;
 
-import java.util.Iterator;
-import java.util.Map;
+import gnu.trove.TIntObjectIterator;
+
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-import javolution.util.FastMap;
-
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.ai.CtrlEvent;
 import com.l2jserver.gameserver.instancemanager.DayNightSpawnManager;
 import com.l2jserver.gameserver.model.actor.L2Character;
+import com.l2jserver.gameserver.util.L2TIntObjectHashMap;
 
 /**
  * Removed TimerThread watcher [DrHouse]
@@ -43,7 +42,7 @@ public class GameTimeController
 	protected static boolean _isNight = false;
 	protected static boolean _interruptRequest = false;
 	
-	private static final FastMap<Integer, L2Character> _movingObjects = new FastMap<Integer, L2Character>().shared();
+	private static final L2TIntObjectHashMap<L2Character> _movingObjects = new L2TIntObjectHashMap<L2Character>();
 	
 	protected static TimerThread _timer;
 	
@@ -114,12 +113,13 @@ public class GameTimeController
 	protected void moveObjects()
 	{
 		// Go throw the table containing L2Character in movement
-		Iterator<Map.Entry<Integer, L2Character>> it = _movingObjects.entrySet().iterator();
+		TIntObjectIterator<L2Character> it = _movingObjects.iterator();
 		while (it.hasNext())
 		{
 			// If movement is finished, the L2Character is removed from
 			// movingObjects and added to the ArrayList ended
-			L2Character ch = it.next().getValue();
+			it.advance();
+			L2Character ch = it.value();
 			if (ch.updatePosition(_gameTicks))
 			{
 				it.remove();

+ 17 - 12
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Manor.java

@@ -21,7 +21,6 @@ import java.util.logging.Logger;
 import javax.xml.parsers.DocumentBuilderFactory;
 
 import javolution.util.FastList;
-import javolution.util.FastMap;
 
 import org.w3c.dom.Document;
 import org.w3c.dom.Node;
@@ -29,6 +28,7 @@ import org.w3c.dom.Node;
 import com.l2jserver.Config;
 import com.l2jserver.gameserver.datatables.ItemTable;
 import com.l2jserver.gameserver.templates.item.L2Item;
+import com.l2jserver.gameserver.util.L2TIntObjectHashMap;
 
 /**
  * Service class for manor
@@ -39,11 +39,11 @@ public class L2Manor
 {
 	private static Logger _log = Logger.getLogger(L2Manor.class.getName());
 	
-	private static FastMap<Integer, SeedData> _seeds;
+	private static L2TIntObjectHashMap<SeedData> _seeds;
 	
 	private L2Manor()
 	{
-		_seeds = new FastMap<Integer, SeedData>().shared();
+		_seeds = new L2TIntObjectHashMap<SeedData>();
 		parseData();
 	}
 	
@@ -52,11 +52,16 @@ public class L2Manor
 		return SingletonHolder._instance;
 	}
 	
+	public SeedData[] getSeedsDataArray()
+	{
+		return _seeds.getValues(new SeedData[_seeds.size()]);
+	}
+	
 	public FastList<Integer> getAllCrops()
 	{
 		FastList<Integer> crops = new FastList<Integer>();
 		
-		for (SeedData seed : _seeds.values())
+		for (SeedData seed : getSeedsDataArray())
 		{
 			if (!crops.contains(seed.getCrop()) && seed.getCrop() != 0 && !crops.contains(seed.getCrop()))
 			{
@@ -83,7 +88,7 @@ public class L2Manor
 	
 	public int getSeedBasicPriceByCrop(int cropId)
 	{
-		for (SeedData seed : _seeds.values())
+		for (SeedData seed : getSeedsDataArray())
 		{
 			if (seed.getCrop() == cropId)
 				return getSeedBasicPrice(seed.getId());
@@ -103,7 +108,7 @@ public class L2Manor
 	
 	public int getMatureCrop(int cropId)
 	{
-		for (SeedData seed : _seeds.values())
+		for (SeedData seed : getSeedsDataArray())
 		{
 			if (seed.getCrop() == cropId)
 				return seed.getMature();
@@ -142,7 +147,7 @@ public class L2Manor
 	
 	public int getSeedLevelByCrop(int cropId)
 	{
-		for (SeedData seed : _seeds.values())
+		for (SeedData seed : getSeedsDataArray())
 		{
 			if (seed.getCrop() == cropId)
 			{
@@ -165,7 +170,7 @@ public class L2Manor
 	
 	public boolean isAlternative(int seedId)
 	{
-		for (SeedData seed : _seeds.values())
+		for (SeedData seed : getSeedsDataArray())
 		{
 			if (seed.getId() == seedId)
 			{
@@ -186,7 +191,7 @@ public class L2Manor
 	
 	public int getRewardItem(int cropId, int type)
 	{
-		for (SeedData seed : _seeds.values())
+		for (SeedData seed : getSeedsDataArray())
 		{
 			if (seed.getCrop() == cropId)
 			{
@@ -220,7 +225,7 @@ public class L2Manor
 	{
 		FastList<Integer> crops = new FastList<Integer>();
 		
-		for (SeedData seed : _seeds.values())
+		for (SeedData seed : getSeedsDataArray())
 		{
 			if (seed.getManorId() == castleId && !crops.contains(seed.getCrop()))
 			{
@@ -240,7 +245,7 @@ public class L2Manor
 	{
 		FastList<Integer> seedsID = new FastList<Integer>();
 		
-		for (SeedData seed : _seeds.values())
+		for (SeedData seed : getSeedsDataArray())
 		{
 			if (seed.getManorId() == castleId && !seedsID.contains(seed.getId()))
 			{
@@ -280,7 +285,7 @@ public class L2Manor
 	
 	public int getCropPuchaseLimit(int cropId)
 	{
-		for (SeedData seed : _seeds.values())
+		for (SeedData seed : getSeedsDataArray())
 		{
 			if (seed.getCrop() == cropId)
 			{

+ 3 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Attackable.java

@@ -61,6 +61,7 @@ import com.l2jserver.gameserver.taskmanager.DecayTaskManager;
 import com.l2jserver.gameserver.templates.chars.L2NpcTemplate;
 import com.l2jserver.gameserver.templates.item.L2EtcItemType;
 import com.l2jserver.gameserver.templates.item.L2Item;
+import com.l2jserver.gameserver.util.L2TIntObjectHashMap;
 import com.l2jserver.gameserver.util.Util;
 import com.l2jserver.util.Rnd;
 
@@ -312,7 +313,7 @@ public class L2Attackable extends L2Npc
 	
 	private boolean _absorbed;
 	
-	private final FastMap<Integer, AbsorberInfo> _absorbersList = new FastMap<Integer, AbsorberInfo>().shared();
+	private final L2TIntObjectHashMap<AbsorberInfo> _absorbersList = new L2TIntObjectHashMap<AbsorberInfo>();
 	
 	private boolean _mustGiveExpSp;
 	
@@ -2054,7 +2055,7 @@ public class L2Attackable extends L2Npc
 		_absorbersList.clear();
 	}
 	
-	public FastMap<Integer, AbsorberInfo> getAbsorbersList()
+	public L2TIntObjectHashMap<AbsorberInfo> getAbsorbersList()
 	{
 		return _absorbersList;
 	}

+ 26 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/L2ZoneType.java

@@ -14,6 +14,8 @@
  */
 package com.l2jserver.gameserver.model.zone;
 
+import gnu.trove.TObjectProcedure;
+
 import java.util.Map;
 import java.util.logging.Logger;
 
@@ -26,6 +28,7 @@ import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
 import com.l2jserver.gameserver.model.quest.Quest;
 import com.l2jserver.gameserver.network.serverpackets.L2GameServerPacket;
+import com.l2jserver.gameserver.util.L2TIntObjectHashMap;
 
 /**
  * Abstract base class for any zone type
@@ -39,7 +42,7 @@ public abstract class L2ZoneType
 	
 	private final int _id;
 	protected L2ZoneForm _zone;
-	protected FastMap<Integer, L2Character> _characterList;
+	protected L2TIntObjectHashMap<L2Character> _characterList;
 	
 	/** Parameters to affect specific characters */
 	private boolean _checkAffected = false;
@@ -56,7 +59,7 @@ public abstract class L2ZoneType
 	protected L2ZoneType(int id)
 	{
 		_id = id;
-		_characterList = new FastMap<Integer, L2Character>().shared();
+		_characterList = new L2TIntObjectHashMap<L2Character>();
 		
 		_minLvl = 0;
 		_maxLvl = 0xFF;
@@ -397,11 +400,16 @@ public abstract class L2ZoneType
 	
 	public abstract void onReviveInside(L2Character character);
 	
-	public FastMap<Integer, L2Character> getCharactersInside()
+	public L2TIntObjectHashMap<L2Character> getCharactersInside()
 	{
 		return _characterList;
 	}
 	
+	public L2Character[] getCharactersInsideArray()
+	{
+		return _characterList.getValues(new L2Character[_characterList.size()]);
+	}
+	
 	public void addQuestEvent(Quest.QuestEventType EventType, Quest q)
 	{
 		if (_questEvents == null)
@@ -429,10 +437,23 @@ public abstract class L2ZoneType
 		if (_characterList.isEmpty())
 			return;
 		
-		for (L2Character character : _characterList.values())
+		_characterList.forEachValue(new BroadcastPacket(packet));
+	}
+	
+	private final class BroadcastPacket implements TObjectProcedure<L2Character>
+	{
+		final L2GameServerPacket _packet;
+		private BroadcastPacket(L2GameServerPacket packet)
+		{
+			_packet = packet;
+		}
+		
+		@Override
+		public final boolean execute(final L2Character character)
 		{
 			if (character != null && character instanceof L2PcInstance)
-				character.sendPacket(packet);
+				character.sendPacket(_packet);
+			return true;
 		}
 	}
 	

+ 4 - 4
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2BossZone.java

@@ -197,7 +197,7 @@ public class L2BossZone extends L2ZoneType
 				{
 					_raidList.clear();
 					int count = 0;
-					for (L2Character obj : getCharactersInside().values())
+					for (L2Character obj : getCharactersInsideArray())
 					{
 						if (obj == null)
 							continue;
@@ -284,7 +284,7 @@ public class L2BossZone extends L2ZoneType
 		if (_characterList.isEmpty())
 			return;
 		
-		for (L2Character character : _characterList.values())
+		for (L2Character character : getCharactersInsideArray())
 		{
 			if (character instanceof L2PcInstance)
 			{
@@ -308,7 +308,7 @@ public class L2BossZone extends L2ZoneType
 		if (_characterList.isEmpty())
 			return;
 		
-		for (L2Character character : _characterList.values())
+		for (L2Character character : getCharactersInsideArray())
 		{
 			if (character instanceof L2PcInstance)
 			{
@@ -369,7 +369,7 @@ public class L2BossZone extends L2ZoneType
 			return;
 		
 		Map<Integer, L2PcInstance> npcKnownPlayers = npc.getKnownList().getKnownPlayers();
-		for (L2Character character : _characterList.values())
+		for (L2Character character : getCharactersInsideArray())
 		{
 			if (character == null)
 				continue;

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2CastleZone.java

@@ -75,7 +75,7 @@ public class L2CastleZone extends L2ZoneRespawn
 	 */
 	public void banishForeigners(int owningClanId)
 	{
-		for (L2Character temp : _characterList.values())
+		for (L2Character temp : getCharactersInsideArray())
 		{
 			if (!(temp instanceof L2PcInstance))
 				continue;

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2ClanHallZone.java

@@ -95,7 +95,7 @@ public class L2ClanHallZone extends L2ZoneRespawn
 	 */
 	public void banishForeigners(int owningClanId)
 	{
-		for (L2Character temp : _characterList.values())
+		for (L2Character temp : getCharactersInsideArray())
 		{
 			if (!(temp instanceof L2PcInstance))
 				continue;

+ 1 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2DamageZone.java

@@ -14,7 +14,6 @@
  */
 package com.l2jserver.gameserver.model.zone.type;
 
-import java.util.Collection;
 import java.util.concurrent.Future;
 
 import com.l2jserver.gameserver.ThreadPoolManager;
@@ -115,11 +114,6 @@ public class L2DamageZone extends L2ZoneType
 		}
 	}
 	
-	protected Collection<L2Character> getCharacterList()
-	{
-		return _characterList.values();
-	}
-	
 	protected int getHPDamagePerSecond()
 	{
 		return _damageHPPerSec;
@@ -173,7 +167,7 @@ public class L2DamageZone extends L2ZoneType
 				}
 			}
 			
-			for (L2Character temp : _dmgZone.getCharacterList())
+			for (L2Character temp : _dmgZone.getCharactersInsideArray())
 			{
 				if (temp != null && !temp.isDead())
 				{

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2DynamicZone.java

@@ -95,7 +95,7 @@ public class L2DynamicZone extends L2ZoneType
 		_task = null;
 		
 		_region.removeZone(this);
-		for (L2Character member : _characterList.values())
+		for (L2Character member : getCharactersInsideArray())
 		{
 			try
 			{

+ 1 - 7
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2EffectZone.java

@@ -14,7 +14,6 @@
  */
 package com.l2jserver.gameserver.model.zone.type;
 
-import java.util.Collection;
 import java.util.Map.Entry;
 import java.util.concurrent.Future;
 
@@ -226,11 +225,6 @@ public class L2EffectZone extends L2ZoneType
 			return _skills.get(skillId);
 	}
 	
-	protected Collection<L2Character> getCharacterList()
-	{
-		return _characterList.values();
-	}
-	
 	class ApplySkill implements Runnable
 	{
 		ApplySkill()
@@ -244,7 +238,7 @@ public class L2EffectZone extends L2ZoneType
 		{
 			if (isEnabled())
 			{
-				for (L2Character temp : L2EffectZone.this.getCharacterList())
+				for (L2Character temp : getCharactersInsideArray())
 				{
 					if (temp != null && !temp.isDead())
 					{

+ 1 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2FortZone.java

@@ -76,7 +76,7 @@ public class L2FortZone extends L2ZoneRespawn
 	 */
 	public void banishForeigners(L2Clan owningClan)
 	{
-		for (L2Character temp : _characterList.values())
+		for (L2Character temp : getCharactersInsideArray())
 		{
 			if (!(temp instanceof L2PcInstance))
 				continue;

+ 3 - 3
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2OlympiadStadiumZone.java

@@ -98,7 +98,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn
 	public final void broadcastStatusUpdate(L2PcInstance player)
 	{
 		final ExOlympiadUserInfo packet = new ExOlympiadUserInfo(player);
-		for (L2Character character : _characterList.values())
+		for (L2Character character : getCharactersInsideArray())
 		{
 			if (character instanceof L2PcInstance)
 			{
@@ -111,7 +111,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn
 
 	public final void broadcastPacketToObservers(L2GameServerPacket packet)
 	{
-		for (L2Character character : _characterList.values())
+		for (L2Character character : getCharactersInsideArray())
 		{
 			if (character instanceof L2PcInstance
 					&& ((L2PcInstance)character).inObserverMode())
@@ -205,7 +205,7 @@ public class L2OlympiadStadiumZone extends L2ZoneRespawn
 		else
 			sm = SystemMessage.getSystemMessage(SystemMessageId.LEFT_COMBAT_ZONE);
 
-		for (L2Character character : _characterList.values())
+		for (L2Character character : getCharactersInsideArray())
 		{
 			if (character == null)
 				continue;

+ 2 - 2
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2ResidenceTeleportZone.java

@@ -71,7 +71,7 @@ public class L2ResidenceTeleportZone extends L2ZoneRespawn
 	{
 		FastList<L2PcInstance> players = new FastList<L2PcInstance>();
 		
-		for (L2Character temp : _characterList.values())
+		for (L2Character temp : getCharactersInsideArray())
 		{
 			if (temp instanceof L2PcInstance)
 				players.add((L2PcInstance) temp);
@@ -86,7 +86,7 @@ public class L2ResidenceTeleportZone extends L2ZoneRespawn
 			return;
 		if (_characterList.isEmpty())
 			return;
-		for (L2Character character : _characterList.values())
+		for (L2Character character : getCharactersInsideArray())
 		{
 			if (character == null)
 				continue;

+ 5 - 5
L2J_Server_BETA/java/com/l2jserver/gameserver/model/zone/type/L2SiegeZone.java

@@ -183,7 +183,7 @@ public class L2SiegeZone extends L2ZoneType
 	{
 		if (_isActiveSiege)
 		{
-			for (L2Character character : _characterList.values())
+			for (L2Character character : getCharactersInsideArray())
 			{
 				if (character != null)
 					onEnter(character);
@@ -191,7 +191,7 @@ public class L2SiegeZone extends L2ZoneType
 		}
 		else
 		{
-			for (L2Character character : _characterList.values())
+			for (L2Character character : getCharactersInsideArray())
 			{
 				if (character == null)
 					continue;
@@ -224,7 +224,7 @@ public class L2SiegeZone extends L2ZoneType
 	 */
 	public void announceToPlayers(String message)
 	{
-		for (L2Character temp : _characterList.values())
+		for (L2Character temp : getCharactersInsideArray())
 		{
 			if (temp instanceof L2PcInstance)
 				((L2PcInstance) temp).sendMessage(message);
@@ -239,7 +239,7 @@ public class L2SiegeZone extends L2ZoneType
 	{
 		FastList<L2PcInstance> players = new FastList<L2PcInstance>();
 		
-		for (L2Character temp : _characterList.values())
+		for (L2Character temp : getCharactersInsideArray())
 		{
 			if (temp instanceof L2PcInstance)
 				players.add((L2PcInstance) temp);
@@ -274,7 +274,7 @@ public class L2SiegeZone extends L2ZoneType
 	 */
 	public void banishForeigners(L2Clan owningClan)
 	{
-		for (L2Character temp : _characterList.values())
+		for (L2Character temp : getCharactersInsideArray())
 		{
 			if (!(temp instanceof L2PcInstance))
 				continue;