Skip to content

Commit ee49435

Browse files
new timeline fixes
1 parent 49762e3 commit ee49435

File tree

3 files changed

+28
-22
lines changed

3 files changed

+28
-22
lines changed

RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/Actor.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -206,13 +206,16 @@ private static void processReaTime(float elapsed) {
206206

207207
public static void processTurnBased(float elapsed) {
208208
Hero hero = Dungeon.hero;
209+
if(!hero.isAlive()) {
210+
if (motionInProgress()) {
211+
return;
212+
}
213+
}
209214
// action still in progress
210215
if (current == hero && !current.timeout()) {
211216
return;
212217
}
213218

214-
CharSprite heroSprite = hero.getSprite();
215-
216219
GLog.debug("Main loop start");
217220
while ((current = nextActor()) != null) {
218221
now = current.time;
@@ -222,11 +225,15 @@ public static void processTurnBased(float elapsed) {
222225
return;
223226
}
224227
}
228+
225229
GLog.debug("actor %s %4.1f hero: %4.1f now: %4.1f", current, current.time, hero.actorTime(), now);
226230

227231
if (current != hero) {
228232
current.act();
229233
current = null;
234+
if(!hero.isAlive()) {
235+
break;
236+
}
230237
} else {
231238
current.act();
232239
break;

RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/Char.java

Lines changed: 15 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1237,21 +1237,17 @@ public void updateSprite() {
12371237
}
12381238

12391239
private void updateSprite(CharSprite sprite) {
1240-
if(! isOnStage()) {
1240+
if(!isOnStage()) {
12411241
sprite = DummySprite.instance;
1242-
}
1243-
if ( level().cellValid(getPos())) {
1244-
sprite.setVisible(Dungeon.isCellVisible(getPos()) && invisible >= 0);
12451242
} else {
1246-
EventCollector.logException("invalid pos " + getPos() + " for:" + this + ":" + getEntityKind());
1243+
if (level().cellValid(getPos())) {
1244+
sprite.setVisible(Dungeon.isCellVisible(getPos()) && invisible >= 0);
1245+
} else {
1246+
EventCollector.logException("invalid pos " + getPos() + " for:" + this + ":" + getEntityKind());
1247+
}
12471248
}
12481249
GameScene.addMobSpriteDirect(this, sprite);
12491250

1250-
if (isOnStage()) {
1251-
assert (sprite.getParent() != null);
1252-
}
1253-
1254-
12551251
if (sprite.getParent() == null) {
12561252
String err = String.format("sprite addition failed for %s %b", getEntityKind(), GameScene.isSceneReady());
12571253
GLog.debug(err);
@@ -1281,19 +1277,16 @@ public CharSprite getSprite() {
12811277
}
12821278

12831279
if (sprite == null) {
1284-
12851280
if (!GameScene.mayCreateSprites()) {
12861281
throw new TrackedRuntimeException("scene not ready for " + getEntityKind());
12871282
}
1288-
1289-
if (Util.isDebug()) {
1290-
if (!isAlive()) {
1291-
//throw new TrackedRuntimeException("its dead! leave it alone! " + getEntityKind());
1292-
}
1283+
if (isAlive()) {
1284+
sprite = newSprite();
1285+
sprite.lightness(lightness);
1286+
setGlowing(glowColor, glowPeriod);
1287+
} else {
1288+
sprite = DummySprite.instance;
12931289
}
1294-
sprite = newSprite();
1295-
sprite.lightness(lightness);
1296-
setGlowing(glowColor, glowPeriod);
12971290
}
12981291

12991292
if (sprite == null) {
@@ -1306,7 +1299,9 @@ public CharSprite getSprite() {
13061299
updateSprite(sprite);
13071300
}
13081301

1309-
assert (sprite.getParent() != null);
1302+
if(sprite.getParent() == null) {
1303+
sprite = DummySprite.instance;
1304+
}
13101305

13111306
return sprite;
13121307
}

RemixedDungeon/src/main/java/com/watabou/pixeldungeon/actors/hero/Hero.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,10 @@ public void damage(int dmg, @NotNull NamedEntityKind src) {
406406
restoreHealth = false;
407407
super.damage(dmg, src);
408408

409+
if (!isAlive()) {
410+
return;
411+
}
412+
409413
setControlTarget(this);
410414

411415
if (!myMove()) {

0 commit comments

Comments
 (0)