BUGFIX: FOW Expose PC Area

Developer discussion regarding MapTool 1.4

Moderators: dorpond, trevor, Azhrei

Forum rules
Posting now open to all registered forum users.
Post Reply
User avatar
JamzTheMan
Great Wyrm
Posts: 1872
Joined: Mon May 10, 2010 12:59 pm
Location: Chicagoland
Contact:

BUGFIX: FOW Expose PC Area

Post by JamzTheMan »

When you use the macro or menu to set FOW "Only Currently Visible" it calls:
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);
	}
This function only exposes FOW for Tokens that are PlayerTokens, "Has Sight", and IsOwner(player) or isGM but only after it calls
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));
	}
which clears FOW for ALL tokens.

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));
	}
-Jamz
____________________
Custom MapTool 1.4.x.x Fork: maptool.nerps.net
Custom TokenTool 2.0 Fork: tokentool.nerps.net
More information here: MapTool Nerps! Fork

User avatar
Jagged
Great Wyrm
Posts: 1306
Joined: Mon Sep 15, 2008 9:27 am
Location: Bristol, UK

Re: BUGFIX: FOW Expose PC Area

Post by Jagged »

Would it be possible to have an overloaded version of exposePCArea for a single token. Just for ease of use ;)

User avatar
JamzTheMan
Great Wyrm
Posts: 1872
Joined: Mon May 10, 2010 12:59 pm
Location: Chicagoland
Contact:

Re: BUGFIX: FOW Expose PC Area

Post by JamzTheMan »

Jagged wrote:Would it be possible to have an overloaded version of exposePCArea for a single token. Just for ease of use ;)
I suppose, sure. But there isn't a use case for it yet? Do you have something in mind where it is needed?
-Jamz
____________________
Custom MapTool 1.4.x.x Fork: maptool.nerps.net
Custom TokenTool 2.0 Fork: tokentool.nerps.net
More information here: MapTool Nerps! Fork

User avatar
RPTroll
TheBard
Posts: 3159
Joined: Tue Mar 21, 2006 7:26 pm
Location: Austin, Tx
Contact:

Re: BUGFIX: FOW Expose PC Area

Post by RPTroll »

Update list.
ImageImage ImageImageImageImage
Support RPTools by shopping
Image
Image

User avatar
JamzTheMan
Great Wyrm
Posts: 1872
Joined: Mon May 10, 2010 12:59 pm
Location: Chicagoland
Contact:

Re: BUGFIX: FOW Expose PC Area

Post by JamzTheMan »

OK, so if no one has an objection to how this function will change, I'll submit it for the next build.

This will affect the right-click menu as well as the macro function exposePCOnlyArea.

Edit: Submitted
-Jamz
____________________
Custom MapTool 1.4.x.x Fork: maptool.nerps.net
Custom TokenTool 2.0 Fork: tokentool.nerps.net
More information here: MapTool Nerps! Fork

Post Reply

Return to “MapTool 1.4”