summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon <simon@hardwired.org.uk>2010-12-04 22:17:01 (GMT)
committer Simon <simon@hardwired.org.uk>2010-12-04 22:17:01 (GMT)
commitb54c0b693407b15042b7311c38ac45a19e4b3a63 (patch)
treee55d8e4759e4bdc4d112c165bf2a02d05190e1d8
parent5d843e398cb28251d19f4240a0d9dbb7129c326f (diff)
downloadpowder-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
-rw-r--r--includes/defines.h2
-rw-r--r--src/main.c34
2 files changed, 27 insertions, 9 deletions
diff --git a/includes/defines.h b/includes/defines.h
index dad3bef..11b9a53 100644
--- a/includes/defines.h
+++ b/includes/defines.h
@@ -7,7 +7,7 @@
#define PATH_SEP "/"
#endif
-#define SAVE_VERSION 43
+#define SAVE_VERSION 44
#define MINOR_VERSION 1
#define IDENT_VERSION "G" //Change this if you're not Simon! It should be a single letter.
#define BETA
diff --git a/src/main.c b/src/main.c
index 9260abf..d548a45 100644
--- a/src/main.c
+++ b/src/main.c
@@ -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++)