From e15d6750151f23ab179e4f8afd77c1e2e3b5b88e Mon Sep 17 00:00:00 2001 From: Christopher Date: Wed, 11 Mar 2020 11:29:19 -0400 Subject: [PATCH] Correctly track active campaigns from a client --- MekHQ/src/mekhq/campaign/CampaignController.java | 6 ++++++ MekHQ/src/mekhq/gui/CampaignGUI.java | 2 +- MekHQ/src/mekhq/online/MekHQClient.java | 2 ++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/MekHQ/src/mekhq/campaign/CampaignController.java b/MekHQ/src/mekhq/campaign/CampaignController.java index 96487eeaa96..d6745b73cd8 100644 --- a/MekHQ/src/mekhq/campaign/CampaignController.java +++ b/MekHQ/src/mekhq/campaign/CampaignController.java @@ -162,6 +162,12 @@ public void removeActiveCampaign(UUID id) { activeCampaigns.remove(id); } + public void setActiveCampaigns(Collection campaignIds) { + // TODO: evaluate if we can make this atomic somehow. + activeCampaigns.clear(); + campaignIds.forEach(id -> activeCampaigns.put(id, id)); + } + public boolean isCampaignActive(UUID id) { return Objects.equals(getHost(), id) || activeCampaigns.containsKey(id); } diff --git a/MekHQ/src/mekhq/gui/CampaignGUI.java b/MekHQ/src/mekhq/gui/CampaignGUI.java index 13c7fc9ddd9..fcfbf6a45f5 100644 --- a/MekHQ/src/mekhq/gui/CampaignGUI.java +++ b/MekHQ/src/mekhq/gui/CampaignGUI.java @@ -2583,7 +2583,7 @@ private void refreshOnlineStatus() { } else if (app.isRemote()) { lblOnline.setText( String.format("CONNECTED (%d playing)", - getCampaignController().getActiveCampaigns().size() + 1 /*Host*/)); + getCampaignController().getActiveCampaigns().size())); } else { lblOnline.setVisible(false); } diff --git a/MekHQ/src/mekhq/online/MekHQClient.java b/MekHQ/src/mekhq/online/MekHQClient.java index bc5b1aaeae6..0521e637bcd 100644 --- a/MekHQ/src/mekhq/online/MekHQClient.java +++ b/MekHQ/src/mekhq/online/MekHQClient.java @@ -234,6 +234,8 @@ protected void handlePong(UUID id, Pong pong) { dateFormatter.parseDateTime(campaign.getDate()), campaign.getLocation(), campaign.getIsGMMode()); } + controller.setActiveCampaigns(foundCampaigns); + MekHQ.triggerEvent(new CampaignListUpdatedEvent()); }