Autor Thema: Speichern mit Enter-Taste bestätigen  (Gelesen 2241 mal)

Cmdr

  • volljähriger Tentakel
  • *****
  • Beiträge: 643
    • Profil anzeigen
Speichern mit Enter-Taste bestätigen
« am: 03. Oktober 2016, 10:42:05 »
Kennt ihr vielleicht eine Möglichkeit, beim Anlegen eines neuen Savegames, nach dem Eingeben des Names, dass dieses mit der Enter-Taste bestätigt werden kann?
Natürlich geht auch ein Klick auf den Ok-Button, aber die erste Intuition ist in dem Fall nunmal die Enter-Taste und mMn nach nicht schön, wenn dieses nicht funktioniert.

Das Problem an der Sache ist, dass die Methode on_key_pressed() im GlobalScript nicht aufgerufen wird, während man beim Benennen des Savegames ist.
Dadurch kann auch die dortige Implementierung, dass beim Drücken von Enter die Speicher-Methode aufgerufen wird, nichts nützen.

KhrisMUC

  • Moderator
  • volljähriger Tentakel
  • *****
  • Beiträge: 979
    • Profil anzeigen
Re: Speichern mit Enter-Taste bestätigen
« Antwort #1 am: 10. Oktober 2016, 01:04:36 »
1. GUI "gSavetextbox" öffnen
2. Textbox auswählen
3. Im Eventpanel das Event wie üblich mit einer Funktion verknüpfen
4. In die Funktion gSaveSave_OnClick(gSaveSave, eMouseLeft); schreiben.

Bei der Gelegenheit fiel mir übrigens auf, dass man Spielstände mit leerem Namen abspeichern kann. Diese lassen sich auch wieder laden, sehen aber in der Auswahl wie leere slots aus.

Deswegen sollte in der gSaveSave_OnClick-Funktion überprüft werden, ob buffer die Länge 0 hat, bevor gespeichert wird.

Edit: Ich hab das gerade in einem alten Mansion-Pack ausprobiert, und dort war bereits eine entsprechende Funktion eingebaut, die aber a) nicht aktiv war und b) den Code kopiert hat, anstatt gSaveSave_OnClick aufzurufen.
« Letzte Änderung: 10. Oktober 2016, 01:15:38 von KhrisMUC »

Cmdr

  • volljähriger Tentakel
  • *****
  • Beiträge: 643
    • Profil anzeigen
Re: Speichern mit Enter-Taste bestätigen
« Antwort #2 am: 10. Oktober 2016, 09:10:18 »
Danke für die Antwort.  :)
Die Funktion gSaveTextBox_OnActivate(GUIControl *control) existierte zwar bereits, war aber nicht mit dem GUI verknüpft.
Auch der Inhalt ist mit der gSaveSave_OnClick(gSaveSave, eMouseLeft); identisch, bloß ohne Index-Abfrage.
Da macht es tatsächlich aufgrund von Coderedundanz mehr Sinn, an der Stelle die andere Save-Funktion aufzurufen, wie du vorgeschlagen hast.
« Letzte Änderung: 10. Oktober 2016, 09:13:28 von Cmdr »