Rename and clean up MaplePartySearchCoordinator
This commit is contained in:
@@ -47,7 +47,7 @@ public class PartySearchCharacter {
|
|||||||
|
|
||||||
public Character callPlayer(int leaderid, int callerMapid) {
|
public Character callPlayer(int leaderid, int callerMapid) {
|
||||||
Character chr = player.get();
|
Character chr = player.get();
|
||||||
if (chr == null || !MaplePartySearchCoordinator.isInVicinity(callerMapid, chr.getMapId())) {
|
if (chr == null || !PartySearchCoordinator.isInVicinity(callerMapid, chr.getMapId())) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -42,28 +42,27 @@ import java.util.*;
|
|||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
*
|
|
||||||
* @author Ronan
|
* @author Ronan
|
||||||
*/
|
*/
|
||||||
public class MaplePartySearchCoordinator {
|
public class PartySearchCoordinator {
|
||||||
|
|
||||||
private Map<Job, PartySearchStorage> storage = new HashMap<>();
|
private final Map<Job, PartySearchStorage> storage = new HashMap<>();
|
||||||
private Map<Job, PartySearchEchelon> upcomers = new HashMap<>();
|
private final Map<Job, PartySearchEchelon> upcomers = new HashMap<>();
|
||||||
|
|
||||||
private List<Character> leaderQueue = new LinkedList<>();
|
private final List<Character> leaderQueue = new LinkedList<>();
|
||||||
private final MonitoredReentrantReadWriteLock leaderQueueLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_PARTY_SEARCH_QUEUE, true);
|
private final MonitoredReentrantReadWriteLock leaderQueueLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_PARTY_SEARCH_QUEUE, true);
|
||||||
private final MonitoredReadLock leaderQueueRLock = MonitoredReadLockFactory.createLock(leaderQueueLock);
|
private final MonitoredReadLock leaderQueueRLock = MonitoredReadLockFactory.createLock(leaderQueueLock);
|
||||||
private final MonitoredWriteLock leaderQueueWLock = MonitoredWriteLockFactory.createLock(leaderQueueLock);
|
private final MonitoredWriteLock leaderQueueWLock = MonitoredWriteLockFactory.createLock(leaderQueueLock);
|
||||||
|
|
||||||
private Map<Integer, Character> searchLeaders = new HashMap<>();
|
private final Map<Integer, Character> searchLeaders = new HashMap<>();
|
||||||
private Map<Integer, LeaderSearchMetadata> searchSettings = new HashMap<>();
|
private final Map<Integer, LeaderSearchMetadata> searchSettings = new HashMap<>();
|
||||||
|
|
||||||
private Map<Character, LeaderSearchMetadata> timeoutLeaders = new HashMap<>();
|
private final Map<Character, LeaderSearchMetadata> timeoutLeaders = new HashMap<>();
|
||||||
|
|
||||||
private int updateCount = 0;
|
private int updateCount = 0;
|
||||||
|
|
||||||
private static Map<Integer, Set<Integer>> mapNeighbors = fetchNeighbouringMaps();
|
private static final Map<Integer, Set<Integer>> mapNeighbors = fetchNeighbouringMaps();
|
||||||
private static Map<Integer, Job> jobTable = instantiateJobTable();
|
private static final Map<Integer, Job> jobTable = instantiateJobTable();
|
||||||
|
|
||||||
private static Map<Integer, Set<Integer>> fetchNeighbouringMaps() {
|
private static Map<Integer, Set<Integer>> fetchNeighbouringMaps() {
|
||||||
Map<Integer, Set<Integer>> mapLinks = new HashMap<>();
|
Map<Integer, Set<Integer>> mapLinks = new HashMap<>();
|
||||||
@@ -139,9 +138,9 @@ public class MaplePartySearchCoordinator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private class LeaderSearchMetadata {
|
private class LeaderSearchMetadata {
|
||||||
private int minLevel;
|
private final int minLevel;
|
||||||
private int maxLevel;
|
private final int maxLevel;
|
||||||
private List<Job> searchedJobs;
|
private final List<Job> searchedJobs;
|
||||||
|
|
||||||
private int reentryCount;
|
private int reentryCount;
|
||||||
|
|
||||||
@@ -176,7 +175,7 @@ public class MaplePartySearchCoordinator {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public MaplePartySearchCoordinator() {
|
public PartySearchCoordinator() {
|
||||||
for (Job job : jobTable.values()) {
|
for (Job job : jobTable.values()) {
|
||||||
storage.put(job, new PartySearchStorage());
|
storage.put(job, new PartySearchStorage());
|
||||||
upcomers.put(job, new PartySearchEchelon());
|
upcomers.put(job, new PartySearchEchelon());
|
||||||
@@ -236,7 +235,9 @@ public class MaplePartySearchCoordinator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void registerPartyLeader(Character leader, int minLevel, int maxLevel, int jobs) {
|
public void registerPartyLeader(Character leader, int minLevel, int maxLevel, int jobs) {
|
||||||
if (searchLeaders.containsKey(leader.getId())) return;
|
if (searchLeaders.containsKey(leader.getId())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
searchSettings.put(leader.getId(), new LeaderSearchMetadata(minLevel, maxLevel, jobs));
|
searchSettings.put(leader.getId(), new LeaderSearchMetadata(minLevel, maxLevel, jobs));
|
||||||
searchLeaders.put(leader.getId(), leader);
|
searchLeaders.put(leader.getId(), leader);
|
||||||
@@ -244,7 +245,9 @@ public class MaplePartySearchCoordinator {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void registerPartyLeader(Character leader, LeaderSearchMetadata settings) {
|
private void registerPartyLeader(Character leader, LeaderSearchMetadata settings) {
|
||||||
if (searchLeaders.containsKey(leader.getId())) return;
|
if (searchLeaders.containsKey(leader.getId())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
searchSettings.put(leader.getId(), settings);
|
searchSettings.put(leader.getId(), settings);
|
||||||
searchLeaders.put(leader.getId(), leader);
|
searchLeaders.put(leader.getId(), leader);
|
||||||
@@ -393,7 +396,9 @@ public class MaplePartySearchCoordinator {
|
|||||||
if (party != null && party.getMembers().size() < 6) {
|
if (party != null && party.getMembers().size() < 6) {
|
||||||
addQueueLeader(leader);
|
addQueueLeader(leader);
|
||||||
} else {
|
} else {
|
||||||
if (leader.isLoggedinWorld()) leader.dropMessage(5, "Your Party Search token session has finished as your party reached full capacity.");
|
if (leader.isLoggedinWorld()) {
|
||||||
|
leader.dropMessage(5, "Your Party Search token session has finished as your party reached full capacity.");
|
||||||
|
}
|
||||||
searchLeaders.remove(leader.getId());
|
searchLeaders.remove(leader.getId());
|
||||||
searchSettings.remove(leader.getId());
|
searchSettings.remove(leader.getId());
|
||||||
}
|
}
|
||||||
@@ -407,7 +412,9 @@ public class MaplePartySearchCoordinator {
|
|||||||
if (leader.isLoggedinWorld()) {
|
if (leader.isLoggedinWorld()) {
|
||||||
if (settings != null) {
|
if (settings != null) {
|
||||||
recycledLeaders.add(new Pair<>(leader, settings));
|
recycledLeaders.add(new Pair<>(leader, settings));
|
||||||
if (YamlConfig.config.server.USE_DEBUG && leader.isGM()) leader.dropMessage(5, "Your Party Search token session is now on waiting queue for up to 7 minutes, to get it working right away please stop your Party Search and retry again later.");
|
if (YamlConfig.config.server.USE_DEBUG && leader.isGM()) {
|
||||||
|
leader.dropMessage(5, "Your Party Search token session is now on waiting queue for up to 7 minutes, to get it working right away please stop your Party Search and retry again later.");
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
leader.dropMessage(5, "Your Party Search token session expired, please stop your Party Search and retry again later.");
|
leader.dropMessage(5, "Your Party Search token session expired, please stop your Party Search and retry again later.");
|
||||||
}
|
}
|
||||||
@@ -40,7 +40,7 @@ import net.server.audit.locks.factory.MonitoredWriteLockFactory;
|
|||||||
import net.server.channel.Channel;
|
import net.server.channel.Channel;
|
||||||
import net.server.channel.CharacterIdChannelPair;
|
import net.server.channel.CharacterIdChannelPair;
|
||||||
import net.server.coordinator.matchchecker.MatchCheckerCoordinator;
|
import net.server.coordinator.matchchecker.MatchCheckerCoordinator;
|
||||||
import net.server.coordinator.partysearch.MaplePartySearchCoordinator;
|
import net.server.coordinator.partysearch.PartySearchCoordinator;
|
||||||
import net.server.coordinator.world.MapleInviteCoordinator;
|
import net.server.coordinator.world.MapleInviteCoordinator;
|
||||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteResult;
|
import net.server.coordinator.world.MapleInviteCoordinator.InviteResult;
|
||||||
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
|
import net.server.coordinator.world.MapleInviteCoordinator.InviteType;
|
||||||
@@ -89,7 +89,7 @@ public class World {
|
|||||||
private PlayerStorage players = new PlayerStorage();
|
private PlayerStorage players = new PlayerStorage();
|
||||||
private ServicesManager services = new ServicesManager(WorldServices.SAVE_CHARACTER);
|
private ServicesManager services = new ServicesManager(WorldServices.SAVE_CHARACTER);
|
||||||
private MatchCheckerCoordinator matchChecker = new MatchCheckerCoordinator();
|
private MatchCheckerCoordinator matchChecker = new MatchCheckerCoordinator();
|
||||||
private MaplePartySearchCoordinator partySearch = new MaplePartySearchCoordinator();
|
private PartySearchCoordinator partySearch = new PartySearchCoordinator();
|
||||||
|
|
||||||
private final MonitoredReentrantReadWriteLock chnLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_CHANNELS, true);
|
private final MonitoredReentrantReadWriteLock chnLock = new MonitoredReentrantReadWriteLock(MonitoredLockType.WORLD_CHANNELS, true);
|
||||||
private MonitoredReadLock chnRLock = MonitoredReadLockFactory.createLock(chnLock);
|
private MonitoredReadLock chnRLock = MonitoredReadLockFactory.createLock(chnLock);
|
||||||
@@ -517,7 +517,7 @@ public class World {
|
|||||||
return matchChecker;
|
return matchChecker;
|
||||||
}
|
}
|
||||||
|
|
||||||
public MaplePartySearchCoordinator getPartySearchCoordinator() {
|
public PartySearchCoordinator getPartySearchCoordinator() {
|
||||||
return partySearch;
|
return partySearch;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user