tweaks to texture sys

v5stable
Ondřej Hruška 11 years ago
parent 7777a61e32
commit 3abe1e6b33
  1. 1
      src/mightypork/gamecore/render/textures/QuadGrid.java
  2. 73
      src/mightypork/gamecore/render/textures/TextureBank.java
  3. 13
      src/mightypork/gamecore/render/textures/TxSheet.java
  4. 54
      src/mightypork/rogue/Res.java
  5. 5
      src/mightypork/util/control/timing/TimedTask.java

@ -17,7 +17,6 @@ public class QuadGrid {
private double tileW; private double tileW;
private double tileH; private double tileH;
public QuadGrid(GLTexture tx, int tilesX, int tilesY) { public QuadGrid(GLTexture tx, int tilesX, int tilesY) {
this.tx = tx; this.tx = tx;
this.txWidth = tilesX; this.txWidth = tilesX;

@ -18,6 +18,10 @@ import mightypork.util.error.KeyAlreadyExistsException;
*/ */
public class TextureBank extends AppAdapter { public class TextureBank extends AppAdapter {
private final Map<String, GLTexture> textures = new HashMap<>();
private final Map<String, TxQuad> quads = new HashMap<>();
private final Map<String, TxSheet> sheets = new HashMap<>();
/** /**
* @param app app access * @param app app access
*/ */
@ -25,12 +29,6 @@ public class TextureBank extends AppAdapter {
super(app); super(app);
} }
private final Map<String, GLTexture> textures = new HashMap<>();
private final Map<String, TxQuad> quads = new HashMap<>();
private final Map<String, TxSheet> sheets = new HashMap<>();
/** /**
* Load a texture from resource. A full-sized quad with the same key will be * Load a texture from resource. A full-sized quad with the same key will be
@ -72,22 +70,6 @@ public class TextureBank extends AppAdapter {
} }
/**
* Make a quad from texture, and add it to quads registry.
*
* @param quadKey key
* @param texture source texture
* @param uvs rect
* @return the created quad
*/
public TxQuad makeQuad(String quadKey, GLTexture texture, Rect uvs)
{
TxQuad quad = texture.makeQuad(uvs);
addQuad(quadKey, quad);
return quad;
}
/** /**
* Add already created quad to the quad registry * Add already created quad to the quad registry
* *
@ -102,25 +84,6 @@ public class TextureBank extends AppAdapter {
} }
/**
* make a sprite sheet originating at given quad, spanning right and down.
*
* @param sheetKey key
* @param origin starting quad
* @param width sheet width (multiplies of origin width)
* @param height sheet height (multiplies of origin height)
* @return the created sheet
*/
public TxSheet makeSheet(String sheetKey, TxQuad origin, int width, int height)
{
TxSheet sheet = origin.makeSheet(width, height);
addSheet(sheetKey, sheet);
return sheet;
}
/** /**
* Add an already created sheet * Add an already created sheet
* *
@ -143,11 +106,11 @@ public class TextureBank extends AppAdapter {
*/ */
public TxQuad getQuad(String key) public TxQuad getQuad(String key)
{ {
final TxQuad q = quads.get(key); final TxQuad qu = quads.get(key);
if (q == null) throw new RuntimeException("There's no quad called " + key + "!"); if (qu == null) throw new RuntimeException("There's no quad called " + key + "!");
return q; return qu;
} }
@ -159,11 +122,27 @@ public class TextureBank extends AppAdapter {
*/ */
public GLTexture getTexture(String key) public GLTexture getTexture(String key)
{ {
final GLTexture t = textures.get(key); final GLTexture tx = textures.get(key);
if (tx == null) throw new RuntimeException("There's no texture called " + key + "!");
return tx;
}
/**
* Get a {@link TxSheet} for key
*
* @param key sheet key
* @return the sheet
*/
public TxSheet getSheet(String key)
{
final TxSheet sh = sheets.get(key);
if (t == null) throw new RuntimeException("There's no texture called " + key + "!"); if (sh == null) throw new RuntimeException("There's no sheet called " + key + "!");
return t; return sh;
} }
} }

@ -87,4 +87,17 @@ public class TxSheet {
randForSeed.setSeed(seed); randForSeed.setSeed(seed);
return getQuad(randForSeed.nextInt(count)); return getQuad(randForSeed.nextInt(count));
} }
/**
* Get random TxQuad from this sheet
*
* @param seed random number generator seed (double will be converted to
* long)
* @return the picked quad
*/
public TxQuad getRandomQuad(double seed)
{
return getRandomQuad(Double.doubleToLongBits(seed));
}
} }

