int[] offset = PUWeb.game().getScreenOffset();
int offsetX = offset[0];
int offsetY = offset[1];
PU_Font font = PUWeb.resources().getFont(Fonts.FONT_ARIALBLK_BOLD_14_OUTLINE);
int lineHeight = font.getLineHeight();
int height = lineHeight + (lineHeight * mLines.size());
boolean center = false;
int drawX = PU_Game.MID_X - (PUWeb.game().getSelf().getX() - mX);
int drawY = PU_Game.MID_Y - (PUWeb.game().getSelf().getY() - mY);
drawX = (drawX * PU_Tile.TILE_WIDTH) - PU_Tile.TILE_WIDTH - 22 + offsetX;
drawY = (drawY * PU_Tile.TILE_HEIGHT) - PU_Tile.TILE_HEIGHT + offsetY;
if(drawY-height < 0)
{
drawY = 0;
}
else if(drawY > PU_Engine.SCREEN_HEIGHT)
{
drawY = PU_Engine.SCREEN_HEIGHT - height;
}
else
{
drawY -= height;
drawY += lineHeight;
}
String header = mName + " says:";
int widest = font.getStringWidth(header);
for(PU_OnscreenChatLine line : mLines)
{
if(line != null)
{
int len = font.getStringWidth(line.getText());
if(len > widest)
{
widest = len;
}
}
}
if(drawX - (int)Math.ceil((float)widest/2.0f) < 0)
{
drawX = 0;
}
else if(drawX + (int)Math.ceil((float)widest/2.0f) > PU_Engine.SCREEN_WIDTH)
{
drawX = PU_Engine.SCREEN_WIDTH - widest;
}
else
{
center = true;
}
int posHalf = 0;
if(!center)
{
posHalf = drawX + (int)Math.ceil((float)((drawX+widest)-drawX)/2);
}
else
{
posHalf = (drawX - ((int)Math.ceil((float)widest / 2.0))) + (int)(Math.ceil((float)((drawX+widest)-(drawX-((int)Math.ceil((float)widest/2.0))))/2));
}
int nameHalf = (int)(Math.floor((float)font.getStringWidth(header) / 2.0));
int centerPos = posHalf - nameHalf;
font.drawTextInBatch(header, centerPos, drawY);
for(int i = 0; i < mLines.size(); i++)
{
PU_OnscreenChatLine line = mLines.get(i);
if(line != null)
{
nameHalf = (int)Math.floor((float)font.getStringWidth(line.getText())/2.0);
centerPos = posHalf - nameHalf;
font.drawTextInBatch(line.getText(), centerPos, drawY+((i+1)*lineHeight));
}
}
updateLines(ticks);
if(mLines.size() <= 0)