Team Capes: Added minimum cape count

Added minimum cape count to team cape plugin to reduce clutter/spam. Default is 1, so current behaviour is unchanged. First commit!
This commit is contained in:
Unknown
2018-03-04 15:35:10 -05:00
committed by Adam
parent b2cbc59edb
commit 5ee4c85c61
3 changed files with 79 additions and 13 deletions

View File

@@ -0,0 +1,48 @@
/*
* Copyright (c) 2018, Mathieu Bernier <https://github.com/Matsyir>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice, this
* list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package net.runelite.client.plugins.teamcapes;
import net.runelite.client.config.Config;
import net.runelite.client.config.ConfigGroup;
import net.runelite.client.config.ConfigItem;
@ConfigGroup(
keyName = "teamCapes",
name = "Team Capes",
description = "Configuration for the team cape plugin"
)
public interface TeamCapesConfig extends Config
{
@ConfigItem(
keyName = "minimumCapeCount",
name = "Minimum Cape Count",
description = "Configures the minimum number of team capes which must be present before being displayed.",
position = 0
)
default int getMinimumCapeCount()
{
return 1;
}
}

View File

@@ -24,29 +24,30 @@
*/
package net.runelite.client.plugins.teamcapes;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
import net.runelite.client.ui.overlay.components.PanelComponent;
import javax.inject.Inject;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.Point;
import java.util.Map;
import javax.inject.Inject;
import net.runelite.client.ui.overlay.Overlay;
import net.runelite.client.ui.overlay.OverlayPosition;
import net.runelite.client.ui.overlay.OverlayPriority;
import net.runelite.client.ui.overlay.components.PanelComponent;
public class TeamCapesOverlay extends Overlay
{
private final TeamCapesPlugin plugin;
private final TeamCapesConfig config;
private final PanelComponent panelComponent = new PanelComponent();
@Inject
TeamCapesOverlay(TeamCapesPlugin plugin)
TeamCapesOverlay(TeamCapesPlugin plugin, TeamCapesConfig config)
{
setPosition(OverlayPosition.TOP_LEFT);
setPriority(OverlayPriority.LOW);
this.plugin = plugin;
this.config = config;
}
@Override
@@ -60,12 +61,16 @@ public class TeamCapesOverlay extends Overlay
panelComponent.getLines().clear();
for (Map.Entry<Integer, Integer> team : teams.entrySet())
{
panelComponent.getLines().add(new PanelComponent.Line(
"Team-" + Integer.toString(team.getKey()),
Color.WHITE,
Integer.toString(team.getValue()),
Color.WHITE
));
// Only display team capes that have a count greater than the configured minimum.
if (team.getValue() >= config.getMinimumCapeCount())
{
panelComponent.getLines().add(new PanelComponent.Line(
"Team-" + Integer.toString(team.getKey()),
Color.WHITE,
Integer.toString(team.getValue()),
Color.WHITE
));
}
}
return panelComponent.render(graphics, parent);
}

View File

@@ -32,9 +32,11 @@ import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import javax.inject.Inject;
import com.google.inject.Provides;
import net.runelite.api.Client;
import net.runelite.api.GameState;
import net.runelite.api.Player;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule;
@@ -49,11 +51,21 @@ public class TeamCapesPlugin extends Plugin
@Inject
private Client client;
@Inject
private TeamCapesConfig config;
@Inject
private TeamCapesOverlay teamCapesOverlay;
// Hashmap of team capes: Key is the teamCape #, Value is the count of teamcapes in the area.
private Map<Integer, Integer> teams = new HashMap<>();
@Provides
TeamCapesConfig provideConfig(ConfigManager configManager)
{
return configManager.getConfig(TeamCapesConfig.class);
}
@Override
public Overlay getOverlay()
{
@@ -93,6 +105,7 @@ public class TeamCapesPlugin extends Plugin
}
}
}
// Sort teams by value in descending order and then by key in ascending order, limited to 5 entries
teams = teams.entrySet().stream()
.sorted(