summaryrefslogtreecommitdiff
path: root/src/elements
diff options
context:
space:
mode:
authorjacksonmj <mj-pt@jacksonmj.co.uk>2011-04-06 12:36:56 (GMT)
committer Simon <simon@hardwired.org.uk>2011-04-08 10:10:41 (GMT)
commit29e41a0a0cfb9a83802fc3a3fe283a6d272b3331 (patch)
treee8d398845c3f62fb4b8e76c816f28104371d06f1 /src/elements
parent63f3f90c555dfc3d37bbf4dc5230f16055f13135 (diff)
downloadpowder-29e41a0a0cfb9a83802fc3a3fe283a6d272b3331.zip
powder-29e41a0a0cfb9a83802fc3a3fe283a6d272b3331.tar.gz
Portal orbital effects stop more smoothly
When fe==0, dots finish moving to destinations before disappearing
Diffstat (limited to 'src/elements')
-rw-r--r--src/elements/prti.c22
-rw-r--r--src/elements/prto.c26
2 files changed, 22 insertions, 26 deletions
diff --git a/src/elements/prti.c b/src/elements/prti.c
index 30f86ae..c206115 100644
--- a/src/elements/prti.c
+++ b/src/elements/prti.c
@@ -41,32 +41,28 @@ int update_PRTI(UPDATE_FUNC_ARGS) {
}
}
-
- if (fe) {
+ if (fe || parts[i].life || parts[i].ctype) {
int orbd[4] = {0, 0, 0, 0}; //Orbital distances
int orbl[4] = {0, 0, 0, 0}; //Orbital locations
if (!parts[i].life) parts[i].life = rand();
if (!parts[i].ctype) parts[i].ctype = rand();
orbitalparts_get(parts[i].life, parts[i].ctype, orbd, orbl);
for (r = 0; r < 4; r++) {
- if (orbd[r]>1) {
+ if (orbd[r]>12) {
orbd[r] -= 12;
- if (orbd[r]<1) {
+ orbl[r] += 2;
+ orbl[r] = orbl[r]%255;
+ } else {
+ if (fe) {
orbd[r] = (rand()%128)+128;
orbl[r] = rand()%255;
- } else {
- orbl[r] += 2;
- orbl[r] = orbl[r]%255;
}
- } else {
- orbd[r] = (rand()%128)+128;
- orbl[r] = rand()%255;
+ else {
+ orbd[r] = orbl[r] = 0;
+ }
}
}
orbitalparts_set(&parts[i].life, &parts[i].ctype, orbd, orbl);
- } else {
- parts[i].life = 0;
- parts[i].ctype = 0;
}
return 0;
}
diff --git a/src/elements/prto.c b/src/elements/prto.c
index 46c7250..1fb4105 100644
--- a/src/elements/prto.c
+++ b/src/elements/prto.c
@@ -62,30 +62,30 @@ int update_PRTO(UPDATE_FUNC_ARGS) {
}
}
}
- if (fe) {
+
+ if (fe || parts[i].ctype) {
int orbd[4] = {0, 0, 0, 0}; //Orbital distances
int orbl[4] = {0, 0, 0, 0}; //Orbital locations
- if (!parts[i].life) parts[i].life = rand();
- if (!parts[i].ctype) parts[i].life = rand();
+ if (!parts[i].life || !(~parts[i].life)) parts[i].life = rand();
+ if (!parts[i].ctype) parts[i].ctype = rand();
orbitalparts_get(parts[i].life, parts[i].ctype, orbd, orbl);
for (r = 0; r < 4; r++) {
- if (orbd[r]<254) {
+ if (orbd[r]<239) {
orbd[r] += 16;
- if (orbd[r]>254) {
- orbd[r] = 0;
- orbl[r] = rand()%255;
- }
//orbl[r] += 1;
//orbl[r] = orbl[r]%255;
} else {
- orbd[r] = 0;
- orbl[r] = rand()%255;
+ if (fe) {
+ orbd[r] = 0;
+ orbl[r] = rand()%255;
+ }
+ else {
+ orbd[r] = 255;
+ orbl[r] = 0;
+ }
}
}
orbitalparts_set(&parts[i].life, &parts[i].ctype, orbd, orbl);
- } else {
- parts[i].life = 0;
- parts[i].ctype = 0;
}
return 0;
}