-
Notifications
You must be signed in to change notification settings - Fork 123
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Lint #239
base: master
Are you sure you want to change the base?
Lint #239
Conversation
and a bit more files for the test suite
Most or all Ravensburger GMEs have a duplicated Audio table. Most of them have an identical copy, but it seems not all. For those where the table is 80% equal, treat it like a copy (and throw away the extra information for now). It remains future work to make sense of this extra table.
Since commit 8e49687 ("Allow referencing audio files with filenames outside [a-zA-Z0-9_] (entropia#236)"), all filenames could be given to the play command, however the user had to cut off the file extension manually. First search for the full filename, before trying with the standard extension. To allow basic filenames without quoting, "." is now also allowed in identifiers for the play command. Idea and code suggestion by Joachim Breitner. Co-authored-by: Thomas Bleher <[email protected]>
As discussed in entropia#231 and entropia#238, TipToi pens handle a jump after all other actions (even if they are earlier in the list). If there are multiple jumps, only the last has an effect. This lint check verifies that a GME only contains one jump, and that the jump is the last action. This check is true for all GMEs published by Ravensburger.
This makes it easier to use `tttool lint` in scripts.
Nachdem ich eine Nacht darüber geschlafen habe: der Grund für #238 war, dass ich ein Skript über mehrere Codes aufteilen musste, um das Limit mit 8 Kommandos zu umgehen. Der naive Ansatz mit "P(datei) J(nextOid)" führte aber zu den problematischen 2s-Pausen nach dem J()-Kommando. Entsprechend dem Vorschlag im TipToi-Buch habe ich auf "J(nextOid) P(datei)" umgestellt, was auf dem TipToi gut funktioniert, nur mit Hier zeigt sich nun, dass der oben genannte Trick anscheinend in TipToi-Büchern von Ravensburger nicht verwendet wird. Man muss also wohl nochmal nachschauen, wie sie das 2s-Pausen-Problem lösen. |
Das wäre interessant herauszufinden. Kann es sein dass die Ravensburger GMEs vielleicht entweder |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Schön! Ich hab ein paar kleine Vorschläge, mehr um dein Haskell zu verfeinern :)
Interessante Idee. Tatsächlich scheint nur
|
Co-authored-by: Joachim Breitner <[email protected]>
Vielen Dank Dir! Das hilft mir :) |
Ich mach eh Squash commits, also brauchst du nicht Aufräumen. Wäre spannend zu sehen ob der Supermarkt auch den 2s-Bug hat. Wenn du motiviert bist, dann drucke doch die entsprechenden Codes aus und probiere es (das Problem hängt glaub von der Stift-Version ab). |
Werde ich die nächsten Tage mal machen. Ich weiß nur noch nicht genau, wann ich dazu komme. |
OK, "nächste Tage" hat leider länger gedauert, aber jetzt kam ich endlich dazu. Der Code ist interessant strukturiert (hier nur die Cases, die von den Variablen-Inhalten her matchen):
Das startet ein Spiel, wo man insgesamt 10 Dinge finden muss. Hier der Code der Items, immer nur für den Fall, dass man das erste Mal draufdrückt:
D.h. pro Item gibt es eine Variable, wo er sich merkt, ob man es schon gefunden hat. Dazu einen Zähler in Hier der Code für 10360 und folgende:
Hier wird also noch eine Text ausgegeben, und dann (über mehrere OIDs verteilt) alle Variablen wieder zurückgesetzt. Ich denke man braucht noch weitere Experimente mit eigenen Dateien, um herauszufinden, warum es hier keine 2s Pause gibt. Liegt es an den Zuweisungen, die dazwischen sind? Oder daran, dass danach noch weitere Jumps kommen? |
Entsprechend der Diskussion in #238 habe ich mich mal an einem lint-Check für J() versucht. Tatsächlich scheint es bei allen TipToi-Files von Ravensburger nur maximal einen J()-Befehl pro Zeile zu geben, immer am Ende.
Beim Testen habe ich mir gewünscht, dass
tttool lint
sich bei Fehlern mit einem passenden Exit-Code beendet. Das war eine gute Ausrede, um die IO-Monad etwas besser kennenzulernen :)Kommentare wie immer herzlich willkommen.