@ -4,14 +4,12 @@ package mightypork.rogue;
import mightypork.gamecore.audio.SoundBank; import mightypork.gamecore.audio.SoundBank;
import mightypork.gamecore.audio.players.EffectPlayer; import mightypork.gamecore.audio.players.EffectPlayer;
import mightypork.gamecore.audio.players.LoopPlayer; import mightypork.gamecore.audio.players.LoopPlayer;
import mightypork.gamecore.control.AppAccess;
import mightypork.gamecore.control.BaseApp; import mightypork.gamecore.control.BaseApp;
import mightypork.gamecore.render.fonts.FontBank; import mightypork.gamecore.render.fonts.FontBank;
import mightypork.gamecore.render.fonts.GLFont; import mightypork.gamecore.render.fonts.GLFont;
import mightypork.gamecore.render.fonts.Glyphs; import mightypork.gamecore.render.fonts.Glyphs;
import mightypork.gamecore.render.fonts.impl.DeferredFont; import mightypork.gamecore.render.fonts.impl.DeferredFont;
import mightypork.gamecore.render.textures.*; import mightypork.gamecore.render.textures.*;
import mightypork.util.constraints.rect.Rect;
import org.newdawn.slick.opengl.Texture; import org.newdawn.slick.opengl.Texture;
@ -31,7 +29,7 @@ public final class Res {
/** /**
* Load on behalf of given {@link AppAccess} * Load on behalf of given base app
* *
* @param app app access * @param app app access
*/ */
@ -52,14 +50,10 @@ public final class Res {
private static void loadFonts() private static void loadFonts()
{ {
DeferredFont font; fonts.loadFont("polygon_pixel", new DeferredFont("/res/font/PolygonPixel5x7Standard.ttf", Glyphs.basic, 16));
fonts.loadFont("press_start", new DeferredFont("/res/font/PressStart2P.ttf", Glyphs.basic, 16));
font = new DeferredFont("/res/font/PolygonPixel5x7Standard.ttf", Glyphs.basic, 16);
fonts.loadFont("polygon_pixel", font);
font = new DeferredFont("/res/font/PressStart2P.ttf", Glyphs.basic, 16);
fonts.loadFont("press_start", font);
// aliases based on concrete usage
fonts.addAlias("default", "polygon_pixel"); fonts.addAlias("default", "polygon_pixel");
fonts.addAlias("main_menu_button", "press_start"); fonts.addAlias("main_menu_button", "press_start");
fonts.addAlias("main_menu_title", "press_start"); fonts.addAlias("main_menu_title", "press_start");
@ -68,32 +62,20 @@ public final class Res {
private static void loadTextures() private static void loadTextures()
{ {
DeferredTexture texture; GLTexture texture;
texture = new DeferredTexture("/res/img/kitten.png"); texture = textures.loadTexture("test.kitten", "/res/img/kitten.png", FilterMode.LINEAR, WrapMode.CLAMP);
texture.setFilter(FilterMode.LINEAR);
texture.setWrap(WrapMode.CLAMP); texture = textures.loadTexture("gui1", "/res/img/gui1.png", FilterMode.NEAREST, WrapMode.CLAMP);
textures.loadTexture("test.kitten", texture); QuadGrid gui = texture.grid(4, 4);
textures.addQuad("item_frame", gui.makeQuad(0, 0));
texture = new DeferredTexture("/res/img/gui1.png"); textures.addQuad("sword", gui.makeQuad(1, 0));
texture.setFilter(FilterMode.NEAREST); textures.addQuad("meat", gui.makeQuad(2, 0));
texture.setWrap(WrapMode.CLAMP); textures.addQuad("heart_on", gui.makeQuad(.0, 1, .5, .5));
textures.loadTexture("gui1", texture); textures.addQuad("heart_off", gui.makeQuad(.5, 1, .5, .5));
QuadGrid guiGrid = texture.grid(4, 4); textures.addQuad("xp_on", gui.makeQuad(0, 1.5, .5, .5));
textures.addQuad("xp_off", gui.makeQuad(.5, 1.5, .5, .5));
//@formatter:off textures.addQuad("panel", gui.makeQuad(0, 3.75, 4, .25));
textures.addQuad("item_frame", guiGrid.makeQuad(0, 0));
textures.addQuad("sword", guiGrid.makeQuad(1, 0));
textures.addQuad("meat", guiGrid.makeQuad(2, 0));
textures.addQuad("heart_on", guiGrid.makeQuad(.0, 1, .5, .5));
textures.addQuad("heart_off", guiGrid.makeQuad(.5, 1, .5, .5));
textures.addQuad("xp_on", guiGrid.makeQuad(0, 1.5, .5, .5));
textures.addQuad("xp_off", guiGrid.makeQuad(.5, 1.5, .5, .5));
textures.addQuad("panel", guiGrid.makeQuad(0, 3.75, 4, .25));
//@formatter:off
} }

@ -4,6 +4,11 @@ package mightypork.util.control.timing;
import mightypork.util.constraints.num.mutable.NumAnimated; import mightypork.util.constraints.num.mutable.NumAnimated;
/**
* Delayed runnable controlled by delta timing.
*
* @author MightyPork
*/
public abstract class TimedTask implements Runnable, Updateable { public abstract class TimedTask implements Runnable, Updateable {
private final NumAnimated timer = new NumAnimated(0); private final NumAnimated timer = new NumAnimated(0);

Loading…
Cancel
Save