Search in sources :

Example 1 with WorldInfoImplementation

use of io.xol.chunkstories.world.WorldInfoImplementation in project chunkstories by Hugobros3.

the class PacketInitializeRemoteWorld method process.

public void process(PacketSender sender, DataInputStream in, PacketReceptionContext processor) throws IOException {
    String initializationString = in.readUTF();
    ByteArrayInputStream bais = new ByteArrayInputStream(initializationString.getBytes("UTF-8"));
    BufferedReader reader = new BufferedReader(new InputStreamReader(bais, "UTF-8"));
    info = new WorldInfoImplementation(reader);
    if (processor instanceof ClientPacketsContext) {
        processor.logger().info("Received World initialization packet");
        ClientPacketsContext cpp = (ClientPacketsContext) processor;
        OnlineContentTranslator contentTranslator = cpp.getContentTranslator();
        if (contentTranslator == null) {
            processor.logger().error("Can't initialize a world without a ContentTranslator initialized first!");
            return;
        }
        // TODO should we expose this to the interface ?
        Client client = (Client) cpp.getContext();
        Fence fence = client.getGameWindow().queueSynchronousTask(new Runnable() {

            @Override
            public void run() {
                WorldClientRemote world;
                try {
                    world = new WorldClientRemote(client, info, contentTranslator, cpp.getConnection());
                    client.changeWorld(world);
                    cpp.getConnection().handleSystemRequest("world/ok");
                } catch (WorldLoadingException e) {
                    client.exitToMainMenu(e.getMessage());
                }
            }
        });
        fence.traverse();
    }
}
Also used : WorldLoadingException(io.xol.chunkstories.world.WorldLoadingException) OnlineContentTranslator(io.xol.chunkstories.api.content.OnlineContentTranslator) InputStreamReader(java.io.InputStreamReader) WorldClientRemote(io.xol.chunkstories.world.WorldClientRemote) ClientPacketsContext(io.xol.chunkstories.client.net.ClientPacketsContext) WorldInfoImplementation(io.xol.chunkstories.world.WorldInfoImplementation) ByteArrayInputStream(java.io.ByteArrayInputStream) BufferedReader(java.io.BufferedReader) Fence(io.xol.chunkstories.api.util.concurrency.Fence) Client(io.xol.chunkstories.client.Client)

Aggregations

OnlineContentTranslator (io.xol.chunkstories.api.content.OnlineContentTranslator)1 Fence (io.xol.chunkstories.api.util.concurrency.Fence)1 Client (io.xol.chunkstories.client.Client)1 ClientPacketsContext (io.xol.chunkstories.client.net.ClientPacketsContext)1 WorldClientRemote (io.xol.chunkstories.world.WorldClientRemote)1 WorldInfoImplementation (io.xol.chunkstories.world.WorldInfoImplementation)1 WorldLoadingException (io.xol.chunkstories.world.WorldLoadingException)1 BufferedReader (java.io.BufferedReader)1 ByteArrayInputStream (java.io.ByteArrayInputStream)1 InputStreamReader (java.io.InputStreamReader)1