Blame |
Last modification |
View Log
| RSS feed
package com.gebauz.bauzoid.graphics.sprite;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.files.FileHandle;
import com.gebauz.bauzoid.app.Consts;
import com.gebauz.bauzoid.parser.Preprocessor;
import com.gebauz.bauzoid.parser.ScanException;
import com.gebauz.bauzoid.parser.Tokenizer;
/** Utility functionality for sprites. */
public class SpriteUtil
{
public static final String LOG_TAG = Consts.
LOG_TAG +
":SpriteUtil";
public static boolean verbose =
true;
private SpriteUtil
() {}
public static void log
(String tag,
String msg
)
{
if (verbose
)
Gdx.
app.
log(tag, msg
);
}
static public SpriteRegionDefinition readSpriteRegionInfo
(FileHandle file
)
{
String fileContents = Preprocessor.
stripComments(file.
readString());
SpriteRegionDefinition spriteInfo =
new SpriteRegionDefinition
();
try
{
Tokenizer tokenizer =
new Tokenizer
(fileContents
);
tokenizer.
setStringDelimiter(new char[] {'\'',
'"'} );
while (!tokenizer.
checkNoMoreTokens())
{
String identifier = tokenizer.
readIdentifier();
if (identifier.
equalsIgnoreCase("frame"))
{
spriteInfo.
frames.
add(readFrameLine
(tokenizer
));
}
else
{
throw new ScanException
(LOG_TAG,
"Syntax error at: " + tokenizer.
getSurroundings());
}
}
}
catch (ScanException e
)
{
e.
log(LOG_TAG
);
return null;
}
if (spriteInfo.
frames.
size() ==
0)
{
log
(LOG_TAG,
"Atlas definition does not contain any frame information!");
return null;
}
return spriteInfo
;
}
/* static public AtlasSprite createAtlasSpriteFromFile(Graphics graphics, String textureFile, FileHandle file)
{
AtlasDefinition spriteInfo = readAtlasSpriteInfo(file);
if (spriteInfo != null)
{
AtlasSprite sprite = new AtlasSprite(graphics, textureFile);
sprite.init();
SpriteRegion regions[] = new SpriteRegion[spriteInfo.frames.size()];
for (int i = 0; i < spriteInfo.frames.size(); i++)
{
regions[i] = new SpriteRegion(sprite.getTexture(), spriteInfo.frames.get(i).x, spriteInfo.frames.get(i).y, spriteInfo.frames.get(i).w, spriteInfo.frames.get(i).h);
}
sprite.setRegions(regions);
return sprite;
}
return null;
}*/
/*static private String readTextureLine(Tokenizer t) throws ScanException
{
String result = t.readString();
t.readToken(";");
return result;
}*/
static private SpriteRegionDefinition.
FrameInfo readFrameLine
(Tokenizer t
) throws ScanException
{
float x =
0;
float y =
0;
float w =
0;
float h =
0;
x = t.
readNumber();
t.
readToken(", ");
y = t.
readNumber();
t.
readToken(", ");
w = t.
readNumber();
t.
readToken(", ");
h = t.
readNumber();
t.
readToken(";");
return new SpriteRegionDefinition.
FrameInfo(x, y, w, h
);
}
// public AnimatedSprite createAnimatedSpriteFromFile(Graphics graphics, FileHandle file)
// {
// return null;
// }
}