feat: player tracker
This commit is contained in:
@@ -0,0 +1,322 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user