From d03c80cb97712c06b80c6c0f72b813f462f829c6 Mon Sep 17 00:00:00 2001 From: Evan Debenham Date: Thu, 29 Jul 2021 13:18:41 -0400 Subject: [PATCH] v0.9.4: moved last bits of texture creation into TextureCache --- .../com/watabou/gltextures/TextureCache.java | 27 ++++++++++++++++--- .../src/main/java/com/watabou/noosa/Halo.java | 6 +++-- .../shatteredpixeldungeon/tiles/FogOfWar.java | 26 +++++++----------- 3 files changed, 38 insertions(+), 21 deletions(-) diff --git a/SPD-classes/src/main/java/com/watabou/gltextures/TextureCache.java b/SPD-classes/src/main/java/com/watabou/gltextures/TextureCache.java index 8faefd10f..6e6b78444 100644 --- a/SPD-classes/src/main/java/com/watabou/gltextures/TextureCache.java +++ b/SPD-classes/src/main/java/com/watabou/gltextures/TextureCache.java @@ -78,9 +78,30 @@ public class TextureCache { } } - - public synchronized static void add( Object key, SmartTexture tx ) { - all.put( key, tx ); + + //texture defaults to black and given size, but no assurance is made about this is another already exists + public synchronized static SmartTexture create( Object key, int width, int height ) { + + if (all.containsKey( key )) { + + return all.get( key ); + + } else { + + Pixmap pixmap = new Pixmap( width, height, Pixmap.Format.RGBA8888 ); + + pixmap.setColor(0x000000FF); + pixmap.fill(); + + SmartTexture tx = new SmartTexture( pixmap ); + + tx.filter( Texture.LINEAR, Texture.LINEAR ); + tx.wrap( Texture.CLAMP, Texture.CLAMP ); + + all.put( key, tx ); + + return tx; + } } public synchronized static void remove( Object key ){ diff --git a/SPD-classes/src/main/java/com/watabou/noosa/Halo.java b/SPD-classes/src/main/java/com/watabou/noosa/Halo.java index ab456002d..512ee6dfe 100644 --- a/SPD-classes/src/main/java/com/watabou/noosa/Halo.java +++ b/SPD-classes/src/main/java/com/watabou/noosa/Halo.java @@ -24,6 +24,7 @@ package com.watabou.noosa; import com.badlogic.gdx.graphics.Pixmap; import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.TextureCache; +import com.watabou.glwrap.Texture; public class Halo extends Image { @@ -38,12 +39,13 @@ public class Halo extends Image { super(); if (!TextureCache.contains( CACHE_KEY )) { - Pixmap pixmap = new Pixmap(2*RADIUS+1, 2*RADIUS+1, Pixmap.Format.RGBA8888); + + Pixmap pixmap = TextureCache.create( CACHE_KEY, 2*RADIUS+1, 2*RADIUS+1 ).bitmap; pixmap.setColor( 0xFFFFFF08 ); for (int i = 0; i < RADIUS; i+=2) { pixmap.fillCircle(RADIUS, RADIUS, (RADIUS - i)); } - TextureCache.add( CACHE_KEY, new SmartTexture( pixmap ) ); + } texture( CACHE_KEY ); diff --git a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/FogOfWar.java b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/FogOfWar.java index ad185534f..53245c496 100644 --- a/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/FogOfWar.java +++ b/core/src/main/java/com/shatteredpixel/shatteredpixeldungeon/tiles/FogOfWar.java @@ -24,9 +24,7 @@ package com.shatteredpixel.shatteredpixeldungeon.tiles; import com.badlogic.gdx.graphics.Pixmap; import com.shatteredpixel.shatteredpixeldungeon.Dungeon; import com.shatteredpixel.shatteredpixeldungeon.SPDSettings; -import com.watabou.gltextures.SmartTexture; import com.watabou.gltextures.TextureCache; -import com.watabou.glwrap.Texture; import com.watabou.noosa.Image; import com.watabou.noosa.NoosaScript; import com.watabou.noosa.NoosaScriptNoLighting; @@ -88,39 +86,34 @@ public class FogOfWar extends Image { */ public FogOfWar( int mapWidth, int mapHeight ) { - + super(); this.mapWidth = mapWidth; this.mapHeight = mapHeight; mapLength = mapHeight * mapWidth; - + pWidth = mapWidth * PIX_PER_TILE; pHeight = mapHeight * PIX_PER_TILE; - + width2 = 1; while (width2 < pWidth) { width2 <<= 1; } - + height2 = 1; while (height2 < pHeight) { height2 <<= 1; } - + float size = DungeonTilemap.SIZE / PIX_PER_TILE; width = width2 * size; height = height2 * size; - //TODO might be nice to compartmentalize the pixmap access and modification into texture/texturecache - Pixmap px = new Pixmap(width2, height2, Pixmap.Format.RGBA8888); - px.setBlending(Pixmap.Blending.None); - px.setColor(0x000000FF); - px.fill(); - SmartTexture tx = new SmartTexture(px, Texture.LINEAR, Texture.CLAMP, false); - TextureCache.add(FogOfWar.class, tx); - texture( tx ); - + String key = "FogOfWar" + width2 + "x" + height2; + texture(TextureCache.create(key, width2, height2)); + texture.bind(); + scale.set( size, size ); toUpdate = new ArrayList<>(); @@ -188,6 +181,7 @@ public class FogOfWar extends Image { } Pixmap fog = texture.bitmap; + fog.setBlending(Pixmap.Blending.None); int cell;