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
|