package mountainrangepvp.client.renderer; import com.badlogic.gdx.Gdx; import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Texture; import com.badlogic.gdx.graphics.g2d.SpriteBatch; import mountainrangepvp.core.ChatLine; import mountainrangepvp.core.ChatManager; import mountainrangepvp.core.ClientId; import mountainrangepvp.core.Snapshot; import mountainrangepvp.engine.ui.TextRenderer; import scala.Option; import scala.collection.JavaConversions; /** * @author lachlan */ public class ChatRenderer { private static final Color[] COLOURS = new Color[]{ new Color(1, .5f, 0, 1), new Color(1, 0, 0, 1), new Color(0, 1, 0, 1), new Color(0, 0, 1, 1)}; private final SpriteBatch batch; private final TextRenderer textRenderer; private final Texture background; public ChatRenderer(SpriteBatch batch, TextRenderer textRenderer) { this.batch = batch; this.textRenderer = textRenderer; background = new Texture(Gdx.files.internal("chat/background.png")); } public void render(Snapshot snapshot, ChatManager chatManager) { batch.begin(); drawChatMessages(snapshot, chatManager); if (chatManager.isChatting()) drawCurrentChat(chatManager); batch.end(); } private void drawChatMessages(Snapshot snapshot, ChatManager chatManager) { int i = 0; for (ChatLine line : JavaConversions.asJavaIterable(chatManager.getLinesHead(20))) { if (!chatManager.isChatting() && line.isOld()) continue; if (line.text().startsWith("/")) continue; Option<ClientId> player = line.player(); String text; if (player.isEmpty()) text = line.text(); else text = snapshot.nicknameFor(player.get()) + ": " + line.text(); if (player.isEmpty()) textRenderer.setColour(Color.BLACK); else textRenderer.setColour(COLOURS[0]); textRenderer.drawString(batch, text, 15, 45 + 15 + i * 25); i++; } textRenderer.setColour(Color.BLACK); } private void drawCurrentChat(ChatManager chatManager) { batch.draw(background, 10, 10, 400, 31); textRenderer.drawString(batch, chatManager.getCurrentLine(), 15, 10 + 15 + 8); } }