diff options
| author | Simon <simon@hardwired.org.uk> | 2010-12-04 22:17:01 (GMT) |
|---|---|---|
| committer | Simon <simon@hardwired.org.uk> | 2010-12-04 22:17:01 (GMT) |
| commit | b54c0b693407b15042b7311c38ac45a19e4b3a63 (patch) | |
| tree | e55d8e4759e4bdc4d112c165bf2a02d05190e1d8 /src | |
| parent | 5d843e398cb28251d19f4240a0d9dbb7129c326f (diff) | |
| download | powder-b54c0b693407b15042b7311c38ac45a19e4b3a63.zip powder-b54c0b693407b15042b7311c38ac45a19e4b3a63.tar.gz | |
Particle life now saved as 16bit integer, increases limit and fixes saving of wire and other elements. Version 44 to reflect save format change
Diffstat (limited to 'src')
| -rw-r--r-- | src/main.c | 34 |
1 files changed, 26 insertions, 8 deletions
@@ -303,8 +303,13 @@ void *build_save(int *size, int x0, int y0, int w, int h) for(j=0; j<w*h; j++) { i = m[j]; - if(i) - d[p++] = (parts[i-1].life+3)/4; + if(i){ + //Everybody loves a 16bit int + //d[p++] = (parts[i-1].life+3)/4; + int ttlife = (int)parts[i-1].life; + d[p++] = ((ttlife&0xFF00)>>8); + d[p++] = (ttlife&0x00FF); + } } for(j=0; j<w*h; j++) { @@ -584,12 +589,25 @@ int parse_save(void *save, int size, int replace, int x0, int y0) i = m[j]; if(i) { - if(p >= size) - goto corrupt; - if(i <= NPART) - parts[i-1].life = d[p++]*4; - else - p++; + if(ver>=44){ + if(p >= size) { + goto corrupt; + } + if(i <= NPART) { + ttv = (d[p++])<<8; + ttv |= (d[p++]); + parts[i-1].life = ttv; + } else { + p+=2; + } + } else { + if(p >= size) + goto corrupt; + if(i <= NPART) + parts[i-1].life = d[p++]*4; + else + p++; + } } } for(j=0; j<w*h; j++) |
