Darüber hatte ich auch schon nachgedacht... Allerdings verträgt sich das dann nicht mit einer anderen Sache, und zwar dass der Spieler selbst schreiben können soll...
...
Dafür bietet aber Ruby eine Lösung, die String-Methode gsub, mit denen du alle Vorkommen eines Musters in einem String durch etwas anderes ersetzen kannst.
Du kannst also die Eingabe des Nutzers nehmen, durch gsub jagen um die nötigen Ersetzungen für die Anzeige per Bitmap-Font zu machen und dabei den Text noch in der unveränderten Version behalten, falls du ihn mittels normaler Fonts anzeigen willst.
Das ist Script ist zwar recht umständlich geschrieben, aber soweit ich das sehe gibt es bereits die Buchstaben 'ä', 'ü' usw. Nur das 'ß' fehlt, kann man ja noch hinzufügen. Einfach in Zeile 507 in dem riesigen irrsinnigen Case-Statement ein
einfügen (wtf? warum nimmt man dafür keinen Hash ;__ und MAX_CHARS auf 101 setzen.
Das eigentliche Problem, warum es nicht funktioniert: Ruby 1.8 arbeitet nur auf Bytestrings und nicht auf Kodierungen. Darum kann man nicht auf einzelne Zeichen eines Strings zugreifen, sondern nur auf einzelne Bytes. Für einen Amerikaner ist das ziemlich uninteressant, weil die Buchstaben des englischen Alphabets in einem Byte kodiert sind. Nun sind aber alle Strings im Maker in UTF-8 kodiert. Und deutsche Umlaute haben in UTF-8 die Länge 2 Bytes. Darum schlägt das Script fehl, wenn es nur einzelne Bytes abfragt.
Es gibt da aber einen Trick: Reguläre Ausdrücke können in Ruby mit UTF-8 Kodierung umgehen. Mit ihnen lassen sich Bytestrings in einzelne Charakter-Arrays zerlegen.
Da wäre einmal die Methode text_size. Korrigiert sieht sie so aus:
Und dann die Methode draw_bitmap_text:
Die Originalmethoden durch die korrigierten ersetzen. Hoffentlich reicht das aus, damit das Script Umlaute erkennt.
Ich verstehe ehrlichgesagt kein Wort von dem was du da sagst-KD- ....
Aber ich weiß das dein genialer Code funktioniert
Ich danke dir vielmals !! Ehrlich
--
~> Fantasie ist wertvoller als Wissen, denn Wissen ist begrenzt. (Einstein) <~:
1. Demo hier erhältlich =D
-------------------------------------