Переглянути джерело

BETA: Adding some basic methods like isPlayer, isMonster, etc..
Defined in L2Object and overrided in the necessary classes to avoid castings.

Rumen Nikiforov 13 роки тому
батько
коміт
d77ebb8630

+ 88 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Object.java

@@ -19,13 +19,21 @@ import com.l2jserver.gameserver.handler.ActionShiftHandler;
 import com.l2jserver.gameserver.handler.IActionHandler;
 import com.l2jserver.gameserver.idfactory.IdFactory;
 import com.l2jserver.gameserver.instancemanager.InstanceManager;
+import com.l2jserver.gameserver.model.actor.L2Attackable;
 import com.l2jserver.gameserver.model.actor.L2Character;
 import com.l2jserver.gameserver.model.actor.L2Npc;
+import com.l2jserver.gameserver.model.actor.L2Playable;
+import com.l2jserver.gameserver.model.actor.L2Summon;
+import com.l2jserver.gameserver.model.actor.instance.L2DoorInstance;
+import com.l2jserver.gameserver.model.actor.instance.L2MonsterInstance;
 import com.l2jserver.gameserver.model.actor.instance.L2PcInstance;
+import com.l2jserver.gameserver.model.actor.instance.L2PetInstance;
+import com.l2jserver.gameserver.model.actor.instance.L2TrapInstance;
 import com.l2jserver.gameserver.model.actor.knownlist.ObjectKnownList;
 import com.l2jserver.gameserver.model.actor.poly.ObjectPoly;
 import com.l2jserver.gameserver.model.actor.position.ObjectPosition;
 import com.l2jserver.gameserver.model.entity.Instance;
+import com.l2jserver.gameserver.model.items.instance.L2ItemInstance;
 import com.l2jserver.gameserver.network.SystemMessageId;
 import com.l2jserver.gameserver.network.serverpackets.ActionFailed;
 import com.l2jserver.gameserver.network.serverpackets.ExSendUIEvent;
@@ -705,4 +713,84 @@ public abstract class L2Object
 	{
 		// default implementation
 	}
+
+	/**
+	 * @return {@code true} if object is instance of {@link L2PcInstance}
+	 */
+	public boolean isPlayer()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2Playable}
+	 */
+	public boolean isPlayable()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2Summon}
+	 */
+	public boolean isSummon()
+	{
+		return false;
+	}
+
+	/**
+	 * @return {@code true} if object is instance of {@link L2PetInstance}
+	 */
+	public boolean isPet()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2DoorInstance}
+	 */
+	public boolean isDoor()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2Npc}
+	 */
+	public boolean isNpc()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2Attackable}
+	 */
+	public boolean isL2Attackable()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2MonsterInstance}
+	 */
+	public boolean isMonster()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2TrapInstance}
+	 */
+	public boolean isTrap()
+	{
+		return false;
+	}
+	
+	/**
+	 * @return {@code true} if object is instance of {@link L2ItemInstance}
+	 */
+	public boolean isItem()
+	{
+		return false;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Attackable.java

@@ -2461,4 +2461,10 @@ public class L2Attackable extends L2Npc
 	{
 		return _champion;
 	}
+	
+	@Override
+	public boolean isL2Attackable()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Npc.java

@@ -1699,4 +1699,10 @@ public class L2Npc extends L2Character
 	{
 		_summoner = summoner;
 	}
+	
+	@Override
+	public boolean isNpc()
+	{
+		return true;
+	}
 }

+ 5 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Playable.java

@@ -336,4 +336,9 @@ public abstract class L2Playable extends L2Character
 	
 	public abstract void restoreEffects();
 	
+	@Override
+	public boolean isPlayable()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/L2Summon.java

@@ -941,4 +941,10 @@ public abstract class L2Summon extends L2Playable
 		if (getOwner() != null)
 			getOwner().sendPacket(id);
 	}
+	
+	@Override
+	public boolean isSummon()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2DoorInstance.java

@@ -742,4 +742,10 @@ public class L2DoorInstance extends L2Character
 		
 		activeChar.sendPacket(new StaticObject(this, false));
 	}
+	
+	@Override
+	public boolean isDoor()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2MonsterInstance.java

@@ -217,4 +217,10 @@ public class L2MonsterInstance extends L2Attackable
 
 		return _minionList;
 	}
+	
+	@Override
+	public boolean isMonster()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PcInstance.java

@@ -15363,4 +15363,10 @@ public final class L2PcInstance extends L2Playable
 	{
 		_notMoveUntil = System.currentTimeMillis() + Config.PLAYER_MOVEMENT_BLOCK_TIME;
 	}
+	
+	@Override
+	public boolean isPlayer()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2PetInstance.java

@@ -1368,4 +1368,10 @@ public class L2PetInstance extends L2Summon
 	{
 		return Util.contains(_data.getFood(), itemId);
 	}
+	
+	@Override
+	public boolean isPet()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/actor/instance/L2TrapInstance.java

@@ -247,4 +247,10 @@ public class L2TrapInstance extends L2Trap
 		
 		return true;
 	}
+	
+	@Override
+	public boolean isTrap()
+	{
+		return true;
+	}
 }

+ 6 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/model/items/instance/L2ItemInstance.java

@@ -2024,4 +2024,10 @@ public final class L2ItemInstance extends L2Object
 			}
 		}
 	}
+	
+	@Override
+	public boolean isItem()
+	{
+		return true;
+	}
 }