Guest User

Untitled

a guest
Jan 15th, 2018
79
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //ok so like here is the fun part where we save the whole ship
  2. filename = get_save_filename("Ship File|*.shp",ship_name+".shp")
  3. show_message(filename)
  4.  
  5. //user cancled
  6. if(filename = ""){exit}
  7.  
  8. //extention not on filename
  9. if(string_pos(filename,".shp") = 0){
  10. filename+=".shp"
  11. }
  12.  
  13. //step 1 - build ship arrays
  14. s_parts = 0
  15. global.tid = id
  16. with(SHIP){
  17. tid = global.tid
  18. tid.s_parts+=1
  19. tid.s_part[tid.s_parts] = id
  20. }
  21.  
  22. //step 2 - write ship buffer + fill meta array table thigny
  23. s_parts_buffer = createbuffer()
  24. //s_meta_ship_list the array to use
  25.  
  26. n=1
  27. while(n<=s_parts){
  28. s_meta_ship_list[n] = getpos(0,s_parts_buffer) //saves starting location of this ship part in that list
  29. writeint(s_part[n].part_id,s_parts_buffer)
  30. writeint(s_part[n].x,s_parts_buffer)
  31. writeint(s_part[n].y,s_parts_buffer)
  32. n+=1
  33. }
  34. s_ship_size = buffsize(s_parts_buffer)
  35.  
  36. //step 3 - write meta buffer
  37. s_meta_buffer = createbuffer()
  38. writestring(ship_name,s_meta_buffer)
  39. writeint(0,s_meta_buffer)
  40. writeint(s_parts,s_meta_buffer)
  41. n=1
  42. while(n<=s_parts){
  43. writeint(s_meta_ship_list[n],s_meta_buffer)
  44. n+=1
  45. }
  46.  
  47. s_meta_size = buffsize(s_meta_buffer)
  48. //step 4 - write header buffer
  49. s_header_buffer = createbuffer()
  50. writebyte(1,s_header_buffer)
  51. //start of meta is currently at 17
  52. writeint(17,s_header_buffer)
  53. writeint(s_meta_size,s_header_buffer)
  54. //start of ship is start of meta + meta size
  55. writeint(17+s_meta_size,s_header_buffer)
  56. writeint(s_ship_size,s_header_buffer)
  57.  
  58. //data is buffered up, open a file and write it
  59.  
  60. file = fileopen(filename,1)
  61. filewrite(file,s_header_buffer)
  62. filewrite(file,s_meta_buffer)
  63. filewrite(file,s_parts_buffer)
  64. fileclose(file)
  65. //free the buffers
  66. freebuffer(s_header_buffer)
  67. freebuffer(s_meta_buffer)
  68. freebuffer(s_parts_buffer)
  69.  
  70. //file is saved
Add Comment
Please, Sign In to add comment