Search in sources :

Example 1 with AwaitCharacterSpawn

use of org.terasology.engine.core.modes.loadProcesses.AwaitCharacterSpawn in project Terasology by MovingBlocks.

the class StateLoading method initClient.

private void initClient() {
    loadProcesses.add(new JoinServer(context, gameManifest, joinStatus));
    if (!headless) {
        loadProcesses.add(new InitialiseRendering(context));
    }
    loadProcesses.add(new InitialiseEntitySystem(context));
    loadProcesses.add(new RegisterBlocks(context, gameManifest));
    if (!headless) {
        loadProcesses.add(new InitialiseGraphics(context));
    }
    loadProcesses.add(new LoadPrefabs(context));
    loadProcesses.add(new ProcessBlockPrefabs(context));
    loadProcesses.add(new LoadExtraBlockData(context));
    loadProcesses.add(new InitialiseComponentSystemManager(context));
    if (!headless) {
        loadProcesses.add(new RegisterInputSystem(context));
    }
    loadProcesses.add(new RegisterSystems(context, netMode));
    loadProcesses.add(new InitialiseCommandSystem(context));
    loadProcesses.add(new InitialiseRemoteWorld(context, gameManifest));
    loadProcesses.add(new InitialisePhysics(context));
    loadProcesses.add(new InitialiseSystems(context));
    loadProcesses.add(new PreBeginSystems(context));
    loadProcesses.add(new CreateRemoteWorldEntity(context));
    loadProcesses.add(new PostBeginSystems(context));
    loadProcesses.add(new SetupRemotePlayer(context));
    loadProcesses.add(new AwaitCharacterSpawn(context));
    loadProcesses.add(new RegisterBlockFamilies(context));
    loadProcesses.add(new PrepareWorld(context));
}
Also used : CreateRemoteWorldEntity(org.terasology.engine.core.modes.loadProcesses.CreateRemoteWorldEntity) RegisterBlockFamilies(org.terasology.engine.core.modes.loadProcesses.RegisterBlockFamilies) InitialiseGraphics(org.terasology.engine.core.modes.loadProcesses.InitialiseGraphics) RegisterInputSystem(org.terasology.engine.core.modes.loadProcesses.RegisterInputSystem) PreBeginSystems(org.terasology.engine.core.modes.loadProcesses.PreBeginSystems) InitialiseComponentSystemManager(org.terasology.engine.core.modes.loadProcesses.InitialiseComponentSystemManager) SetupRemotePlayer(org.terasology.engine.core.modes.loadProcesses.SetupRemotePlayer) RegisterBlocks(org.terasology.engine.core.modes.loadProcesses.RegisterBlocks) InitialiseRemoteWorld(org.terasology.engine.core.modes.loadProcesses.InitialiseRemoteWorld) InitialiseSystems(org.terasology.engine.core.modes.loadProcesses.InitialiseSystems) InitialiseEntitySystem(org.terasology.engine.core.modes.loadProcesses.InitialiseEntitySystem) InitialiseRendering(org.terasology.engine.core.modes.loadProcesses.InitialiseRendering) RegisterSystems(org.terasology.engine.core.modes.loadProcesses.RegisterSystems) InitialisePhysics(org.terasology.engine.core.modes.loadProcesses.InitialisePhysics) PostBeginSystems(org.terasology.engine.core.modes.loadProcesses.PostBeginSystems) LoadPrefabs(org.terasology.engine.core.modes.loadProcesses.LoadPrefabs) ProcessBlockPrefabs(org.terasology.engine.core.modes.loadProcesses.ProcessBlockPrefabs) LoadExtraBlockData(org.terasology.engine.core.modes.loadProcesses.LoadExtraBlockData) InitialiseCommandSystem(org.terasology.engine.core.modes.loadProcesses.InitialiseCommandSystem) JoinServer(org.terasology.engine.core.modes.loadProcesses.JoinServer) AwaitCharacterSpawn(org.terasology.engine.core.modes.loadProcesses.AwaitCharacterSpawn) PrepareWorld(org.terasology.engine.core.modes.loadProcesses.PrepareWorld)

Example 2 with AwaitCharacterSpawn

use of org.terasology.engine.core.modes.loadProcesses.AwaitCharacterSpawn in project Terasology by MovingBlocks.

the class StateLoading method initHost.

