feat: dynamic texture coloring

This commit is contained in:
Laureηt 2021-05-12 18:36:21 +02:00
parent 026c2aaef9
commit f5d9cbc011
3 changed files with 14 additions and 17 deletions

View file

@ -83,7 +83,7 @@ public class Arrow extends EntityQuad {
} }
@Override @Override
public void draw (Batch batch, float parentAlpha) { public void draw(Batch batch, float parentAlpha) {
batch.draw(texture, getPosition().x - 0.8f * getWidth(), getPosition().y - getHeight()/2 - 10, 0.8f * this.getWidth(), this.getHeight()/2 + 10, getWidth(), 20 + getHeight(), batch.draw(texture, getPosition().x - 0.8f * getWidth(), getPosition().y - getHeight()/2 - 10, 0.8f * this.getWidth(), this.getHeight()/2 + 10, getWidth(), 20 + getHeight(),
1, 1, getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false); 1, 1, getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false);
super.draw(batch, parentAlpha); super.draw(batch, parentAlpha);

View file

@ -38,7 +38,7 @@ public class Planet extends EntityCircle {
} }
@Override @Override
public void draw (Batch batch, float parentAlpha) { public void draw(Batch batch, float parentAlpha) {
batch.draw(texture, getPosition().x - this.radius, getPosition().y - this.radius, this.radius, this.radius, 2 * this.radius, 2 * this.radius, batch.draw(texture, getPosition().x - this.radius, getPosition().y - this.radius, this.radius, this.radius, 2 * this.radius, 2 * this.radius,
1, 1, getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false); 1, 1, getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false);
super.draw(batch, parentAlpha); super.draw(batch, parentAlpha);

View file

@ -34,21 +34,18 @@ public class Player extends EntityQuad {
pm.setBlending(Pixmap.Blending.None); pm.setBlending(Pixmap.Blending.None);
for (int x = 0; x < pm.getWidth(); x++) { for (int x = 0; x < pm.getWidth(); x++) {
for (int y = 0; y < pm.getHeight(); y++) { for (int y = 0; y < pm.getHeight(); y++) {
int p = pm.getPixel(x, y);
int r = (int)( (p & 0xff000000)>>24 ); Color pc = new Color();
int g = (int)( (p & 0x00ff0000)>>16 ); Color.rgba8888ToColor(pc, pm.getPixel(x, y));
int b = (int)( (p & 0x0000ff00)>>8 );
int a = (int)( p & 0x000000ff ); if (pc.equals(Color.WHITE)) { // pc.r == 1 && pc.g == 1 && pc.b == 1
if (p != 0) { pc = Color.RED;
if (r == 255 && g == 255 && b == 255) { // pc.r = 1;
r = 255; // pc.g = 0;
g = 0; // pc.b = 0;
b = 0;
a = 255;
p = (int)( r <<24 | g << 16 | b << 8 | a );
}
} }
pm.drawPixel(x, y, p);
pm.drawPixel(x, y, Color.rgba8888(pc));
} }
} }
texture = new Texture(pm); texture = new Texture(pm);
@ -64,7 +61,7 @@ public class Player extends EntityQuad {
} }
@Override @Override
public void draw (Batch batch, float parentAlpha) { public void draw(Batch batch, float parentAlpha) {
batch.draw(texture, getPosition().x - getWidth()/2, getPosition().y - getHeight()/2, this.getWidth()/2, this.getHeight()/2, getWidth(), getHeight(), batch.draw(texture, getPosition().x - getWidth()/2, getPosition().y - getHeight()/2, this.getWidth()/2, this.getHeight()/2, getWidth(), getHeight(),
1, 1, getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false); 1, 1, getRotation(), 0, 0, texture.getWidth(), texture.getHeight(), false, false);
super.draw(batch, parentAlpha); super.draw(batch, parentAlpha);