Add enterReplacesExits setting for greeting/farewell

This commit is contained in:
Mike Primm 2020-05-30 20:29:16 -05:00
parent b3dacd6b2c
commit 295d799b50
10 changed files with 43 additions and 7 deletions

View File

@ -83,17 +83,23 @@ public class MapManager {
private static final int DEFAULT_TITLE_STAY = 70; // 70 ticks = 3 1/2 second private static final int DEFAULT_TITLE_STAY = 70; // 70 ticks = 3 1/2 second
private static final int DEFAULT_TITLE_FADEOUT = 20; // 20 ticks = 1 second private static final int DEFAULT_TITLE_FADEOUT = 20; // 20 ticks = 1 second
private static final boolean DEFAULT_ENTEREXIT_USETITLE = true; private static final boolean DEFAULT_ENTEREXIT_USETITLE = true;
private static final boolean DEFAULT_ENTEREPLACESEXITS = false;
private int enterexitperiod = DEFAULT_ENTEREXIT_PERIOD; // Enter/exit processing period private int enterexitperiod = DEFAULT_ENTEREXIT_PERIOD; // Enter/exit processing period
private int titleFadeIn = DEFAULT_TITLE_FADEIN; private int titleFadeIn = DEFAULT_TITLE_FADEIN;
private int titleStay = DEFAULT_TITLE_STAY; private int titleStay = DEFAULT_TITLE_STAY;
private int titleFadeOut = DEFAULT_TITLE_FADEOUT; private int titleFadeOut = DEFAULT_TITLE_FADEOUT;
private boolean enterexitUseTitle = DEFAULT_ENTEREXIT_USETITLE; private boolean enterexitUseTitle = DEFAULT_ENTEREXIT_USETITLE;
private boolean enterReplacesExits = DEFAULT_ENTEREPLACESEXITS;
private HashMap<UUID, HashSet<EnterExitMarker>> entersetstate = new HashMap<UUID, HashSet<EnterExitMarker>>(); private HashMap<UUID, HashSet<EnterExitMarker>> entersetstate = new HashMap<UUID, HashSet<EnterExitMarker>>();
private static class TextQueueRec {
EnterExitText txt;
boolean isEnter;
}
private static class SendQueueRec { private static class SendQueueRec {
DynmapPlayer player; DynmapPlayer player;
ArrayList<EnterExitText> queue = new ArrayList<EnterExitText>(); ArrayList<TextQueueRec> queue = new ArrayList<TextQueueRec>();
int tickdelay; int tickdelay;
}; };
private HashMap<UUID, SendQueueRec> entersetsendqueue = new HashMap<UUID, SendQueueRec>(); private HashMap<UUID, SendQueueRec> entersetsendqueue = new HashMap<UUID, SendQueueRec>();
@ -970,7 +976,7 @@ public class MapManager {
}, 0); }, 0);
} }
private void enqueueMessage(UUID uuid, DynmapPlayer player, EnterExitText txt) { private void enqueueMessage(UUID uuid, DynmapPlayer player, EnterExitText txt, boolean isEnter) {
SendQueueRec rec = entersetsendqueue.get(uuid); SendQueueRec rec = entersetsendqueue.get(uuid);
if (rec == null) { if (rec == null) {
rec = new SendQueueRec(); rec = new SendQueueRec();
@ -978,7 +984,18 @@ public class MapManager {
rec.tickdelay = 0; rec.tickdelay = 0;
entersetsendqueue.put(uuid, rec); entersetsendqueue.put(uuid, rec);
} }
rec.queue.add(txt); TextQueueRec txtrec = new TextQueueRec();
txtrec.isEnter = isEnter;
txtrec.txt = txt;
rec.queue.add(txtrec);
// If enter replaces exits, and we just added enter, purge exits
if (enterReplacesExits && isEnter) {
ArrayList<TextQueueRec> newlst = new ArrayList<TextQueueRec>();
for (TextQueueRec r : rec.queue) {
if (r.isEnter) newlst.add(r); // Keep the enter records
}
rec.queue = newlst;
}
} }
private class DoUserMoveProcessing implements Runnable { private class DoUserMoveProcessing implements Runnable {
@ -999,7 +1016,7 @@ public class MapManager {
for (EnterExitMarker m : oldset) { for (EnterExitMarker m : oldset) {
EnterExitText txt = m.getFarewellText(); EnterExitText txt = m.getFarewellText();
if ((txt != null) && (newset.contains(m) == false)) { if ((txt != null) && (newset.contains(m) == false)) {
enqueueMessage(puuid, player, txt); enqueueMessage(puuid, player, txt, false);
} }
} }
} }
@ -1007,7 +1024,7 @@ public class MapManager {
for (EnterExitMarker m : newset) { for (EnterExitMarker m : newset) {
EnterExitText txt = m.getGreetingText(); EnterExitText txt = m.getGreetingText();
if ((txt != null) && ((oldset == null) || (oldset.contains(m) == false))) { if ((txt != null) && ((oldset == null) || (oldset.contains(m) == false))) {
enqueueMessage(puuid, player, txt); enqueueMessage(puuid, player, txt, true);
} }
} }
newstate.put(puuid, newset); newstate.put(puuid, newset);
@ -1026,8 +1043,8 @@ public class MapManager {
rec.tickdelay = 0; rec.tickdelay = 0;
// If something to send, send it // If something to send, send it
if (rec.queue.size() > 0) { if (rec.queue.size() > 0) {
EnterExitText txt = rec.queue.remove(0); TextQueueRec txt = rec.queue.remove(0);
sendPlayerEnterExit(rec.player, txt); // And send it sendPlayerEnterExit(rec.player, txt.txt); // And send it
rec.tickdelay = 50 * (titleFadeIn + 10); // Delay by fade in time plus 1/2 second rec.tickdelay = 50 * (titleFadeIn + 10); // Delay by fade in time plus 1/2 second
} }
else { // Else, if we are empty and exhausted delay, remove it else { // Else, if we are empty and exhausted delay, remove it
@ -1127,6 +1144,7 @@ public class MapManager {
titleStay = configuration.getInteger("titleStay", DEFAULT_TITLE_STAY); titleStay = configuration.getInteger("titleStay", DEFAULT_TITLE_STAY);
titleFadeOut = configuration.getInteger("titleFadeOut", DEFAULT_TITLE_FADEOUT); titleFadeOut = configuration.getInteger("titleFadeOut", DEFAULT_TITLE_FADEOUT);
enterexitUseTitle = configuration.getBoolean("enterexitUseTitle", DEFAULT_ENTEREXIT_USETITLE); enterexitUseTitle = configuration.getBoolean("enterexitUseTitle", DEFAULT_ENTEREXIT_USETITLE);
enterReplacesExits = configuration.getBoolean("enterReplacesExits", DEFAULT_ENTEREPLACESEXITS);
// Load the save pending job period // Load the save pending job period
savependingperiod = configuration.getInteger("save-pending-period", 900); savependingperiod = configuration.getInteger("save-pending-period", 900);
if ((savependingperiod > 0) && (savependingperiod < 60)) savependingperiod = 60; if ((savependingperiod > 0) && (savependingperiod < 60)) savependingperiod = 60;

View File

@ -444,6 +444,8 @@ soft-ref-cache: true
#titleFadeOut: 20 #titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true #enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log # Set to false for a much quieter startup log

View File

@ -444,6 +444,8 @@ soft-ref-cache: true
#titleFadeOut: 20 #titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true #enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log # Set to false for a much quieter startup log

View File

@ -444,6 +444,8 @@ soft-ref-cache: true
#titleFadeOut: 20 #titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true #enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log # Set to false for a much quieter startup log

View File

@ -444,6 +444,8 @@ soft-ref-cache: true
#titleFadeOut: 20 #titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true #enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log # Set to false for a much quieter startup log

View File

@ -444,6 +444,8 @@ soft-ref-cache: true
#titleFadeOut: 20 #titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true #enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log # Set to false for a much quieter startup log

View File

@ -444,6 +444,8 @@ soft-ref-cache: true
#titleFadeOut: 20 #titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true #enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log # Set to false for a much quieter startup log

View File

@ -444,6 +444,8 @@ soft-ref-cache: true
#titleFadeOut: 20 #titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true #enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log # Set to false for a much quieter startup log

View File

@ -444,6 +444,8 @@ soft-ref-cache: true
#titleFadeOut: 20 #titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true #enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log # Set to false for a much quieter startup log

View File

@ -471,6 +471,8 @@ soft-ref-cache: true
#titleFadeOut: 20 #titleFadeOut: 20
# Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead # Enter/exit messages use on screen titles (true - default), if false chat messages are sent instead
#enterexitUseTitle: true #enterexitUseTitle: true
# Set true if new enter messages should supercede pending exit messages (vs being queued in order), default false
#enterReplacesExits: true
# Set to true to enable verbose startup messages - can help with debugging map configuration problems # Set to true to enable verbose startup messages - can help with debugging map configuration problems
# Set to false for a much quieter startup log # Set to false for a much quieter startup log