323 lines
8.6 KiB
Markdown
323 lines
8.6 KiB
Markdown
# 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
|