Files
Runelite-EssentialsPlus/Item Information.md
T

323 lines
8.6 KiB
Markdown
Raw Normal View History

2026-09-30 16:48:47 +02:00
# Item Information – Zusammenlegung der Item-Helper
## Ziel
`Item prices`, `Item charges` und das neue Feature `Banked items` werden unter einem gemeinsamen Helper zusammengeführt.
Empfohlener Name:
**Item information**
Alternativen: `Item details`, `Item info`.
Der Nutzer soll einen einzigen Hauptschalter haben. Die einzelnen Informationsarten bleiben per Rechtsklick separat aktivierbar.
## Aktueller Zustand
### Item prices
Implementierung: `helpers/ItemPriceOverlay.java`
- Hover-Tooltip über Inventar- und Bank-Items
- GE-Preis
- High-Alchemy-Wert
- Mengen werden berücksichtigt
- Coins und Platinum-Tokens werden ignoriert
- Optionen:
- `Show GE price`
- `Show HA price`
### Item charges
Implementierung:
- `helpers/ItemCharges.java`
- `helpers/ItemChargesOverlay.java`
- Permanente Werte direkt auf Item-Icons
- Inventar
- Ausrüstung
- optional Bank
- Unterstützt viele Charge-/Füllstandsquellen, unter anderem:
- Varbits
- Barrows
- Moon-Ausrüstung
- Blowpipe mit mehreren Werten
- Dragonfire-Schilde
- Schmuck und Tränke
- Bags, Pouches und Container
- Master Scroll Book
- weitere Spezialitems
- Optionen:
- `Show weapons and armor`
- `Show looting and coal bags`
- `Show charges in bank`
- Textgröße
- Low-Charge-Warnschwelle
- Primärfarbe
- Sekundärfarbe
- Warnfarbe
- gespeicherte Charges zurücksetzen
- Coal-Bag-Daten vergessen
## Neues Feature: Banked items
Beim Hover über ein Item soll im Tooltip zusätzlich die Bankmenge erscheinen.
Beispiel:
```text
GE: 12.3k gp HA: 4.8k gp
Banked: 300
```
Regeln:
- Die Bankmenge wird nur angezeigt, wenn sie bekannt ist.
- Bei unbekanntem Bestand keine `Banked: 0`-Zeile anzeigen.
- Noted und unnoted Items müssen zusammengefasst werden.
- Die Zuordnung muss über `ItemManager.canonicalize()` erfolgen.
- Bei geöffneter Bank ist der Live-Bankcontainer maßgeblich.
- Bei geschlossener Bank wird der zuletzt bekannte Bankbestand verwendet.
- Bankänderungen müssen über `ItemContainerChanged` berücksichtigt werden.
- Die bestehende Bank-/Container-Speicherung des Plugins soll wiederverwendet werden.
## Zieloberfläche
In der Helpers-Karte gibt es nur noch eine Checkbox:
```text
Item information
```
Tooltip:
```text
Shows item prices, banked quantities and charge information. Right-click for options.
```
Die bisherigen Checkboxen `Item prices` und `Item charges` entfallen.
## Ziel-Rechtsklick-Menü
### Informationsarten
- `Show GE price`
- `Show High Alchemy value`
- `Show banked quantity`
- `Show item charges`
### Charge-Kategorien
Nur relevant, wenn `Show item charges` aktiv ist:
- `Weapons and armor`
- `Bags and containers`
Die bestehende Option `Show charges in bank` wird in den Bereich Anzeigeorte verschoben.
### Anzeigeorte
Preise und Bankmengen sind Hover-Informationen:
- `Show in inventory`
- `Show in bank`
Charges sind Icon-Informationen:
- `Show charges in inventory`
- `Show charges in equipment`
- `Show charges in bank`
Falls eine zu große Anzahl an Optionen vermieden werden soll, kann `Show in inventory` entfallen, weil Inventar standardmäßig immer aktiv ist. Dann bleibt nur:
- `Show in bank`
- `Show charges in equipment`
### Darstellung
- `Text size`
- `Primary color`
- `Secondary color`
- `Warning color`
### Warnungen
`Low-charge warning` mit:
- `Off`
- `≤ 10`
- `≤ 50`
- `≤ 100`
- `≤ 500`
- `≤ 1000`
### Datenverwaltung
- `Reset saved charges`
- `Forget coal bag`
### Zurücksetzen
- `Reset appearance`
## Tooltip-Design
Der bestehende Preis-Tooltip soll zu einem gemeinsamen Tooltip-Builder erweitert werden.
Empfohlene Reihenfolge:
1. GE-Preis
2. High-Alchemy-Wert
3. Bankmenge
Beispiel mit allen Informationen:
```text
GE: 12.3k gp HA: 4.8k gp
Banked: 300
```
Wenn nur einzelne Informationen aktiviert sind, werden nur diese Zeilen ausgegeben.
Die Charge-Werte bleiben auf den Item-Icons und werden nicht in den Hover-Tooltip verschoben, außer dies wird später ausdrücklich gewünscht.
## Empfohlene interne Struktur
### Gemeinsamer Helper-Schalter
Neuer Hauptschlüssel:
```text
itemInformation
```
Mögliche neue Unteroptionen:
```text
itemInformationGe
itemInformationHa
itemInformationBanked
itemInformationCharges
itemInformationChargesWeapons
itemInformationChargesBags
itemInformationBank
itemInformationEquipment
itemInformationSize
itemInformationColor
itemInformationSecondaryColor
itemInformationLowColor
itemInformationLowAt
```
Die genaue Benennung kann noch angepasst werden. Wichtig ist ein einheitliches Präfix.
### Overlay-Struktur
Empfohlene Varianten:
1. `ItemInformationOverlay` übernimmt den Hover-Tooltip und ruft Preis- und Banked-Provider auf.
2. `ItemChargesOverlay` bleibt für die Icon-Anzeige bestehen.
3. Beide verwenden denselben gemeinsamen Hauptschalter und dieselben zentralen Optionen.
Damit muss die komplexe Charge-Logik nicht unnötig mit der Tooltip-Logik vermischt werden.
Alternativ kann der bestehende `ItemPriceOverlay` umbenannt und erweitert werden. Inhaltlich sollte er aber als allgemeiner Item-Information-Tooltip behandelt werden.
### Bankbestand
Für den Bankbestand sollte keine neue parallele Speicherung eingeführt werden, wenn die vorhandenen Plugin-Daten verwendet werden können.
Benötigt wird eine Methode nach diesem Muster:
```java
long getBankedQuantity(int itemId)
```
Die Methode sollte:
- die Item-ID kanonisieren
- noted/unnoted zusammenführen
- die aktuelle Bank bevorzugen, wenn sie geöffnet ist
- ansonsten den letzten bekannten Bestand verwenden
- bei unbekanntem Item `0` oder einen klar unterscheidbaren „unknown“-Zustand liefern
Wichtig: `0` darf nicht automatisch als „unbekannt“ interpretiert werden. Ein bekannter leerer Bestand und ein unbekannter Bestand müssen unterscheidbar sein.
## Rückwärtskompatibilität
Bestehende Konfigurationswerte sollen zunächst gelesen werden können:
- `itemPrices`
- `itemPricesGe`
- `itemPricesHa`
- `itemCharges`
- `itemChargesWeapons`
- `itemChargesBags`
- `itemChargesBank`
- `itemChargesSize`
- `itemChargesColor`
- `itemChargesSecondaryColor`
- `itemChargesLowColor`
- `itemChargesLowAt`
Mögliche Strategie:
- Neuer Hauptschalter verwendet neue Keys.
- Falls neue Keys noch nicht existieren, werden die alten Werte als Fallback gelesen.
- Alte Einstellungen werden nicht sofort gelöscht.
- Ein späterer Migrationsschritt kann alte Keys übernehmen oder dauerhaft weiter unterstützen.
## Tests
Vor der Implementierung sollten die vorhandenen Tests ausgeführt werden. Relevant sind insbesondere:
- `ItemChargesTest`
- `ItemChargesFullTest`
- Bank-/Container-Tests
- Tests für `ItemManager.canonicalize()`-Verhalten, falls vorhanden
Neue Tests sollten abdecken:
1. GE-Preis allein
2. HA-Wert allein
3. GE und HA zusammen
4. Bankmenge bei normalem Item
5. Bankmenge bei noted/unnoted Kombination
6. unbekannter Bankbestand wird nicht angezeigt
7. bekannter Bankbestand von `0`
8. Bankbestand aktualisiert sich nach Containeränderung
9. gemeinsamer Hauptschalter deaktiviert beide Overlay-Arten
10. Charge-Unteroptionen bleiben funktionsfähig
11. alte Konfigurationswerte werden korrekt übernommen
12. Tooltip erscheint nicht bei Coins/Platinum, sofern das bestehende Verhalten beibehalten werden soll
## Offene Fragen vor der Implementierung
1. Soll der endgültige Name `Item information`, `Item details` oder `Item info` sein?
2. Soll `Banked: 0` bei bekannt leerem Bestand angezeigt werden oder komplett entfallen?
3. Soll der Bankbestand auch beim Hover über ein Item im Bankfenster selbst angezeigt werden?
4. Soll die Bankmenge inklusive Items im Inventar angezeigt werden oder ausschließlich der Bestand in der Bank?
5. Soll `Show in inventory` entfallen, weil Inventar immer aktiv sein soll?
6. Sollen Preise und Bankmenge optional auch auf Item-Icons statt nur im Tooltip erscheinen?
7. Soll die Anzeige von Charges im Bankfenster weiterhin separat schaltbar sein?
8. Soll eine gemeinsame Farbe für alle Tooltip-Zeilen verwendet werden oder behalten GE/HA/Banked eigene Farben?
9. Sollen die alten Config-Keys dauerhaft unterstützt oder nur einmalig migriert werden?
10. Soll das neue Feature standardmäßig deaktiviert bleiben, wie die bisherigen Helper?
## Empfohlene Standardentscheidung
Für eine einfache und übersichtliche erste Version:
- Name: `Item information`
- Ein Hauptschalter
- GE, HA, Banked und Charges separat toggelbar
- Inventar immer aktiv
- Bank-Hover separat toggelbar
- Equipment-Charges separat toggelbar
- Banked zählt nur Bankbestand, nicht Inventar
- unbekannter Bestand wird nicht angezeigt
- vorhandene Charge-Unteroptionen bleiben erhalten
- alte Config-Keys werden als Fallback unterstützt
- Tooltip-Informationen bleiben getrennt von den Charge-Zahlen auf Item-Icons