Ich hab mir eine JSON-Datei (siehe Anhang) erstellt, die ich als Highscoreliste verwenden möchte. Die Highscoreliste ist in 3 Schwierigkeitsgrade mit jeweils 10 Einträgen unterteilt, die wiederum Name und Zeit enthalten sollen.
Jetzt habe ich Probleme beim auslesen der Datei. Aktuelle sieht die Abfrage so aus:
Alles anzeigen
Als Ergebnis bekomme ich in der debug message folgendes ausgegeben.
Hier wird aber nicht wie erwartet der Name und die Zeit von jedem einzelnen Eintrag ausgegeben, sondern überall der Erste von "easy".
Ich steig nicht dahinter, was ich falsch gemacht haben könnte.
Normalerweise sollte doch mit
der nächste Eintrag angesprochen werden, oder nicht?
Jetzt habe ich Probleme beim auslesen der Datei. Aktuelle sieht die Abfrage so aus:
GML-Quellcode
- if ( file_exists( global.highScoreFile ) ) {
- // Map key array
- map_key_array[0] = "easy";
- map_key_array[1] = "medium";
- map_key_array[2] = "hard";
- // read JSON string from file
- var readFile = file_text_open_read( global.highScoreFile );
- var fileString = file_text_read_string( readFile );
- // create ds_map from JSON string
- var readMap = json_decode( fileString );
- if ( readMap != -1 ) {
- // Erste Ebene durchlaufen "easy", "medium", "hard"
- for ( var d = 0; d < array_length_1d( map_key_array ); d++ ) {
- var mapArrayOne = ds_map_find_value( readMap, map_key_array[d] );
- var curr = ds_map_find_first( mapArrayOne );
- show_debug_message( "Level: " + string(map_key_array[d]) );
- show_debug_message( "Entries: " + string(ds_map_size( mapArrayOne )) );
- // Zweite Ebene durchlaufen 0,1,2...9
- for ( var p = 0; p < ds_map_size( mapArrayOne ); p++ ) {
- var listName = ds_map_find_value( curr, "name" );
- var listTime = ds_map_find_value( curr, "time" );
- // Wert ausgeben
- show_debug_message( string(p) + " : " + string(listName) + " = " + string(listTime) );
- // zum nächsten Wert
- curr = ds_map_find_next( mapArrayOne, curr );
- }
- }
- }
- ds_map_destroy( readMap );
- } else {
- show_debug_message('File ' + string( global.highScoreFile ) + ' not found!');
- }
Als Ergebnis bekomme ich in der debug message folgendes ausgegeben.
Level: easy
Entries: 10
0 : Unknown 1 = 1:0:0.00
1 : Unknown 1 = 1:0:0.00
2 : Unknown 1 = 1:0:0.00
3 : Unknown 1 = 1:0:0.00
4 : Unknown 1 = 1:0:0.00
5 : Unknown 1 = 1:0:0.00
6 : Unknown 1 = 1:0:0.00
7 : Unknown 1 = 1:0:0.00
8 : Unknown 1 = 1:0:0.00
9 : Unknown 1 = 1:0:0.00
Level: medium
Entries: 10
0 : Unknown 1 = 1:0:0.00
1 : Unknown 1 = 1:0:0.00
2 : Unknown 1 = 1:0:0.00
3 : Unknown 1 = 1:0:0.00
4 : Unknown 1 = 1:0:0.00
5 : Unknown 1 = 1:0:0.00
6 : Unknown 1 = 1:0:0.00
7 : Unknown 1 = 1:0:0.00
8 : Unknown 1 = 1:0:0.00
9 : Unknown 1 = 1:0:0.00
Level: hard
Entries: 10
0 : Unknown 1 = 1:0:0.00
1 : Unknown 1 = 1:0:0.00
2 : Unknown 1 = 1:0:0.00
3 : Unknown 1 = 1:0:0.00
4 : Unknown 1 = 1:0:0.00
5 : Unknown 1 = 1:0:0.00
6 : Unknown 1 = 1:0:0.00
7 : Unknown 1 = 1:0:0.00
8 : Unknown 1 = 1:0:0.00
9 : Unknown 1 = 1:0:0.00
Hier wird aber nicht wie erwartet der Name und die Zeit von jedem einzelnen Eintrag ausgegeben, sondern überall der Erste von "easy".
Ich steig nicht dahinter, was ich falsch gemacht haben könnte.
Normalerweise sollte doch mit
der nächste Eintrag angesprochen werden, oder nicht?