Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //ok so like here is the fun part where we save the whole ship
- filename = get_save_filename("Ship File|*.shp",ship_name+".shp")
- show_message(filename)
- //user cancled
- if(filename = ""){exit}
- //extention not on filename
- if(string_pos(filename,".shp") = 0){
- filename+=".shp"
- }
- //step 1 - build ship arrays
- s_parts = 0
- global.tid = id
- with(SHIP){
- tid = global.tid
- tid.s_parts+=1
- tid.s_part[tid.s_parts] = id
- }
- //step 2 - write ship buffer + fill meta array table thigny
- s_parts_buffer = createbuffer()
- //s_meta_ship_list the array to use
- n=1
- while(n<=s_parts){
- s_meta_ship_list[n] = getpos(0,s_parts_buffer) //saves starting location of this ship part in that list
- writeint(s_part[n].part_id,s_parts_buffer)
- writeint(s_part[n].x,s_parts_buffer)
- writeint(s_part[n].y,s_parts_buffer)
- n+=1
- }
- s_ship_size = buffsize(s_parts_buffer)
- //step 3 - write meta buffer
- s_meta_buffer = createbuffer()
- writestring(ship_name,s_meta_buffer)
- writeint(0,s_meta_buffer)
- writeint(s_parts,s_meta_buffer)
- n=1
- while(n<=s_parts){
- writeint(s_meta_ship_list[n],s_meta_buffer)
- n+=1
- }
- s_meta_size = buffsize(s_meta_buffer)
- //step 4 - write header buffer
- s_header_buffer = createbuffer()
- writebyte(1,s_header_buffer)
- //start of meta is currently at 17
- writeint(17,s_header_buffer)
- writeint(s_meta_size,s_header_buffer)
- //start of ship is start of meta + meta size
- writeint(17+s_meta_size,s_header_buffer)
- writeint(s_ship_size,s_header_buffer)
- //data is buffered up, open a file and write it
- file = fileopen(filename,1)
- filewrite(file,s_header_buffer)
- filewrite(file,s_meta_buffer)
- filewrite(file,s_parts_buffer)
- fileclose(file)
- //free the buffers
- freebuffer(s_header_buffer)
- freebuffer(s_meta_buffer)
- freebuffer(s_parts_buffer)
- //file is saved
Add Comment
Please, Sign In to add comment