private void initHost() {
    loadProcesses.add(new RegisterMods(context, gameManifest));
    if (!headless) {
        loadProcesses.add(new InitialiseRendering(context));
    }
    loadProcesses.add(new InitialiseEntitySystem(context));
    loadProcesses.add(new RegisterBlocks(context, gameManifest));
    if (!headless) {
        loadProcesses.add(new InitialiseGraphics(context));
    }
    loadProcesses.add(new LoadPrefabs(context));
    loadProcesses.add(new ProcessBlockPrefabs(context));
    loadProcesses.add(new InitialiseComponentSystemManager(context));
    if (!headless) {
        loadProcesses.add(new RegisterInputSystem(context));
    }
    loadProcesses.add(new RegisterSystems(context, netMode));
    loadProcesses.add(new InitialiseCommandSystem(context));
    loadProcesses.add(new LoadExtraBlockData(context));
    loadProcesses.add(new InitialiseWorld(gameManifest, context));
    loadProcesses.add(new RegisterBlockFamilies(context));
    loadProcesses.add(new EnsureSaveGameConsistency(context));
    loadProcesses.add(new InitialisePhysics(context));
    loadProcesses.add(new InitialiseSystems(context));
    loadProcesses.add(new PreBeginSystems(context));
    loadProcesses.add(new LoadEntities(context));
    loadProcesses.add(new InitialiseBlockTypeEntities(context));
    loadProcesses.add(new CreateWorldEntity(context, gameManifest));
    loadProcesses.add(new InitialiseWorldGenerator(context));
    loadProcesses.add(new InitialiseRecordAndReplay(context));
    if (netMode.isServer()) {
        boolean dedicated;
        if (netMode == NetworkMode.DEDICATED_SERVER) {
            dedicated = true;
        } else if (netMode == NetworkMode.LISTEN_SERVER) {
            dedicated = false;
        } else {
            throw new IllegalStateException("Invalid server mode: " + netMode);
        }
        loadProcesses.add(new StartServer(context, dedicated));
    }
    loadProcesses.add(new PostBeginSystems(context));
    if (netMode.hasLocalClient()) {
        loadProcesses.add(new SetupLocalPlayer(context));
        loadProcesses.add(new AwaitCharacterSpawn(context));
    }
    loadProcesses.add(new PrepareWorld(context));
}
Also used : InitialiseWorld(org.terasology.engine.core.modes.loadProcesses.InitialiseWorld) RegisterBlockFamilies(org.terasology.engine.core.modes.loadProcesses.RegisterBlockFamilies) InitialiseGraphics(org.terasology.engine.core.modes.loadProcesses.InitialiseGraphics) RegisterInputSystem(org.terasology.engine.core.modes.loadProcesses.RegisterInputSystem) PreBeginSystems(org.terasology.engine.core.modes.loadProcesses.PreBeginSystems) InitialiseComponentSystemManager(org.terasology.engine.core.modes.loadProcesses.InitialiseComponentSystemManager) RegisterBlocks(org.terasology.engine.core.modes.loadProcesses.RegisterBlocks) InitialiseSystems(org.terasology.engine.core.modes.loadProcesses.InitialiseSystems) SetupLocalPlayer(org.terasology.engine.core.modes.loadProcesses.SetupLocalPlayer) InitialisePhysics(org.terasology.engine.core.modes.loadProcesses.InitialisePhysics) PostBeginSystems(org.terasology.engine.core.modes.loadProcesses.PostBeginSystems) LoadPrefabs(org.terasology.engine.core.modes.loadProcesses.LoadPrefabs) ProcessBlockPrefabs(org.terasology.engine.core.modes.loadProcesses.ProcessBlockPrefabs) PrepareWorld(org.terasology.engine.core.modes.loadProcesses.PrepareWorld) LoadEntities(org.terasology.engine.core.modes.loadProcesses.LoadEntities) EnsureSaveGameConsistency(org.terasology.engine.core.modes.loadProcesses.EnsureSaveGameConsistency) RegisterMods(org.terasology.engine.core.modes.loadProcesses.RegisterMods) InitialiseBlockTypeEntities(org.terasology.engine.core.modes.loadProcesses.InitialiseBlockTypeEntities) CreateWorldEntity(org.terasology.engine.core.modes.loadProcesses.CreateWorldEntity) InitialiseEntitySystem(org.terasology.engine.core.modes.loadProcesses.InitialiseEntitySystem) InitialiseRendering(org.terasology.engine.core.modes.loadProcesses.InitialiseRendering) RegisterSystems(org.terasology.engine.core.modes.loadProcesses.RegisterSystems) InitialiseRecordAndReplay(org.terasology.engine.core.modes.loadProcesses.InitialiseRecordAndReplay) InitialiseWorldGenerator(org.terasology.engine.core.modes.loadProcesses.InitialiseWorldGenerator) LoadExtraBlockData(org.terasology.engine.core.modes.loadProcesses.LoadExtraBlockData) InitialiseCommandSystem(org.terasology.engine.core.modes.loadProcesses.InitialiseCommandSystem) AwaitCharacterSpawn(org.terasology.engine.core.modes.loadProcesses.AwaitCharacterSpawn) StartServer(org.terasology.engine.core.modes.loadProcesses.StartServer)

Example 3 with AwaitCharacterSpawn

use of org.terasology.engine.core.modes.loadProcesses.AwaitCharacterSpawn in project Terasology by MovingBlocks.

the class StateLoading method update.

@Override
public void update(float delta) {
    GameEngine gameEngine = context.get(GameEngine.class);
    EngineTime time = (EngineTime) context.get(Time.class);
    long startTime = time.getRealTimeInMs();
    while (current != null && time.getRealTimeInMs() - startTime < 20 && !gameEngine.hasPendingState()) {
        try {
            if (current.step()) {
                popStep();
            }
        } catch (Exception e) {
            logger.error("Error while loading {}", current, e);
            String errorMessage = String.format("Failed to load game. There was an error during \"%s\".", current == null ? "the last part" : current.getMessage());
            gameEngine.changeState(new StateMainMenu(errorMessage));
            CrashReporter.report(e, LoggingContext.getLoggingPath());
            return;
        }
    }
    if (current == null) {
        if (nuiManager != null) {
            nuiManager.closeScreen(loadingScreen);
            nuiManager.setHUDVisible(true);
        }
        context.get(GameEngine.class).changeState(new StateIngame(gameManifest, context));
    } else {
        float progressValue = (progress + current.getExpectedCost() * current.getProgress()) / maxProgress;
        if (nuiManager != null) {
            loadingScreen.updateStatus(current.getMessage(), progressValue);
            nuiManager.update(delta);
        }
        // chunk generation begins at the AwaitCharacterSpawn step
        if (current instanceof AwaitCharacterSpawn && !chunkGenerationStarted) {
            chunkGenerationStarted = true;
            // in case no chunks generate, this should be set for a basis
            timeLastChunkGenerated = time.getRealTimeInMs();
        }
        if (chunkGenerationStarted) {
            long timeSinceLastChunk = time.getRealTimeInMs() - timeLastChunkGenerated;
            long chunkGenerationTimeout = systemConfig.chunkGenerationFailTimeoutInMs.get();
            if (timeSinceLastChunk > chunkGenerationTimeout) {
                String errorMessage = "World generation timed out, check the log for more info";
                gameEngine.changeState(new StateMainMenu(errorMessage));
            }
        }
    }
}
Also used : EngineTime(org.terasology.engine.core.EngineTime) GameEngine(org.terasology.engine.core.GameEngine) EngineTime(org.terasology.engine.core.EngineTime) Time(org.terasology.engine.core.Time) AwaitCharacterSpawn(org.terasology.engine.core.modes.loadProcesses.AwaitCharacterSpawn)

Aggregations

AwaitCharacterSpawn (org.terasology.engine.core.modes.loadProcesses.AwaitCharacterSpawn)3 InitialiseCommandSystem (org.terasology.engine.core.modes.loadProcesses.InitialiseCommandSystem)2 InitialiseComponentSystemManager (org.terasology.engine.core.modes.loadProcesses.InitialiseComponentSystemManager)2 InitialiseEntitySystem (org.terasology.engine.core.modes.loadProcesses.InitialiseEntitySystem)2 InitialiseGraphics (org.terasology.engine.core.modes.loadProcesses.InitialiseGraphics)2 InitialisePhysics (org.terasology.engine.core.modes.loadProcesses.InitialisePhysics)2 InitialiseRendering (org.terasology.engine.core.modes.loadProcesses.InitialiseRendering)2 InitialiseSystems (org.terasology.engine.core.modes.loadProcesses.InitialiseSystems)2 LoadExtraBlockData (org.terasology.engine.core.modes.loadProcesses.LoadExtraBlockData)2 LoadPrefabs (org.terasology.engine.core.modes.loadProcesses.LoadPrefabs)2 PostBeginSystems (org.terasology.engine.core.modes.loadProcesses.PostBeginSystems)2 PreBeginSystems (org.terasology.engine.core.modes.loadProcesses.PreBeginSystems)2 PrepareWorld (org.terasology.engine.core.modes.loadProcesses.PrepareWorld)2 ProcessBlockPrefabs (org.terasology.engine.core.modes.loadProcesses.ProcessBlockPrefabs)2 RegisterBlockFamilies (org.terasology.engine.core.modes.loadProcesses.RegisterBlockFamilies)2 RegisterBlocks (org.terasology.engine.core.modes.loadProcesses.RegisterBlocks)2 RegisterInputSystem (org.terasology.engine.core.modes.loadProcesses.RegisterInputSystem)2 RegisterSystems (org.terasology.engine.core.modes.loadProcesses.RegisterSystems)2 EngineTime (org.terasology.engine.core.EngineTime)1 GameEngine (org.terasology.engine.core.GameEngine)1