v0.4.2b: removed blood associated with the heroes

This commit is contained in:
Evan Debenham 2016-09-14 17:58:07 -04:00
parent 5da611f452
commit ae6d4ad842
3 changed files with 22 additions and 15 deletions

View File

@ -54,7 +54,7 @@ public class ColorMath {
} else if (p >= 1) { } else if (p >= 1) {
return colors[colors.length-1]; return colors[colors.length-1];
} }
int segment = (int)(colors.length * p); int segment = (int)((colors.length-1) * p);
return interpolate( colors[segment], colors[segment+1], (p * (colors.length - 1)) % 1 ); return interpolate( colors[segment], colors[segment+1], (p * (colors.length - 1)) % 1 );
} }

View File

@ -31,6 +31,7 @@ import com.watabou.noosa.Camera;
import com.watabou.noosa.Image; import com.watabou.noosa.Image;
import com.watabou.noosa.TextureFilm; import com.watabou.noosa.TextureFilm;
import com.watabou.utils.Callback; import com.watabou.utils.Callback;
import com.watabou.utils.PointF;
public class HeroSprite extends CharSprite { public class HeroSprite extends CharSprite {
@ -118,6 +119,18 @@ public class HeroSprite extends CharSprite {
play( read ); play( read );
} }
@Override
public void bloodBurstA(PointF from, int damage) {
//Does nothing.
/*
* This is both for visual clarity, and also for content ratings regarding violence
* towards human characters. The heroes are the only human or human-like characters which
* participate in combat, so removing all blood associated with them is a simple way to
* reduce the violence rating of the game.
*/
}
@Override @Override
public void update() { public void update() {
sleeping = ch.isAlive() && ((Hero)ch).resting; sleeping = ch.isAlive() && ((Hero)ch).resting;

View File

@ -34,6 +34,7 @@ import com.shatteredpixel.shatteredpixeldungeon.windows.WndJournal;
import com.watabou.input.Touchscreen.Touch; import com.watabou.input.Touchscreen.Touch;
import com.watabou.noosa.BitmapText; import com.watabou.noosa.BitmapText;
import com.watabou.noosa.Camera; import com.watabou.noosa.Camera;
import com.watabou.noosa.Game;
import com.watabou.noosa.Image; import com.watabou.noosa.Image;
import com.watabou.noosa.NinePatch; import com.watabou.noosa.NinePatch;
import com.watabou.noosa.TouchArea; import com.watabou.noosa.TouchArea;
@ -42,12 +43,13 @@ import com.watabou.noosa.particles.BitmaskEmitter;
import com.watabou.noosa.particles.Emitter; import com.watabou.noosa.particles.Emitter;
import com.watabou.noosa.ui.Button; import com.watabou.noosa.ui.Button;
import com.watabou.noosa.ui.Component; import com.watabou.noosa.ui.Component;
import com.watabou.utils.ColorMath;
public class StatusPane extends Component { public class StatusPane extends Component {
private NinePatch bg; private NinePatch bg;
private Image avatar; private Image avatar;
private Emitter blood; private float warning;
private int lastTier = 0; private int lastTier = 0;
@ -98,13 +100,6 @@ public class StatusPane extends Component {
avatar = HeroSprite.avatar( Dungeon.hero.heroClass, lastTier ); avatar = HeroSprite.avatar( Dungeon.hero.heroClass, lastTier );
add( avatar ); add( avatar );
blood = new BitmaskEmitter( avatar );
blood.pour( BloodParticle.FACTORY, 0.3f );
blood.autoKill = false;
blood.on = false;
add( blood );
compass = new Compass( Dungeon.level.exit ); compass = new Compass( Dungeon.level.exit );
add( compass ); add( compass );
@ -184,14 +179,13 @@ public class StatusPane extends Component {
float max = Dungeon.hero.HT; float max = Dungeon.hero.HT;
if (!Dungeon.hero.isAlive()) { if (!Dungeon.hero.isAlive()) {
avatar.tint( 0x000000, 0.6f ); avatar.tint(0x000000, 0.5f);
blood.on = false; } else if ((health/max) < 0.3f) {
} else if ((health/max) < 0.25f) { warning += Game.elapsed * 5f *(0.4f - (health/max));
avatar.tint( 0xcc0000, 0.4f ); warning %= 1f;
blood.on = true; avatar.tint(ColorMath.interpolate(warning, 0x660000, 0xCC0000, 0x660000), 0.5f );
} else { } else {
avatar.resetColor(); avatar.resetColor();
blood.on = false;
} }
hp.scale.x = Math.max( 0, (health-shield)/max); hp.scale.x = Math.max( 0, (health-shield)/max);