/*
* Copyright 2015 MovingBlocks
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.terasology.rendering.nui.layers.ingame;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.terasology.entitySystem.entity.EntityManager;
import org.terasology.entitySystem.entity.EntityRef;
import org.terasology.logic.players.PlayerUtil;
import org.terasology.network.ClientComponent;
import org.terasology.registry.In;
import org.terasology.rendering.nui.CoreScreenLayer;
import org.terasology.rendering.nui.widgets.UIText;
/**
* Overlay that lists all players that are currently online.
*/
public class OnlinePlayersOverlay extends CoreScreenLayer {
private static final Logger logger = LoggerFactory.getLogger(OnlinePlayersOverlay.class);
private UIText text;
@In
private EntityManager entityManager;
@Override
public void initialise() {
this.text = find("playerList", UIText.class);
}
private String determinePlayerListText() {
Iterable<EntityRef> allClients = entityManager.getEntitiesWith(ClientComponent.class);
StringBuilder sb = new StringBuilder();
boolean first = true;
for (EntityRef clientEntity : allClients) {
if (!first) {
sb.append("\n");
}
ClientComponent clientComp = clientEntity.getComponent(ClientComponent.class);
sb.append(PlayerUtil.getColoredPlayerName(clientComp.clientInfo));
first = false;
}
return sb.toString();
}
@Override
public void onOpened() {
super.onOpened();
if (text != null) {
String playerListText = determinePlayerListText();
text.setText(playerListText);
} else {
logger.error("no playerList");
}
}
}