1
0

SL.gml 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. function get_default_save_data()
  2. {
  3. return
  4. {
  5. player:
  6. {
  7. maxHP: 5,
  8. maxINK: 9,
  9. Credit: 0,
  10. abilities:
  11. {
  12. dash: false,
  13. wall_climb: false,
  14. double_jump: false
  15. }
  16. },
  17. world:
  18. {
  19. current_room: "rTest_2",
  20. destroyed_objects: {},
  21. defeated_boss: {}
  22. }/*,
  23. meta:
  24. {
  25. play_time: 0,
  26. save_date: ""
  27. }*/
  28. }
  29. }
  30. function save_game_to_disk()
  31. {
  32. // 更新元数据
  33. // global.save_data.meta.save_date = date_datetime_string(date_current_datetime());
  34. // 序列化
  35. var _json_string = json_stringify(global.save_data);
  36. // 使用buffer写入
  37. var _buffer = buffer_create(string_byte_length(_json_string) + 1, buffer_fixed, 1);
  38. buffer_write(_buffer, buffer_string, _json_string);
  39. buffer_save(_buffer, global.save_filename);
  40. buffer_delete(_buffer);
  41. if global.developer_mode
  42. show_debug_message("The game has been saved to " + global.save_filename);
  43. }
  44. function load_game_from_disk()
  45. {
  46. if !file_exists(global.save_filename)
  47. return;
  48. // 使用buffer读取
  49. var _buffer = buffer_load(global.save_filename);
  50. var _json_string = buffer_read(_buffer, buffer_string);
  51. buffer_delete(_buffer);
  52. // 反序列化
  53. var _loaded_data = json_parse(_json_string);
  54. // 覆盖当前的全局存档数据
  55. global.save_data = _loaded_data;
  56. room_goto(asset_get_index(global.save_data.world.current_room));
  57. global.in_game_manager = icl(oInGameManager);
  58. }