Add Discord button through DiscordPlugin

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2018-03-07 18:59:10 +01:00
parent 059f92ad6c
commit f1d5c4ef72
3 changed files with 27 additions and 0 deletions

View File

@@ -27,19 +27,25 @@ package net.runelite.client.plugins.discord;
import com.google.common.eventbus.Subscribe; import com.google.common.eventbus.Subscribe;
import com.google.inject.Inject; import com.google.inject.Inject;
import com.google.inject.Provides; import com.google.inject.Provides;
import java.awt.image.BufferedImage;
import java.time.temporal.ChronoUnit; import java.time.temporal.ChronoUnit;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import javax.imageio.ImageIO;
import net.runelite.api.Client; import net.runelite.api.Client;
import net.runelite.api.GameState; import net.runelite.api.GameState;
import net.runelite.api.Skill; import net.runelite.api.Skill;
import net.runelite.api.events.ExperienceChanged; import net.runelite.api.events.ExperienceChanged;
import net.runelite.api.events.GameStateChanged; import net.runelite.api.events.GameStateChanged;
import net.runelite.client.RuneLiteProperties;
import net.runelite.client.config.ConfigManager; import net.runelite.client.config.ConfigManager;
import net.runelite.client.discord.DiscordService; import net.runelite.client.discord.DiscordService;
import net.runelite.client.plugins.Plugin; import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor; import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.client.task.Schedule; import net.runelite.client.task.Schedule;
import net.runelite.client.ui.NavigationButton;
import net.runelite.client.ui.TitleToolbar;
import net.runelite.client.util.LinkBrowser;
@PluginDescriptor( @PluginDescriptor(
name = "Discord" name = "Discord"
@@ -55,9 +61,16 @@ public class DiscordPlugin extends Plugin
@Inject @Inject
private DiscordService discordService; private DiscordService discordService;
@Inject
private TitleToolbar titleToolbar;
@Inject
private RuneLiteProperties properties;
private final DiscordState discordState = new DiscordState(); private final DiscordState discordState = new DiscordState();
private Map<Skill, Integer> skillExp = new HashMap<>(); private Map<Skill, Integer> skillExp = new HashMap<>();
private boolean loggedIn = false; private boolean loggedIn = false;
private NavigationButton discordButton;
@Provides @Provides
private DiscordConfig provideConfig(ConfigManager configManager) private DiscordConfig provideConfig(ConfigManager configManager)
@@ -68,12 +81,26 @@ public class DiscordPlugin extends Plugin
@Override @Override
protected void startUp() throws Exception protected void startUp() throws Exception
{ {
BufferedImage icon;
synchronized (ImageIO.class)
{
icon = ImageIO.read(getClass().getResourceAsStream("discord.png"));
}
discordButton = NavigationButton.builder()
.tooltip("Join Discord")
.icon(icon)
.onClick(() -> LinkBrowser.browse(properties.getDiscordInvite()))
.build();
titleToolbar.addNavigation(discordButton);
updateGameStatus(client.getGameState(), true); updateGameStatus(client.getGameState(), true);
} }
@Override @Override
protected void shutDown() throws Exception protected void shutDown() throws Exception
{ {
titleToolbar.removeNavigation(discordButton);
discordService.clearPresence(); discordService.clearPresence();
discordState.reset(); discordState.reset();
} }

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB