Menü aufrufen
Toggle preferences menu
Persönliches Menü aufrufen
Nicht angemeldet
Ihre IP-Adresse wird öffentlich sichtbar sein, wenn Sie Änderungen vornehmen.
(Weitergeleitet von Version 0.5.0 Modding)

Dies ist eine Seite über die Version 0.5.0-SNAPSHOT und Version 0.5.0. Falls ihr euch mit dem Modding im Underground Simulator nicht auskennt, empfiehlt sich der Guide Modding des Underground Simulator.

Die Version v0.5.0-SNAPSHOT ist ein umfangreiches Update und stellt einen wichtigen Meilenstein für das Modding des Underground Simulator dar. Auf dieser Seite wird erklärt, welche Änderungen vorgenommen wurden und wie diese umgesetzt sind.

Theorie der Modularisierung

Bearbeiten Quelltext bearbeiten

Die Idee hinter diesem Update ist die Modularisierung des Shopsystems. Das bedeutet, dass der Shop in einzelne, unabhängige Komponenten aufgeteilt wurde.

Ziel dieser Umstrukturierung:

  • einfachere Erweiterbarkeit
  • bessere Wartbarkeit
  • Unterstützung für Modding

Durch diese Struktur können neue Funktionen deutlich einfacher hinzugefügt werden, ohne bestehenden Code stark verändern zu müssen.

  • String: ID des Items
  • String: Anzeigename des Items
  • double: Preis des Items
  • String: Aktions-ID (z. B. addFahrer)
  • String: Value (frei definierbarer Zusatzwert)
  • int: Menge des Items

Siehe Konstruktorparameter.

  • id: getId()
  • name: getName()
  • price: getPrice(), setPrice(double)
  • action: getAction(), setAction(String)
  • value: getValue(), setValue(String)
  • amount: getAmount(), setAmount(int)

Diese Klasse dient zur Erstellung von ShopItems, die anschließend im ShopItemRegistry registriert werden.

---

Interface

boolean supports(String action) Prüft, ob dieser Handler die angegebene Aktion verarbeiten kann. Gibt true zurück, wenn dies der Fall ist, ansonsten false.

void execute(ShopItem si) throws Exception Führt die Aktion für das übergebene ShopItem aus. Die konkrete Implementierung liegt beim Entwickler (z. B. Hinzufügen zu Firma, Score etc.). Es ist auch möglich, dass keine Aktion erfolgt.

Die ShopItemRegistry verwaltet alle ShopItems und ShopActionHandler.

Sie ist verantwortlich für:

  • Speicherung der Items und Handler
  • Weiterleitung von Käufen an passende Handler
  • handlers: ArrayList<ShopActionHandler>
  • items: ArrayList<ShopItem>
  • buyed: HashMap<ShopItem, Integer>
  • this: ShopItemRegistry
  • items: getItems()
  • handlers: getHandlers()
  • this: getInstance()
  • buyed: getBuyed()

register(ShopItem) – registriert ein ShopItem registerHandler(ShopActionHandler) – registriert einen Handler unregister(ShopItem) – entfernt ein ShopItem unregisterHandler(ShopActionHandler) – entfernt einen Handler handleBuy(ShopItem) – übergibt das Item an einen passenden Handler

Die neue Version des Shops wurde stark vereinfacht.

Der ursprüngliche Code (Shop.java) wurde von 102 Zeilen auf 38 Zeilen reduziert. Zwar wurden dafür zusätzliche Klassen eingeführt, jedoch ermöglicht dies eine deutlich bessere Erweiterbarkeit.

Durch die Modularisierung können nun viele neue Features umgesetzt werden, ohne den Hauptcode unnötig zu verkomplizieren.

Die Modularisierung macht den Shop übersichtlicher, wartbarer und deutlich einfacher erweiterbar. Sie bildet die Grundlage für zukünftige Features und Modding-Erweiterungen.

Falls ihr Fehler oder Denkfehler im Code findet, meldet euch gerne: mir