Browse Source

BETA: Moving targets to handlers thanks BiggBoss for the idea

Rumen Nikiforov 13 years ago
parent
commit
e9f35d81d3

+ 3 - 1
L2J_Server_BETA/java/com/l2jserver/gameserver/GameServer.java

@@ -78,6 +78,7 @@ import com.l2jserver.gameserver.handler.AdminCommandHandler;
 import com.l2jserver.gameserver.handler.ChatHandler;
 import com.l2jserver.gameserver.handler.ItemHandler;
 import com.l2jserver.gameserver.handler.SkillHandler;
+import com.l2jserver.gameserver.handler.TargetHandler;
 import com.l2jserver.gameserver.handler.UserCommandHandler;
 import com.l2jserver.gameserver.handler.VoicedCommandHandler;
 import com.l2jserver.gameserver.idfactory.IdFactory;
@@ -151,7 +152,7 @@ public class GameServer
 	private final DeadLockDetector _deadDetectThread;
 	private final IdFactory _idFactory;
 	public static GameServer gameServer;
-	private LoginServerThread _loginThread;
+	private final LoginServerThread _loginThread;
 	private static Status _statusServer;
 	public static final Calendar dateTimeServerStarted = Calendar.getInstance();
 	
@@ -218,6 +219,7 @@ public class GameServer
 		GlobalVariablesManager.getInstance();
 		
 		printSection("Skills");
+		TargetHandler.getInstance().executeScript();
 		EnchantGroupsTable.getInstance();
 		SkillTable.getInstance();
 		SkillTreesData.getInstance();

+ 34 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/ISkillTargetTypeHandler.java

@@ -0,0 +1,34 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.handler;
+
+import com.l2jserver.gameserver.model.L2Object;
+import com.l2jserver.gameserver.model.L2Skill;
+import com.l2jserver.gameserver.model.L2Skill.SkillTargetType;
+import com.l2jserver.gameserver.model.actor.L2Character;
+
+/**
+ * 
+ *
+ * @author UnAfraid
+ */
+public interface ISkillTargetTypeHandler
+{
+	static final L2Object[] _emptyTargetList = new L2Object[0];
+	
+	public L2Object[] getTargetList(L2Skill skill, L2Character activeChar, boolean onlyFirst, L2Character target);
+	
+	public Enum<SkillTargetType> getTargetType();
+}

+ 84 - 0
L2J_Server_BETA/java/com/l2jserver/gameserver/handler/TargetHandler.java

@@ -0,0 +1,84 @@
+/*
+ * This program is free software: you can redistribute it and/or modify it under
+ * the terms of the GNU General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later
+ * version.
+ * 
+ * This program is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+ * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
+ * details.
+ * 
+ * You should have received a copy of the GNU General Public License along with
+ * this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+package com.l2jserver.gameserver.handler;
+
+import java.io.File;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javolution.util.FastMap;
+
+import com.l2jserver.gameserver.model.L2Skill.SkillTargetType;
+import com.l2jserver.gameserver.scripting.L2ScriptEngineManager;
+
+/**
+ * @author UnAfraid
+ */
+public class TargetHandler
+{
+	private static Logger _log = Logger.getLogger(TargetHandler.class.getName());
+	
+	private final Map<Enum<SkillTargetType>, ISkillTargetTypeHandler> _datatable;
+	
+	public static TargetHandler getInstance()
+	{
+		return SingletonHolder._instance;
+	}
+	
+	private TargetHandler()
+	{
+		_datatable = new FastMap<Enum<SkillTargetType>, ISkillTargetTypeHandler>();
+	}
+	
+	public void registerSkillTargetType(ISkillTargetTypeHandler handler)
+	{
+		Enum<SkillTargetType> ids = handler.getTargetType();
+		if (_datatable.containsKey(ids))
+			_log.log(Level.FINE, "Target Handler: " + ids.toString() + " is already registered into the map!");
+		_datatable.put(ids, handler);
+	}
+	
+	public ISkillTargetTypeHandler getSkillTarget(Enum<SkillTargetType> skillTargetType)
+	{
+		Enum<SkillTargetType> target = skillTargetType;
+		return _datatable.get(target);
+	}
+	
+	public void executeScript()
+	{
+		try
+		{
+			File file = new File(L2ScriptEngineManager.SCRIPT_FOLDER, "handlers/TargetMasterHandler.java");
+			L2ScriptEngineManager.getInstance().executeScript(file);
+		}
+		catch (Exception e)
+		{
+			_log.warning("Problems while running TargetMansterHandler");
+			e.printStackTrace();
+		}
+	}
+	
+	public int size()
+	{
+		return _datatable.size();
+	}
+	
+	@SuppressWarnings("synthetic-access")
+	private static class SingletonHolder
+	{
+		protected static final TargetHandler _instance = new TargetHandler();
+	}
+}

File diff suppressed because it is too large
+ 19 - 966
L2J_Server_BETA/java/com/l2jserver/gameserver/model/L2Skill.java


Some files were not shown because too many files changed in this diff