Add Diary Progress Indicator plugin (#429)
This commit is contained in:
@@ -81,6 +81,64 @@ public enum Varbits
|
||||
PRAYER_PIETY(4129, 83, 26, 26),
|
||||
PRAYER_PRESERVE(5466, 83, 28, 28),
|
||||
|
||||
/**
|
||||
* Diary Entries
|
||||
*/
|
||||
DIARY_ARDOUGNE_EASY(4458, 1188, 10, 10),
|
||||
DIARY_ARDOUGNE_MEDIUM(4459, 1188, 11, 11),
|
||||
DIARY_ARDOUGNE_HARD(4460, 1188, 12, 12),
|
||||
DIARY_ARDOUGNE_ELITE(4461, 1188, 13, 13),
|
||||
|
||||
DIARY_DESERT_EASY(4483, 1189, 2, 2),
|
||||
DIARY_DESERT_MEDIUM(4484, 1189, 3, 3),
|
||||
DIARY_DESERT_HARD(4485, 1189, 4, 4),
|
||||
DIARY_DESERT_ELITE(4486, 1189, 5, 5),
|
||||
|
||||
DIARY_FALADOR_EASY(4462, 1188, 14, 14),
|
||||
DIARY_FALADOR_MEDIUM(4463, 1188, 15, 15),
|
||||
DIARY_FALADOR_HARD(4464, 1188, 16, 16),
|
||||
DIARY_FALADOR_ELITE(4465, 1188, 17, 17),
|
||||
|
||||
DIARY_FREMENNIK_EASY(4491, 1189, 10, 10),
|
||||
DIARY_FREMENNIK_MEDIUM(4492, 1189, 11, 11),
|
||||
DIARY_FREMENNIK_HARD(4493, 1189, 12, 12),
|
||||
DIARY_FREMENNIK_ELITE(4494, 1189, 13, 13),
|
||||
|
||||
DIARY_KANDARIN_EASY(4475, 1188, 26, 26),
|
||||
DIARY_KANDARIN_MEDIUM(4476, 1188, 27, 27),
|
||||
DIARY_KANDARIN_HARD(4477, 1188, 28, 28),
|
||||
DIARY_KANDARIN_ELITE(4478, 1188, 29, 29),
|
||||
|
||||
DIARY_KARAMJA_EASY(3578, 1000, 30, 31),
|
||||
DIARY_KARAMJA_MEDIUM(3578, 1000, 30, 31),
|
||||
DIARY_KARAMJA_HARD(3611, 1002, 29, 30),
|
||||
DIARY_KARAMJA_ELITE(4566, 1200, 7, 7),
|
||||
|
||||
DIARY_LUMBRIDGE_EASY(4495, 1189, 14, 14),
|
||||
DIARY_LUMBRIDGE_MEDIUM(4496, 1189, 15, 15),
|
||||
DIARY_LUMBRIDGE_HARD(4497, 1189, 16, 16),
|
||||
DIARY_LUMBRIDGE_ELITE(4498, 1189, 17, 17),
|
||||
|
||||
DIARY_MORYTANIA_EASY(4487, 1189, 6, 6),
|
||||
DIARY_MORYTANIA_MEDIUM(4488, 1189, 7, 7),
|
||||
DIARY_MORYTANIA_HARD(4489, 1189, 8, 8),
|
||||
DIARY_MORYTANIA_ELITE(4490, 1189, 9, 9),
|
||||
|
||||
DIARY_VARROCK_EASY(4479, 1188, 30, 30),
|
||||
DIARY_VARROCK_MEDIUM(4480, 1188, 31, 31),
|
||||
DIARY_VARROCK_HARD(4481, 1189, 0, 0),
|
||||
DIARY_VARROCK_ELITE(4482, 1189, 1, 1),
|
||||
|
||||
DIARY_WESTERN_EASY(4471, 1188, 22, 22),
|
||||
DIARY_WESTERN_MEDIUM(4472, 1188, 23, 23),
|
||||
DIARY_WESTERN_HARD(4473, 1188, 24, 24),
|
||||
DIARY_WESTERN_ELITE(4474, 1188, 25, 25),
|
||||
|
||||
DIARY_WILDERNESS_EASY(4466, 1188, 18, 18),
|
||||
DIARY_WILDERNESS_MEDIUM(4467, 1188, 19, 19),
|
||||
DIARY_WILDERNESS_HARD(4468, 1188, 20, 20),
|
||||
DIARY_WILDERNESS_ELITE(4469, 1188, 21, 21),
|
||||
|
||||
/**
|
||||
* Special Attack
|
||||
*/
|
||||
|
||||
@@ -32,6 +32,7 @@ public class WidgetID
|
||||
public static final int DEPOSIT_BOX_GROUP_ID = 192;
|
||||
public static final int INVENTORY_GROUP_ID = 149;
|
||||
public static final int EQUIPMENT_GROUP_ID = 387;
|
||||
public static final int DIARY_GROUP_ID = 259;
|
||||
public static final int PESTRCONTROL_GROUP_ID = 408;
|
||||
public static final int CLAN_CHAT_GROUP_ID = 7;
|
||||
public static final int MINIMAP_GROUP_ID = 160;
|
||||
|
||||
@@ -50,6 +50,8 @@ public enum WidgetInfo
|
||||
EQUIPMENT_RING(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.RING),
|
||||
EQUIPMENT_AMMO(WidgetID.EQUIPMENT_GROUP_ID, WidgetID.Equipment.AMMO),
|
||||
|
||||
DIARY_LIST(WidgetID.DIARY_GROUP_ID, 4),
|
||||
|
||||
PESTCONTROL_PURPLE_SHIELD(WidgetID.PESTRCONTROL_GROUP_ID, WidgetID.PestControl.PURPLE_SHIELD),
|
||||
PESTCONTROL_BLUE_SHIELD(WidgetID.PESTRCONTROL_GROUP_ID, WidgetID.PestControl.BLUE_SHIELD),
|
||||
PESTCONTROL_YELLOW_SHIELD(WidgetID.PESTRCONTROL_GROUP_ID, WidgetID.PestControl.YELLOW_SHIELD),
|
||||
|
||||
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright (c) 2018, oplosthee <https://github.com/oplosthee>
|
||||
* 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.diaryprogress;
|
||||
|
||||
import net.runelite.api.Varbits;
|
||||
|
||||
public enum DiaryEntry
|
||||
{
|
||||
ARDOUGNE(1, "Ardougne", Varbits.DIARY_ARDOUGNE_EASY, Varbits.DIARY_ARDOUGNE_MEDIUM, Varbits.DIARY_ARDOUGNE_HARD, Varbits.DIARY_ARDOUGNE_ELITE),
|
||||
DESERT(5, "Desert", Varbits.DIARY_DESERT_EASY, Varbits.DIARY_DESERT_MEDIUM, Varbits.DIARY_DESERT_HARD, Varbits.DIARY_DESERT_ELITE),
|
||||
FALADOR(2, "Falador", Varbits.DIARY_FALADOR_EASY, Varbits.DIARY_FALADOR_MEDIUM, Varbits.DIARY_FALADOR_HARD, Varbits.DIARY_FALADOR_ELITE),
|
||||
FREMENNIK(3, "Fremennik", Varbits.DIARY_FREMENNIK_EASY, Varbits.DIARY_FREMENNIK_MEDIUM, Varbits.DIARY_FREMENNIK_HARD, Varbits.DIARY_FREMENNIK_ELITE),
|
||||
KANDARIN(4, "Kandarin", Varbits.DIARY_KANDARIN_EASY, Varbits.DIARY_KANDARIN_MEDIUM, Varbits.DIARY_KANDARIN_HARD, Varbits.DIARY_KANDARIN_ELITE),
|
||||
KARAMJA(0, "Karamja", Varbits.DIARY_KARAMJA_EASY, Varbits.DIARY_KARAMJA_MEDIUM, Varbits.DIARY_KARAMJA_HARD, Varbits.DIARY_KARAMJA_ELITE),
|
||||
LUMBRIDGE(6, "Lumbridge & Draynor", Varbits.DIARY_LUMBRIDGE_EASY, Varbits.DIARY_LUMBRIDGE_MEDIUM, Varbits.DIARY_LUMBRIDGE_HARD, Varbits.DIARY_LUMBRIDGE_ELITE),
|
||||
MORYTANIA(7, "Morytania", Varbits.DIARY_MORYTANIA_EASY, Varbits.DIARY_MORYTANIA_MEDIUM, Varbits.DIARY_MORYTANIA_HARD, Varbits.DIARY_MORYTANIA_ELITE),
|
||||
VARROCK(8, "Varrock", Varbits.DIARY_VARROCK_EASY, Varbits.DIARY_VARROCK_MEDIUM, Varbits.DIARY_VARROCK_HARD, Varbits.DIARY_VARROCK_ELITE),
|
||||
WESTERN(10, "Western Provinces", Varbits.DIARY_WESTERN_EASY, Varbits.DIARY_WESTERN_MEDIUM, Varbits.DIARY_WESTERN_HARD, Varbits.DIARY_WESTERN_ELITE),
|
||||
WILDERNESS(9, "Wilderness", Varbits.DIARY_WILDERNESS_EASY, Varbits.DIARY_WILDERNESS_MEDIUM, Varbits.DIARY_WILDERNESS_HARD, Varbits.DIARY_WILDERNESS_ELITE);
|
||||
|
||||
private final int index;
|
||||
private final String name;
|
||||
private final Varbits[] varbits;
|
||||
|
||||
DiaryEntry(int index, String name, Varbits... varbits)
|
||||
{
|
||||
this.index = index;
|
||||
this.name = name;
|
||||
this.varbits = varbits;
|
||||
}
|
||||
|
||||
public int getIndex()
|
||||
{
|
||||
return index;
|
||||
}
|
||||
|
||||
public String getName()
|
||||
{
|
||||
return name;
|
||||
}
|
||||
|
||||
public Varbits[] getVarbits()
|
||||
{
|
||||
return varbits;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
/*
|
||||
* Copyright (c) 2018, oplosthee <https://github.com/oplosthee>
|
||||
* 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.diaryprogress;
|
||||
|
||||
import net.runelite.client.config.Config;
|
||||
import net.runelite.client.config.ConfigGroup;
|
||||
import net.runelite.client.config.ConfigItem;
|
||||
|
||||
@ConfigGroup(
|
||||
keyName = "diaryprogress",
|
||||
name = "Diary Progress",
|
||||
description = "Configuration for the plugin for enabling and disabling diary progress indicators"
|
||||
)
|
||||
public interface DiaryProgressConfig extends Config
|
||||
{
|
||||
@ConfigItem(
|
||||
keyName = "enabled",
|
||||
name = "Enabled",
|
||||
description = "Configures whether or not to display diary progress indicators"
|
||||
)
|
||||
default boolean enabled()
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
/*
|
||||
* Copyright (c) 2018, oplosthee <https://github.com/oplosthee>
|
||||
* 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.diaryprogress;
|
||||
|
||||
import com.google.common.eventbus.Subscribe;
|
||||
import com.google.inject.Inject;
|
||||
import com.google.inject.Provides;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Varbits;
|
||||
import net.runelite.api.events.GameTick;
|
||||
import net.runelite.api.widgets.Widget;
|
||||
import net.runelite.api.widgets.WidgetInfo;
|
||||
import net.runelite.client.config.ConfigManager;
|
||||
import net.runelite.client.plugins.Plugin;
|
||||
import net.runelite.client.plugins.PluginDescriptor;
|
||||
|
||||
@PluginDescriptor(
|
||||
name = "Diary Progress plugin"
|
||||
)
|
||||
public class DiaryProgressPlugin extends Plugin
|
||||
{
|
||||
private static final String STAGE_FINISHED_STRING = "<col=00ff00>X</col>";
|
||||
private static final String STAGE_UNFINISHED_STRING = "<col=ffff00>_</col>";
|
||||
|
||||
@Inject
|
||||
Client client;
|
||||
|
||||
@Inject
|
||||
DiaryProgressConfig config;
|
||||
|
||||
@Provides
|
||||
DiaryProgressConfig provideConfig(ConfigManager configManager)
|
||||
{
|
||||
return configManager.getConfig(DiaryProgressConfig.class);
|
||||
}
|
||||
|
||||
@Subscribe
|
||||
public void updateDiaryStatus(GameTick event)
|
||||
{
|
||||
Widget diaryWidget = client.getWidget(WidgetInfo.DIARY_LIST);
|
||||
|
||||
if (diaryWidget == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
for (DiaryEntry entry : DiaryEntry.values())
|
||||
{
|
||||
Widget child = diaryWidget.getChild(entry.getIndex());
|
||||
StringBuilder progress = new StringBuilder();
|
||||
|
||||
if (config.enabled())
|
||||
{
|
||||
for (Varbits varbits : entry.getVarbits())
|
||||
{
|
||||
if (client.getSetting(varbits) == 1)
|
||||
{
|
||||
progress.append(STAGE_FINISHED_STRING);
|
||||
}
|
||||
else
|
||||
{
|
||||
progress.append(STAGE_UNFINISHED_STRING);
|
||||
}
|
||||
}
|
||||
|
||||
progress.append("<col=ffff00> ").append(entry.getName());
|
||||
}
|
||||
else
|
||||
{
|
||||
progress.append(entry.getName());
|
||||
}
|
||||
|
||||
child.setText(progress.toString());
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user