Okay, hier einmal im Groben:
1) Musst du eine neue Klasse anlegen für dein zusätzliches Window. Zum Beispiel mit dem Namen Window_Preview. In dieser Klasse werden wir später programmieren wie ein Bild dargestellt wird.
2) Als nächstes müssen wir die Scene_Item (eine bereits vorhandene Klasse) abändern um unser neues Window_Preview einbinden zu können. Genaueres dazu später.
3) Zum Schluss kümmern wir uns darum, dass alle Informationen korrekt übertragen werden damit wir auch das richtige Bild anzeigen können.
So, jetzt im Detail. Für dein eigenes Window kannst du dich einmal an den bereits vorhandenen orientieren. Die Klasse Window_Help könnte hierfür ein guter Ausgangspunkt sein. Diese Klasse wird verwendet um eine kurze Beschreibung zu Items oder Fähigkeiten zu zeigen, unter anderem auch im Item-Menü.
Am Anfang könnte unsere Klasse wie folgt aussehen:
Beachte, die Positionierung unseres Fensters, ich habe hier y = 64 gewählt, weil das Window_Help (mit der Item-Beschreibung) eine Y-Position von 0 und eine Höhe von 64 hat. Dementsprechend wird unser Preview-Window direkt unter dem Help-Window sein.
Das bedeutet auch, dass wir die Position und Höhe des Item-Windows anpassen müssen.
Also gehen wir zur Klasse Window_Item, hier verändern wir wie die Position und Dimension im Konstruktor gesetzt wird.
Das hier wäre eine gute Variante die Klasse zu verändern:
Dadurch wird das Item-Window genau unterhalb unseres Preview-Windows platziert und den restlichen Platz bis zum Bildschirmrand einnehmen.
Als nächstes packen wir unser Fenster in die Scene_Item. Wir müssen uns um folgende Dinge kümmern:
1) Fenster erstellen
2) Fenster vernichten
3) Fenster updaten und Inhalt setzen
Dabei kannst du dich daran orientieren wie die anderen Fenster bedient werden, nämlich das @item_window und das @help_window.
Dort wo diese Fenster erstellt werden erstellen wir am besten auch unser Preview-Window, zum Beispiel:
Ebenfalls in der Main-Methode werden die Fenster wieder zerstört, das passiert über die "dispose" methode.
Also:
dort wo auch die beiden anderen Fenster entfernt werden.
Jetzt noch das update, dafür fügst du in der Methode "update" der Scene_Item die Zeile:
dort ein wo auch die übrigen Fenster ge-updated werden.
Jetzt ist das Fenster bereits in unserem Menü, nur wird noch nichts angezeigt. Worum wir uns zuerst kümmern sollten ist, dass wir die Information über das ausgewählte Item zu unserer Window_Preview-Klasse bekommen.
Auch hier schauen wir einmal wie es mit dem Window_Help getan wird, immerhin bekommt dieses Fenster auch seine Informationen über das ausgewählte Item.
Mit ein wenig recherche werden wir erkennen, dass das Update für unser Fenster in der Klasse Window_Item geschieht. Hier gibt es die Methode "update_help" wo das Beschreibungs-Fenster über das ausgewählte Item informiert wird.
An genau dieser Stelle werden wir jetzt auch dafür sorgen, dass unser Preview-Window auch über das Item informiert wird.
Damit das Item-Window unser Fenster informieren kann muss es eine Variable besitzen, welche auf das Fenster verweist. Ich nenne diese Variable einmal @preview_window.
Die update_help Methode von Window_Item könnten wir nun wie folgt schreiben:
Bitte beachte, wir prüfen ersteinmal ob ein solches Fenster überhaupt existiert! Das ist wichtig, weil das Window-Item ebenfalls im Kampf eingesetzt wird und wir dort kein Preview-Window haben!
Auch wichtig: Die Zeile "attr_accessorreview_window". Hier definieren wir unsere Variable!
Nun müssen wir uns auch noch darum kümmern, dass das Item-Window unser Preview-Window kennt. Das tun wir wieder in der Scene_Item, denn dort wird auch das Help-Window erstellt und bekannt gemacht.
In der "main" Methode gibt es dort die Zeile:
auf die gleiche Art und Weise gehen wir jetzt mit unserem Preview-Window vor:
Das letzte was fehlt ist nun nurnoch, dass die Bilder korrekt angezeigt werden. Dafür gehen wir zurück in die Klasse Window_Preview. Nun ist es Zeit die Methode "set_item(item)" zu implementieren.
Hier einmal eine sehr einfache Implementierung, welche einfach das Icon des Items wiederholt:
Bitte beachten, wir prüfen ersteinmal ob das neue Item ein anderes ist als das Item, welches wir gerade anzeigen!
Das ist wichtig um die Performance zu verbessern, aber nicht zwangsweise notwendig; ich würde es trotzdem dringend empfehlen.
Sofern das Item ein neues Item ist setzen wir die "contents" von dem Window auf "RPG:ache.icon(item.icon_name)". Die "contents" sind tatsächlich ein Bitmap, ähnlich wie das was Kelven vorher bereits angesprochen hat. Hier könntest du also ein neues Bitmap erstellen falls du es willst, für diesen einfachen Fall nehmen wir aber einfach nur das vorhandene Icon aus dem Cache.
Der Cache speichert alle Bilder, welche schoneinmal geladen wurden zwischen. Dadurch wird das Script schneller weil eine Datei nicht immer wieder neu von der Festplatte geladen werden muss.
Hier laden wir ein Bild von dem Ordner "icon". Du kannst auch aus dem Ordner "picture" oder jedem anderen laden.
Zum Beispiel mit:
Noch eine wichtige Sache:
Wenn du Bilder aus dem Cache lädst anstatt selbst welche zu erstellen darfst du sie NICHT mit dispose zerstören! Das hätte fatale Folgen.
dispose solltest du nur dann einsetzen wenn du das Bild mit "Bitmap.new" selbst erstellt hast.
Ich hoffe das ist ausreichend, um dir fürs erste den Weg zu zeigen deine eigene Version zu schreiben.
Falls du noch Fragen hast dann stell sie einfach.