exposePCArea(ZoneRenderer renderer)
Code: Select all
public static void exposePCArea(ZoneRenderer renderer) {
Set<GUID> tokenSet = new HashSet<GUID>();
List<Token> tokList = renderer.getZone().getPlayerTokens();
String playerName = MapTool.getPlayer().getName();
boolean isGM = MapTool.getPlayer().getRole() == Role.GM;
for (Token token : tokList) {
if (!token.getHasSight()) {
continue;
}
boolean owner = token.isOwner(playerName) || isGM;
if ((!MapTool.isPersonalServer() || MapTool.getServerPolicy()
.isUseIndividualViews()) && !owner) {
continue;
}
tokenSet.add(token.getId());
}
renderer.getZone().clearExposedArea();
exposeVisibleArea(renderer, tokenSet, true);
}
clearExposedArea()
Code: Select all
public void clearExposedArea() {
exposedArea = new Area();
// There used to be a foreach loop here that iterated over getTokens() and called .clear() -- why?!
exposedAreaMeta.clear();
fireModelChangeEvent(new ModelChangeEvent(this, Event.FOG_CHANGED));
}
I'm not sure if it was accidental when cleaning the iteration/foreach loop up or not but I propose that it calls a new function that only clears FOW for the same list that it is resetting FOW for.
I'm fixing it in my build now so you can put my name on it but thought I'd bring it up in case there was some "History" on this or someone can see an issue?
Edit Proposed Fix:
exposePCArea(ZoneRenderer renderer)
Code: Select all
public static void exposePCArea(ZoneRenderer renderer) {
Set<GUID> tokenSet = new HashSet<GUID>();
List<Token> tokList = renderer.getZone().getPlayerTokens();
String playerName = MapTool.getPlayer().getName();
boolean isGM = MapTool.getPlayer().getRole() == Role.GM;
for (Token token : tokList) {
if (!token.getHasSight()) {
continue;
}
boolean owner = token.isOwner(playerName) || isGM;
if ((!MapTool.isPersonalServer() || MapTool.getServerPolicy()
.isUseIndividualViews()) && !owner) {
continue;
}
tokenSet.add(token.getId());
}
renderer.getZone().clearExposedArea(tokenSet);
exposeVisibleArea(renderer, tokenSet, true);
}
public void clearExposedArea(Set<GUID> tokenSet)
Code: Select all
public void clearExposedArea(Set<GUID> tokenSet) {
//Jamz: Clear FoW for set tokens only, for use by ExposeVisibleAreaOnlyAction Menu action and exposePCOnlyArea() macro
for (GUID tea : tokenSet) {
ExposedAreaMetaData meta = exposedAreaMeta.get(tea);
if (meta != null)
meta.clearExposedAreaHistory();
}
fireModelChangeEvent(new ModelChangeEvent(this, Event.FOG_CHANGED));
}