diff --git a/src/services/ShutdownService.java b/src/services/ShutdownService.java index 6e9df09ba..85ec5c6bf 100644 --- a/src/services/ShutdownService.java +++ b/src/services/ShutdownService.java @@ -27,10 +27,6 @@ ***********************************************************************************/ package services; -import intents.chat.ChatBroadcastIntent; -import intents.chat.ChatBroadcastIntent.BroadcastType; -import intents.server.ServerStatusIntent; - import java.util.Locale; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -38,7 +34,9 @@ import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicInteger; import java.util.concurrent.atomic.AtomicLong; -import resources.control.Intent; +import intents.chat.ChatBroadcastIntent; +import intents.chat.ChatBroadcastIntent.BroadcastType; +import intents.server.ServerStatusIntent; import resources.control.ServerStatus; import resources.control.Service; import utilities.ThreadUtilities; @@ -60,7 +58,7 @@ public class ShutdownService extends Service { timeRemaining = new AtomicLong(); shutdownExecutor = null; - registerForIntent(ServerStatusIntent.TYPE); + registerForIntent(ServerStatusIntent.class, ssi -> handleServerStatusIntent(ssi)); } @Override @@ -69,10 +67,7 @@ public class ShutdownService extends Service { return super.terminate(); } - public void onIntentReceived(Intent i) { - if (!(i instanceof ServerStatusIntent)) - return; - ServerStatusIntent ssi = (ServerStatusIntent) i; + private void handleServerStatusIntent(ServerStatusIntent ssi){ if (ssi.getStatus() != ServerStatus.SHUTDOWN_REQUESTED) return; shutdown(ssi); diff --git a/src/services/combat/CombatManager.java b/src/services/combat/CombatManager.java index ed0ce34e3..80d349e6e 100644 --- a/src/services/combat/CombatManager.java +++ b/src/services/combat/CombatManager.java @@ -27,30 +27,30 @@ ***********************************************************************************/ package services.combat; -import intents.BuffIntent; -import intents.chat.ChatBroadcastIntent; import java.awt.Color; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.Map; +import java.util.Random; import java.util.Set; import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; -import network.packets.swg.zone.object_controller.ShowFlyText; -import network.packets.swg.zone.object_controller.ShowFlyText.Scale; -import network.packets.swg.zone.object_controller.combat.CombatAction; +import intents.BuffIntent; +import intents.chat.ChatBroadcastIntent; import intents.chat.ChatCommandIntent; import intents.combat.CreatureKilledIntent; import intents.combat.DeathblowIntent; import intents.object.DestroyObjectIntent; import intents.object.ObjectCreatedIntent; -import java.util.Iterator; -import java.util.Random; -import java.util.concurrent.Future; -import java.util.stream.Collectors; import network.packets.swg.zone.PlayClientEffectObjectMessage; +import network.packets.swg.zone.object_controller.ShowFlyText; +import network.packets.swg.zone.object_controller.ShowFlyText.Scale; +import network.packets.swg.zone.object_controller.combat.CombatAction; import network.packets.swg.zone.object_controller.combat.CombatSpam; import resources.Location; import resources.Posture; @@ -62,7 +62,6 @@ import resources.combat.TrailLocation; import resources.commands.CombatCommand; import resources.common.CRC; import resources.common.RGB; -import resources.control.Intent; import resources.control.Manager; import resources.encodables.ProsePackage; import resources.encodables.StringId; @@ -95,7 +94,8 @@ public class CombatManager extends Manager { // TODO remove calculations if the creature disappears public CombatManager() { - registerForIntent(DeathblowIntent.TYPE); + registerForIntent(DeathblowIntent.class, di -> handleDeathblowIntent(di)); + registerForIntent(ChatCommandIntent.class, cci -> handleChatCommandIntent(cci)); inCombat = new HashMap<>(); regeneratingHealthCreatures = new HashSet<>(); regeneratingActionCreatures = new HashSet<>(); @@ -135,14 +135,6 @@ public class CombatManager extends Manager { return super.terminate(); } - @Override - public void onIntentReceived(Intent i) { - switch(i.getType()) { - case ChatCommandIntent.TYPE: processChatCommand((ChatCommandIntent) i); break; - case DeathblowIntent.TYPE: procesDeathblow((DeathblowIntent) i); break; - } - } - private void periodicChecks() { Set removeSet = new HashSet<>(); synchronized (inCombat) { @@ -220,12 +212,12 @@ public class CombatManager extends Manager { } } - private void processChatCommand(ChatCommandIntent intent) { - if (!intent.getCommand().isCombatCommand() || !(intent.getCommand() instanceof CombatCommand)) + private void handleChatCommandIntent(ChatCommandIntent cci) { + if (!cci.getCommand().isCombatCommand() || !(cci.getCommand() instanceof CombatCommand)) return; - CombatCommand c = (CombatCommand) intent.getCommand(); - CreatureObject source = intent.getSource(); - SWGObject target = intent.getTarget(); + CombatCommand c = (CombatCommand) cci.getCommand(); + CreatureObject source = cci.getSource(); + SWGObject target = cci.getTarget(); // Regardless of HitType, the command might have action cost addActionCost(source, c); @@ -234,7 +226,7 @@ public class CombatManager extends Manager { switch (c.getHitType()) { case ATTACK: handleAttack(source, target, null, c); break; case BUFF: handleBuff(source, target, c); break; - case DELAY_ATTACK: handleDelayAttack(source, target, c, intent.getArguments()); break; + case DELAY_ATTACK: handleDelayAttack(source, target, c, cci.getArguments()); break; default: handleStatus(source, CombatStatus.UNKNOWN); break; } } @@ -544,9 +536,9 @@ public class CombatManager extends Manager { new CreatureKilledIntent(killer, corpse).broadcast(); } - private void procesDeathblow(DeathblowIntent i) { - CreatureObject killer = i.getKiller(); - CreatureObject corpse = i.getCorpse(); + private void handleDeathblowIntent(DeathblowIntent di) { + CreatureObject killer = di.getKiller(); + CreatureObject corpse = di.getCorpse(); // Only deathblowing players is allowed! if (!corpse.isPlayer()) { diff --git a/src/services/experience/ExperienceManager.java b/src/services/experience/ExperienceManager.java index 299c3f119..8632b8feb 100644 --- a/src/services/experience/ExperienceManager.java +++ b/src/services/experience/ExperienceManager.java @@ -27,18 +27,18 @@ ***********************************************************************************/ package services.experience; -import intents.experience.ExperienceIntent; -import intents.experience.LevelChangedIntent; import java.awt.Color; import java.util.HashMap; import java.util.Map; + +import intents.experience.ExperienceIntent; +import intents.experience.LevelChangedIntent; import network.packets.swg.zone.object_controller.ShowFlyText; import network.packets.swg.zone.object_controller.ShowFlyText.Scale; import resources.client_info.ClientFactory; import resources.client_info.visitors.DatatableData; import resources.common.RGB; import resources.config.ConfigFile; -import resources.control.Intent; import resources.control.Manager; import resources.encodables.OutOfBandPackage; import resources.encodables.ProsePackage; @@ -65,7 +65,7 @@ public final class ExperienceManager extends Manager { levelXpMap = new HashMap<>(); xpMultiplier = getConfig(ConfigFile.FEATURES).getDouble("XP-MULTIPLIER", 1); - registerForIntent(ExperienceIntent.TYPE); + registerForIntent(ExperienceIntent.class, ei -> handleExperienceIntent(ei)); addChildService(skillManager); addChildService(skillTemplateService); @@ -85,21 +85,11 @@ public final class ExperienceManager extends Manager { return super.initialize(); } - @Override - public void onIntentReceived(Intent i) { - switch(i.getType()) { - case ExperienceIntent.TYPE: - if (i instanceof ExperienceIntent) - handleExperienceGainedIntent((ExperienceIntent) i); - break; - } - } - - private void handleExperienceGainedIntent(ExperienceIntent i) { - CreatureObject creatureObject = i.getCreatureObject(); + private void handleExperienceIntent(ExperienceIntent ei) { + CreatureObject creatureObject = ei.getCreatureObject(); PlayerObject playerObject = creatureObject.getPlayerObject(); if (playerObject != null) { - int newXpTotal = awardExperience(creatureObject, playerObject, i.getXpType(), i.getExperienceGained()); + int newXpTotal = awardExperience(creatureObject, playerObject, ei.getXpType(), ei.getExperienceGained()); // At this point, we check if their level should be adjusted. short oldLevel = creatureObject.getLevel(); diff --git a/src/services/experience/SkillManager.java b/src/services/experience/SkillManager.java index d4ff7d668..91dd37646 100644 --- a/src/services/experience/SkillManager.java +++ b/src/services/experience/SkillManager.java @@ -27,20 +27,19 @@ ***********************************************************************************/ package services.experience; -import intents.SkillModIntent; -import intents.experience.GrantSkillIntent; -import intents.network.GalacticPacketIntent; - import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; + +import intents.SkillModIntent; +import intents.experience.GrantSkillIntent; +import intents.network.GalacticPacketIntent; import network.packets.Packet; import network.packets.swg.zone.object_controller.ChangeRoleIconChoice; import resources.client_info.ClientFactory; import resources.client_info.visitors.DatatableData; import resources.control.Assert; -import resources.control.Intent; import resources.control.Manager; import resources.objects.creature.CreatureObject; import resources.server_info.Log; @@ -61,22 +60,8 @@ public final class SkillManager extends Manager { addChildService(new ExpertiseService()); - registerForIntent(GrantSkillIntent.TYPE); - registerForIntent(GalacticPacketIntent.TYPE); - } - - @Override - public void onIntentReceived(Intent i) { - switch(i.getType()) { - case GrantSkillIntent.TYPE: - if (i instanceof GrantSkillIntent) - handleGrantSkillIntent((GrantSkillIntent) i); - break; - case GalacticPacketIntent.TYPE: - if (i instanceof GalacticPacketIntent) - handleGalacticPacket((GalacticPacketIntent) i); - break; - } + registerForIntent(GrantSkillIntent.class, gsi -> handleGrantSkillIntent(gsi)); + registerForIntent(GalacticPacketIntent.class, gpi -> handleGalacticPacketIntent(gpi)); } @Override @@ -136,17 +121,17 @@ public final class SkillManager extends Manager { return str.split(","); } - private void handleGrantSkillIntent(GrantSkillIntent intent) { - if (intent.getIntentType() != GrantSkillIntent.IntentType.GRANT) { + private void handleGrantSkillIntent(GrantSkillIntent gsi) { + if (gsi.getIntentType() != GrantSkillIntent.IntentType.GRANT) { return; } - String skillName = intent.getSkillName(); - CreatureObject target = intent.getTarget(); + String skillName = gsi.getSkillName(); + CreatureObject target = gsi.getTarget(); SkillData skillData = skillDataMap.get(skillName); String parentSkillName = skillData.getParentSkill(); - if (intent.isGrantRequiredSkills()) { + if (gsi.isGrantRequiredSkills()) { grantParentSkills(skillData, parentSkillName, target); grantRequiredSkills(skillData, target); } else if (!target.hasSkill(parentSkillName) || !hasRequiredSkills(skillData, target)) { @@ -157,7 +142,7 @@ public final class SkillManager extends Manager { grantSkill(skillData, skillName, target); } - private void handleGalacticPacket(GalacticPacketIntent gpi) { + private void handleGalacticPacketIntent(GalacticPacketIntent gpi) { Packet packet = gpi.getPacket(); if (packet instanceof ChangeRoleIconChoice) { ChangeRoleIconChoice iconChoice = (ChangeRoleIconChoice) packet; diff --git a/src/services/experience/SkillTemplateService.java b/src/services/experience/SkillTemplateService.java index 79afe36de..46f3f5205 100644 --- a/src/services/experience/SkillTemplateService.java +++ b/src/services/experience/SkillTemplateService.java @@ -27,17 +27,17 @@ ***********************************************************************************/ package services.experience; -import intents.GrantBadgeIntent; -import intents.experience.LevelChangedIntent; -import intents.experience.GrantSkillIntent; import java.awt.Color; +import java.util.ArrayList; +import java.util.Collection; import java.util.HashMap; import java.util.Map; +import intents.GrantBadgeIntent; +import intents.experience.GrantSkillIntent; +import intents.experience.LevelChangedIntent; import intents.object.CreateStaticItemIntent; import intents.object.ObjectCreatedIntent; -import java.util.ArrayList; -import java.util.Collection; import network.packets.swg.zone.PlayClientEffectObjectMessage; import network.packets.swg.zone.PlayMusicMessage; import network.packets.swg.zone.object_controller.ShowFlyText; @@ -46,7 +46,6 @@ import resources.Race; import resources.client_info.ClientFactory; import resources.client_info.visitors.DatatableData; import resources.common.RGB; -import resources.control.Intent; import resources.control.Service; import resources.encodables.StringId; import resources.objects.SWGObject; @@ -73,7 +72,7 @@ public final class SkillTemplateService extends Service { skillTemplates = new HashMap<>(); rewards = new HashMap<>(); rewardsTable = (DatatableData) ClientFactory.getInfoFromFile("datatables/roadmap/item_rewards.iff"); - registerForIntent(LevelChangedIntent.TYPE); + registerForIntent(LevelChangedIntent.class, lci -> handleLevelChangedIntent(lci)); } @Override @@ -92,17 +91,10 @@ public final class SkillTemplateService extends Service { return super.initialize(); } - @Override - public void onIntentReceived(Intent i) { - switch(i.getType()) { - case LevelChangedIntent.TYPE: handleLevelChangedIntent((LevelChangedIntent) i); break; - } - } - - private void handleLevelChangedIntent(LevelChangedIntent i) { - short oldLevel = i.getPreviousLevel(); - short newLevel = i.getNewLevel(); - CreatureObject creatureObject = i.getCreatureObject(); + private void handleLevelChangedIntent(LevelChangedIntent lci) { + short oldLevel = lci.getPreviousLevel(); + short newLevel = lci.getNewLevel(); + CreatureObject creatureObject = lci.getCreatureObject(); Player player = creatureObject.getOwner(); long objectId = creatureObject.getObjectId(); boolean skillUp = false; diff --git a/src/services/faction/FactionService.java b/src/services/faction/FactionService.java index 348be685b..6a801fe25 100644 --- a/src/services/faction/FactionService.java +++ b/src/services/faction/FactionService.java @@ -27,23 +27,22 @@ ***********************************************************************************/ package services.faction; +import java.util.HashMap; +import java.util.Map; import java.util.Set; import java.util.concurrent.Executors; +import java.util.concurrent.Future; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import intents.FactionIntent; +import intents.chat.ChatBroadcastIntent; import network.packets.swg.zone.UpdatePvpStatusMessage; import network.packets.swg.zone.chat.ChatSystemMessage; import network.packets.swg.zone.chat.ChatSystemMessage.SystemChatType; -import intents.FactionIntent; -import intents.chat.ChatBroadcastIntent; -import java.util.HashMap; -import java.util.Map; -import java.util.concurrent.Future; import resources.PvpFaction; import resources.PvpFlag; import resources.PvpStatus; -import resources.control.Intent; import resources.control.Service; import resources.objects.creature.CreatureObject; import resources.objects.tangible.TangibleObject; @@ -59,14 +58,7 @@ public final class FactionService extends Service { statusChangers = new HashMap<>(); executor = Executors.newSingleThreadScheduledExecutor(ThreadUtilities.newThreadFactory("faction-service")); - registerForIntent(FactionIntent.TYPE); - } - - @Override - public void onIntentReceived(Intent i) { - switch(i.getType()) { - case FactionIntent.TYPE: handleFactionIntent((FactionIntent) i); break; - } + registerForIntent(FactionIntent.class, fi -> handleFactionIntent(fi)); } @Override @@ -77,19 +69,19 @@ public final class FactionService extends Service { return super.terminate(); } - private void handleFactionIntent(FactionIntent i) { - switch (i.getUpdateType()) { + private void handleFactionIntent(FactionIntent fi) { + switch (fi.getUpdateType()) { case FACTIONUPDATE: - handleTypeChange(i); + handleTypeChange(fi); break; case SWITCHUPDATE: - handleSwitchChange(i); + handleSwitchChange(fi); break; case STATUSUPDATE: - handleStatusChange(i); + handleStatusChange(fi); break; case FLAGUPDATE: - handleFlagChange(i.getTarget()); + handleFlagChange(fi.getTarget()); break; } } diff --git a/src/services/galaxy/ConnectionService.java b/src/services/galaxy/ConnectionService.java index 414464941..b486c1dbc 100644 --- a/src/services/galaxy/ConnectionService.java +++ b/src/services/galaxy/ConnectionService.java @@ -27,15 +27,14 @@ ***********************************************************************************/ package services.galaxy; -import intents.PlayerEventIntent; -import intents.network.GalacticPacketIntent; - import java.util.Iterator; import java.util.Set; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import intents.PlayerEventIntent; +import intents.network.GalacticPacketIntent; import network.packets.swg.zone.HeartBeat; import resources.control.Assert; import resources.control.Intent; @@ -77,8 +76,8 @@ public class ConnectionService extends Service { } }; - registerForIntent(PlayerEventIntent.TYPE); - registerForIntent(GalacticPacketIntent.TYPE); + registerForIntent(PlayerEventIntent.class, pei -> handlePlayerEventIntent(pei)); + registerForIntent(GalacticPacketIntent.class, gpi -> handleGalacticPacketIntent(gpi)); } @Override @@ -93,15 +92,7 @@ public class ConnectionService extends Service { return super.terminate() && success; } - @Override - public void onIntentReceived(Intent i) { - if (i instanceof PlayerEventIntent) - onPlayerEventIntent((PlayerEventIntent) i); - else if (i instanceof GalacticPacketIntent) - onGalacticPacketIntent((GalacticPacketIntent) i); - } - - private void onPlayerEventIntent(PlayerEventIntent pei) { + private void handlePlayerEventIntent(PlayerEventIntent pei) { Player p = pei.getPlayer(); switch (pei.getEvent()) { case PE_FIRST_ZONE: @@ -115,7 +106,7 @@ public class ConnectionService extends Service { } } - private void onGalacticPacketIntent(GalacticPacketIntent gpi) { + private void handleGalacticPacketIntent(GalacticPacketIntent gpi) { Player p = gpi.getPlayer(); p.updateLastPacketTimestamp(); if (gpi.getPacket() instanceof HeartBeat) diff --git a/src/services/galaxy/EnvironmentService.java b/src/services/galaxy/EnvironmentService.java index 4328b8f2a..e248ec75d 100644 --- a/src/services/galaxy/EnvironmentService.java +++ b/src/services/galaxy/EnvironmentService.java @@ -34,15 +34,14 @@ import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; +import intents.NotifyPlayersPacketIntent; +import intents.PlayerEventIntent; import main.ProjectSWG; import network.packets.swg.SWGPacket; import network.packets.swg.zone.ServerTimeMessage; import network.packets.swg.zone.ServerWeatherMessage; -import intents.NotifyPlayersPacketIntent; -import intents.PlayerEventIntent; import resources.Terrain; import resources.WeatherType; -import resources.control.Intent; import resources.control.Service; import resources.player.Player; import resources.player.PlayerEvent; @@ -64,7 +63,7 @@ public final class EnvironmentService extends Service { weatherForTerrain = new HashMap<>(); weatherTypes = WeatherType.values(); random = new Random(); - registerForIntent(PlayerEventIntent.TYPE); + registerForIntent(PlayerEventIntent.class, pei -> handlePlayerEventIntent(pei)); } @Override @@ -96,17 +95,11 @@ public final class EnvironmentService extends Service { return super.stop(); } - @Override - public void onIntentReceived(Intent i) { - if(i.getType().equals(PlayerEventIntent.TYPE)) - if (i instanceof PlayerEventIntent) { - PlayerEventIntent pei = (PlayerEventIntent) i; - - if(pei.getEvent().equals(PlayerEvent.PE_ZONE_IN_CLIENT)) - handleZoneIn(pei); - } + private void handlePlayerEventIntent(PlayerEventIntent pei){ + if(pei.getEvent().equals(PlayerEvent.PE_ZONE_IN_CLIENT)) + handleZoneIn(pei); } - + private void handleZoneIn(PlayerEventIntent pei) { Player p = pei.getPlayer(); Terrain t = p.getCreatureObject().getTerrain(); diff --git a/src/services/galaxy/SkillModService.java b/src/services/galaxy/SkillModService.java index e7fece6f4..3d6d4029d 100644 --- a/src/services/galaxy/SkillModService.java +++ b/src/services/galaxy/SkillModService.java @@ -28,25 +28,13 @@ package services.galaxy; import intents.SkillModIntent; -import resources.control.Intent; import resources.control.Service; import resources.objects.creature.CreatureObject; public class SkillModService extends Service { public SkillModService() { - registerForIntent(SkillModIntent.TYPE); - } - - @Override - public void onIntentReceived(Intent i) { - switch (i.getType()) { - case SkillModIntent.TYPE: - if (i instanceof SkillModIntent) { - handleSkillModIntent((SkillModIntent) i); - } - break; - } + registerForIntent(SkillModIntent.class, smi -> handleSkillModIntent(smi)); } private void handleSkillModIntent(SkillModIntent smi) { @@ -58,5 +46,4 @@ public class SkillModService extends Service { creature.adjustSkillmod(skillModName, adjustBase, adjustModifier); } } - -} +} \ No newline at end of file diff --git a/src/services/galaxy/terminals/TerminalService.java b/src/services/galaxy/terminals/TerminalService.java index 591813422..61e566b97 100644 --- a/src/services/galaxy/terminals/TerminalService.java +++ b/src/services/galaxy/terminals/TerminalService.java @@ -27,11 +27,6 @@ ***********************************************************************************/ package services.galaxy.terminals; -import intents.radial.RadialRegisterIntent; -import intents.radial.RadialRequestIntent; -import intents.radial.RadialResponseIntent; -import intents.radial.RadialSelectionIntent; - import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; @@ -40,7 +35,10 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import resources.control.Intent; +import intents.radial.RadialRegisterIntent; +import intents.radial.RadialRequestIntent; +import intents.radial.RadialResponseIntent; +import intents.radial.RadialSelectionIntent; import resources.control.Service; import resources.radial.RadialOption; import resources.radial.Radials; @@ -67,8 +65,8 @@ public class TerminalService extends Service { getAllTemplatesStatement = iffDatabase.prepareStatement(GET_ALL_TEMPLATES_SQL); getScriptForIffStatement = iffDatabase.prepareStatement(GET_SCRIPT_FOR_IFF_SQL); - registerForIntent(RadialRequestIntent.TYPE); - registerForIntent(RadialSelectionIntent.TYPE); + registerForIntent(RadialRequestIntent.class, rri -> handleRadialRequestIntent(rri)); + registerForIntent(RadialSelectionIntent.class, rsi -> handleRadialSelectionIntent(rsi)); } @Override @@ -99,30 +97,20 @@ public class TerminalService extends Service { return super.stop(); } - @Override - public void onIntentReceived(Intent i) { - switch (i.getType()) { - case RadialRequestIntent.TYPE: - if (i instanceof RadialRequestIntent) { - RadialRequestIntent rri = (RadialRequestIntent) i; - String script = lookupScript(rri.getTarget().getTemplate()); - if (script == null) - return; - List options = new ArrayList(rri.getRequest().getOptions()); - options.addAll(Radials.getRadialOptions(script, rri.getPlayer(), rri.getTarget())); - new RadialResponseIntent(rri.getPlayer(), rri.getTarget(), options, rri.getRequest().getCounter()).broadcast(); - } - break; - case RadialSelectionIntent.TYPE: - if (i instanceof RadialSelectionIntent) { - RadialSelectionIntent rsi = (RadialSelectionIntent) i; - String script = lookupScript(rsi.getTarget().getTemplate()); - if (script == null) - return; - Radials.handleSelection(script, rsi.getPlayer(), rsi.getTarget(), rsi.getSelection()); - } - break; - } + private void handleRadialRequestIntent(RadialRequestIntent rri){ + String script = lookupScript(rri.getTarget().getTemplate()); + if (script == null) + return; + List options = new ArrayList(rri.getRequest().getOptions()); + options.addAll(Radials.getRadialOptions(script, rri.getPlayer(), rri.getTarget())); + new RadialResponseIntent(rri.getPlayer(), rri.getTarget(), options, rri.getRequest().getCounter()).broadcast(); + } + + private void handleRadialSelectionIntent(RadialSelectionIntent rsi){ + String script = lookupScript(rsi.getTarget().getTemplate()); + if (script == null) + return; + Radials.handleSelection(script, rsi.getPlayer(), rsi.getTarget(), rsi.getSelection()); } private String lookupScript(String iff) { diff --git a/src/services/group/GroupService.java b/src/services/group/GroupService.java index ca4430dad..9bee32124 100644 --- a/src/services/group/GroupService.java +++ b/src/services/group/GroupService.java @@ -26,6 +26,9 @@ ******************************************************************************/ package services.group; +import java.util.Map; +import java.util.Set; + import intents.GroupEventIntent; import intents.PlayerEventIntent; import intents.chat.ChatBroadcastIntent; @@ -34,7 +37,7 @@ import intents.chat.ChatRoomUpdateIntent.UpdateType; import intents.object.DestroyObjectIntent; import intents.object.ObjectCreatedIntent; import resources.chat.ChatAvatar; -import resources.control.Intent; +import resources.control.Assert; import resources.control.Service; import resources.encodables.ProsePackage; import resources.objects.creature.CreatureObject; @@ -45,74 +48,55 @@ import resources.server_info.SynchronizedMap; import services.objects.ObjectCreator; import utilities.IntentFactory; -import java.util.Map; -import java.util.Set; - -import resources.control.Assert; - public class GroupService extends Service { private final Map groups; public GroupService() { groups = new SynchronizedMap<>(); - registerForIntent(GroupEventIntent.TYPE); - registerForIntent(PlayerEventIntent.TYPE); + registerForIntent(GroupEventIntent.class, gei -> handleGroupEventIntent(gei)); + registerForIntent(PlayerEventIntent.class, pei -> handlePlayerEventIntent(pei)); } - @Override - public void onIntentReceived(Intent i) { - switch (i.getType()) { - case GroupEventIntent.TYPE: - if (i instanceof GroupEventIntent) - handleGroupEventIntent((GroupEventIntent) i); - break; - case PlayerEventIntent.TYPE: - if (i instanceof PlayerEventIntent) - handlePlayerEventIntent((PlayerEventIntent) i); - break; - } - } - - private void handleGroupEventIntent(GroupEventIntent intent) { - switch (intent.getEventType()) { + private void handleGroupEventIntent(GroupEventIntent gei) { + switch (gei.getEventType()) { case GROUP_INVITE: - handleGroupInvite(intent.getPlayer(), intent.getTarget()); + handleGroupInvite(gei.getPlayer(), gei.getTarget()); break; case GROUP_UNINVITE: - handleGroupUninvite(intent.getPlayer(), intent.getTarget()); + handleGroupUninvite(gei.getPlayer(), gei.getTarget()); break; case GROUP_JOIN: - handleGroupJoin(intent.getPlayer()); + handleGroupJoin(gei.getPlayer()); break; case GROUP_DECLINE: - handleGroupDecline(intent.getPlayer()); + handleGroupDecline(gei.getPlayer()); break; case GROUP_DISBAND: - handleGroupDisband(intent.getPlayer()); + handleGroupDisband(gei.getPlayer()); break; case GROUP_LEAVE: - handleGroupLeave(intent.getPlayer()); + handleGroupLeave(gei.getPlayer()); break; case GROUP_MAKE_LEADER: - handleMakeLeader(intent.getPlayer(), intent.getTarget()); + handleMakeLeader(gei.getPlayer(), gei.getTarget()); break; case GROUP_KICK: - handleKick(intent.getPlayer(), intent.getTarget()); + handleKick(gei.getPlayer(), gei.getTarget()); break; case GROUP_MAKE_MASTER_LOOTER: - handleMakeMasterLooter(intent.getPlayer(), intent.getTarget()); + handleMakeMasterLooter(gei.getPlayer(), gei.getTarget()); break; } } - private void handlePlayerEventIntent(PlayerEventIntent intent) { - switch (intent.getEvent()) { + private void handlePlayerEventIntent(PlayerEventIntent pei) { + switch (pei.getEvent()) { case PE_ZONE_IN_SERVER: - handleMemberRezoned(intent.getPlayer()); + handleMemberRezoned(pei.getPlayer()); break; case PE_DISAPPEAR: - handleMemberDisappeared(intent.getPlayer()); + handleMemberDisappeared(pei.getPlayer()); break; default: break;