1
0

SL.gml 1.5 KB

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