Search in sources :

Example 6 with Client

use of org.terasology.network.Client in project Terasology by MovingBlocks.

the class ReadWriteStorageManager method addPlayersToSaveTransaction.

private void addPlayersToSaveTransaction(SaveTransactionBuilder saveTransactionBuilder, NetworkSystem networkSystem) {
    unloadedAndSavingPlayerMap.clear();
    /**
     * New entries might be added concurrently. By using putAll + clear to transfer entries we might loose new
     * ones added in between putAll and clear. By iterating we can make sure that all entities removed
     * from unloadedAndUnsavedPlayerMap get added to unloadedAndSavingPlayerMap.
     */
    Iterator<Map.Entry<String, EntityData.PlayerStore>> unsavedEntryIterator = unloadedAndUnsavedPlayerMap.entrySet().iterator();
    while (unsavedEntryIterator.hasNext()) {
        Map.Entry<String, EntityData.PlayerStore> entry = unsavedEntryIterator.next();
        unloadedAndSavingPlayerMap.put(entry.getKey(), entry.getValue());
        unsavedEntryIterator.remove();
    }
    for (Client client : networkSystem.getPlayers()) {
        // If there is a newer undisposed version of the player,we don't need to save the disposed version:
        unloadedAndSavingPlayerMap.remove(client.getId());
        EntityRef character = client.getEntity().getComponent(ClientComponent.class).character;
        saveTransactionBuilder.addLoadedPlayer(client.getId(), createPlayerStore(client, character));
    }
    for (Map.Entry<String, EntityData.PlayerStore> entry : unloadedAndSavingPlayerMap.entrySet()) {
        saveTransactionBuilder.addUnloadedPlayer(entry.getKey(), entry.getValue());
    }
}
Also used : EntityData(org.terasology.protobuf.EntityData) Client(org.terasology.network.Client) Map(java.util.Map) HashMap(java.util.HashMap) ConcurrentMap(java.util.concurrent.ConcurrentMap) EntityRef(org.terasology.entitySystem.entity.EntityRef) ClientComponent(org.terasology.network.ClientComponent)

Example 7 with Client

use of org.terasology.network.Client in project Terasology by MovingBlocks.

the class SetupLocalPlayer method step.

@Override
public boolean step() {
    PlayerConfig playerConfig = context.get(Config.class).getPlayer();
    Client localClient = context.get(NetworkSystem.class).joinLocal(playerConfig.getName(), playerConfig.getColor());
    context.get(LocalPlayer.class).setClientEntity(localClient.getEntity());
    return true;
}
Also used : Config(org.terasology.config.Config) PlayerConfig(org.terasology.config.PlayerConfig) LocalPlayer(org.terasology.logic.players.LocalPlayer) NetworkSystem(org.terasology.network.NetworkSystem) Client(org.terasology.network.Client) PlayerConfig(org.terasology.config.PlayerConfig)

Example 8 with Client

use of org.terasology.network.Client in project Terasology by MovingBlocks.

the class NetClient method sendInitialEntities.

private void sendInitialEntities(NetData.NetMessage.Builder message) {
    int[] initial = netInitial.toArray();
    netInitial.clear();
    Arrays.sort(initial);
    for (int netId : initial) {
        netRelevant.add(netId);
        EntityRef entity = networkSystem.getEntity(netId);
        if (!entity.hasComponent(NetworkComponent.class)) {
            logger.error("Sending net entity with no network component: {} - {}", netId, entity);
            continue;
        }
        // Note: Send owner->server fields on initial create
        Client owner = networkSystem.getOwner(entity);
        EntityData.PackedEntity entityData = entitySerializer.serialize(entity, true, new ServerComponentFieldCheck(owner == this, true)).build();
        NetData.CreateEntityMessage.Builder createMessage = NetData.CreateEntityMessage.newBuilder().setEntity(entityData);
        BlockComponent blockComponent = entity.getComponent(BlockComponent.class);
        if (blockComponent != null) {
            createMessage.setBlockPos(NetMessageUtil.convert(blockComponent.getPosition()));
        }
        message.addCreateEntity(createMessage);
    }
}
Also used : BlockComponent(org.terasology.world.block.BlockComponent) NetworkComponent(org.terasology.network.NetworkComponent) EntityData(org.terasology.protobuf.EntityData) ServerComponentFieldCheck(org.terasology.network.serialization.ServerComponentFieldCheck) Client(org.terasology.network.Client) EntityRef(org.terasology.entitySystem.entity.EntityRef)

Example 9 with Client

use of org.terasology.network.Client in project Terasology by MovingBlocks.

the class NetworkSystemImpl method joinLocal.

@Override
public Client joinLocal(String preferredName, Color color) {
    Client localClient = new LocalClient(preferredName, color, entityManager);
    clientList.add(localClient);
    clientPlayerLookup.put(localClient.getEntity(), localClient);
    connectClient(localClient);
    return localClient;
}
Also used : Client(org.terasology.network.Client)

Example 10 with Client

use of org.terasology.network.Client in project Terasology by MovingBlocks.

the class EventSystemImpl method broadcastEvent.

private void broadcastEvent(EntityRef entity, Event event, EventMetadata metadata) {
    if (networkSystem.getMode().isServer()) {
        NetworkComponent netComp = entity.getComponent(NetworkComponent.class);
        BlockComponent blockComp = entity.getComponent(BlockComponent.class);
        if (netComp != null || blockComp != null) {
            Client instigatorClient = null;
            if (metadata.isSkipInstigator() && event instanceof NetworkEvent) {
                instigatorClient = networkSystem.getOwner(((NetworkEvent) event).getInstigator());
            }
            for (Client client : networkSystem.getPlayers()) {
                if (!client.equals(instigatorClient)) {
                    client.send(event, entity);
                }
            }
        }
    }
}
Also used : BlockComponent(org.terasology.world.block.BlockComponent) NetworkComponent(org.terasology.network.NetworkComponent) NetworkEvent(org.terasology.network.NetworkEvent) Client(org.terasology.network.Client)

Aggregations

Client (org.terasology.network.Client)14 EntityRef (org.terasology.entitySystem.entity.EntityRef)7 ClientComponent (org.terasology.network.ClientComponent)5 Vector3f (org.terasology.math.geom.Vector3f)3 Vector3i (org.terasology.math.geom.Vector3i)3 ReceiveEvent (org.terasology.entitySystem.event.ReceiveEvent)2 AliveCharacterComponent (org.terasology.logic.characters.AliveCharacterComponent)2 LocationComponent (org.terasology.logic.location.LocationComponent)2 NetworkComponent (org.terasology.network.NetworkComponent)2 NetworkSystem (org.terasology.network.NetworkSystem)2 EntityData (org.terasology.protobuf.EntityData)2 BlockComponent (org.terasology.world.block.BlockComponent)2 FileSystem (java.nio.file.FileSystem)1 HashMap (java.util.HashMap)1 Map (java.util.Map)1 ConcurrentMap (java.util.concurrent.ConcurrentMap)1 JavaArchive (org.jboss.shrinkwrap.api.spec.JavaArchive)1 Before (org.junit.Before)1 ResourceUrn (org.terasology.assets.ResourceUrn)1 AssetManager (org.terasology.assets.management.AssetManager)1