(Coding) Wie füge ich in Ren'py einen Text zu meiner Gallerie/Glossar hinzu?
Hallo zusammen,
bin relativ neu in der Coding-Welt und habe wie im Titel bereits gesagt, Probleme dabei einen Text zu meinem Bild hinzuzufügen.
Der Text sollte auftauchen, wenn ich auf das Bild klicke.
Das ist mein gallery_setup Code:
init python:
class GalleryItem:
def __init__(self, name, images, locked="locked"):
self.name = name
self.images = images
self.locked = locked
self.refresh_lock()
def refresh_lock(self):
self.num_unlocked = 0
lockme = False
for img in self.images:
if not renpy.seen_image(img):
lockme = True
else:
self.num_unlocked += 1
self.is_locked = lockme
gallery_items = []
gallery_items.append(GalleryItem("Stacy - What if", ["img1"] ))
#gallery background
image gray = "#777"
#gallery images
image img1 = ("images/karten/tanz.png")
_____________________________________________________________________
Da ich wie gesagt, noch kaum Erfahrung beim Coding habe, hoffe ich, dass dies das richtige Script ist. Ich habe noch ein "Gallery" Script, dass ich nicht verstehe, und bei dem ich aber auch nicht glaube, dass ich dort was im Code ändern muss. Vielleicht im "Screen"Script dachte ich mir noch, wenn ja betroffene Stelle wäre das:
textbutton _("Load") action ShowMenu("load")
textbutton _("Gallery") action ShowMenu("gallery_B")
textbutton _("Preferences") action ShowMenu("preferences")
_________________________________________________________
tut mir leid, falls das Mau ist, aber ich weiß nicht, was sonst noch nützlich sein könnte, abgesehen von den angehängten Bildern noch.
vielen dank im voraus
2 Antworten
Ich kann dir da keinen Codingtip geben, nur das du dir auch die Ergebnisse von anderen ansehen kannst.
Renpy wird ja von vielen eingesetzt.
Zuallererst müsstest du dein Model GalleryItem um ein Attribut erweitern, welches den Text aufnimmt.
class GalleryItem:
def __init__(self, name, images, locked="locked", text=""):
"" ... ""
self.text = text
Ich gehe einfach einmal davon aus, dass nicht jedes Bild einen Text haben muss, deswegen habe ich dem Parameter einen Standardwert zugeordnet.
Wenn du dein Bild beim Anlegen nun einen Text zuordnen möchtest, dann sieht das so aus:
gallery_items.append(GalleryItem("Stacy - What if", ["img1"], text="Some text"))
Für deinen Screen müsstest du das Bild mit Hilfe eines imagebutton darstellen und für den Text kannst du eine text-Komponente nutzen:
"" ... ""
current_clicked_image = None
for gallery_item in gallery_items:
"" ... ""
imagebutton:
idle gallery_item.images[0]
action SetScreenVariable("current_clicked_image", gallery_item)
if current_clicked_image == gallery_item:
text gallery_item.text
background "#00d"
color "#fff"
size 20
xalign 0.5
yalign 1.0
Mehr Details, wie du die Komponenten visuell für dich anpassen kannst, kannst du in der Dokumentation nachlesen. Ich habe hier nur sporadisch ein paar Eigenschaften gesetzt.
Bei Klick auf das Bild wird eine Variable gesetzt, sodass sie auf das angeklickte Bild verweist. Die Abfrage im Screen-Skript prüft beim Rendern der Gallerie, ob das Bild, welches gerade gerendert wird, dem angeklickten Bild (also dem Bild, auf welches die Variable referenziert) entspricht. Wenn ja, wird der Text auch gerendert, andernfalls nicht.
Sollte dieser Zustand auch dann noch bestehen bleiben, wenn du den Screen einmal verlässt und erneut öffnest, müsstest du die Ich-wurde-angeklickt-Information anders speichern, bspw. in einer globalen Variable.