Esempio n. 1
0
        public override void Initialize(DeviceContext context)
        {
            GameScope.CurrentGameScope.Disposed += CurrentGameScope_Disposed;

            var cameraManager = _ioc.Get <CameraManager <ICameraFocused> >();
            var timerManager  = _ioc.Get <TimerManager>();

            _inputsManager = _ioc.Get <InputsManager>();
            _inputsManager.ActionsManager.KeyboardAction += ActionsManager_KeyboardAction;

            var guiManager  = _ioc.Get <GuiManager>();
            var iconFactory = _ioc.Get <IconFactory>();
            var gameClock   = _ioc.Get <IClock>();
            var inventory   = _ioc.Get <InventoryComponent>();
            var windRose    = _ioc.Get <WindRoseComponent>();

            var chat = _ioc.Get <ChatComponent>();

            chat.ActivatedChanged += chat_ActivatedChanged;


            _hud = (RealmsHud)_ioc.Get <Hud>();
            _hud.CraftingButton.Pressed  += CraftingButton_Pressed;
            _hud.InventoryButton.Pressed += InventoryButton_Pressed;

            var skyBackBuffer = _ioc.Get <StaggingBackBuffer>("SkyBuffer");

            skyBackBuffer.DrawOrders.UpdateIndex(0, 50, "SkyBuffer");
            if (ClientSettings.Current.Settings.GraphicalParameters.LandscapeFog == "SkyFog")
            {
                skyBackBuffer.EnableComponent(true);
            }

            var skyDome = _ioc.Get <ISkyDome>();

            //Rendering time changed depending on landscape fog option, TRUE = Faster drawing (Because we are actively using depth testing)
            if (ClientSettings.Current.Settings.GraphicalParameters.LandscapeFog == "SkyFog")
            {
                skyDome.DrawOrders.UpdateIndex(0, 40);
            }
            else
            {
                skyDome.DrawOrders.UpdateIndex(0, 990);
            }

            var weather              = _ioc.Get <IWeather>();
            var worldChunks          = _ioc.Get <IWorldChunks>();
            var worldShadowMap       = ClientSettings.Current.Settings.GraphicalParameters.ShadowMap ? _ioc.Get <WorldShadowMap>() : null;
            var pickingRenderer      = _ioc.Get <IPickingRenderer>();
            var dynamicEntityManager = _ioc.Get <IVisualDynamicEntityManager>();

            _playerEntityManager = (PlayerEntityManager)_ioc.Get <IPlayerManager>();
            _playerEntityManager.PlayerCharacter.Inventory.ItemPut   += InventoryOnItemPut;
            _playerEntityManager.PlayerCharacter.Inventory.ItemTaken += InventoryOnItemTaken;
            _playerEntityManager.NeedToShowInventory += playerEntityManager_NeedToShowInventory;

            var sharedFrameCB = _ioc.Get <SharedFrameCB>();

            _sandboxGameSoundManager = (RealmGameSoundManager)_ioc.Get <GameSoundManager>();
            _serverComponent         = _ioc.Get <ServerComponent>();
            _serverComponent.ConnectionStatusChanged += ServerComponentOnConnectionStausChanged;

            var fadeComponent       = _ioc.Get <FadeComponent>();
            var voxelModelManager   = _ioc.Get <VoxelModelManager>();
            var adminConsole        = _ioc.Get <AdminConsole>();
            var toolRenderer        = _ioc.Get <FirstPersonToolRenderer>();
            var particuleEngine     = _ioc.Get <UtopiaParticuleEngine>();
            var ghostedRenderer     = _ioc.Get <GhostedEntityRenderer>();
            var crafting            = _ioc.Get <CraftingComponent>();
            var charSelection       = _ioc.Get <CharacterSelectionComponent>();
            var inventoryEvents     = _ioc.Get <InventoryEventComponent>();
            var pickingManager      = _ioc.Get <PickingManager>();
            var cracksRenderer      = _ioc.Get <CracksRenderer>();
            var postEffectComponent = _ioc.Get <PostEffectComponent>();

            AddComponent(cameraManager);
            AddComponent(_serverComponent);
            AddComponent(_inputsManager);
            AddComponent(iconFactory);
            AddComponent(timerManager);
            AddComponent(skyBackBuffer);
            AddComponent(_playerEntityManager);
            AddComponent(dynamicEntityManager);
            AddComponent(_hud);
            AddComponent(guiManager);
            AddComponent(pickingRenderer);
            AddComponent(inventory);
            AddComponent(windRose);
            AddComponent(chat);
            AddComponent(skyDome);
            AddComponent(gameClock);
            AddComponent(weather);
            AddComponent(worldChunks);
            AddComponent(sharedFrameCB);
            AddComponent(_sandboxGameSoundManager);
            AddComponent(fadeComponent);
            AddComponent(voxelModelManager);
            AddComponent(toolRenderer);
            AddComponent(particuleEngine);
            AddComponent(ghostedRenderer);
            AddComponent(crafting);
            AddComponent(inventoryEvents);
            AddComponent(pickingManager);
            AddComponent(cracksRenderer);
            AddComponent(charSelection);
            AddComponent(postEffectComponent);

            if (worldShadowMap != null)
            {
                AddComponent(worldShadowMap);
            }

#if DEBUG
            //Check if the GamePlay Components equal those that have been loaded inside the LoadingGameState
            foreach (var gc in _ioc.Get <LoadingGameState>().GameComponents.Except(GameComponents))
            {
                if (gc.GetType() != typeof(Realms.Client.Components.GUI.LoadingComponent))
                {
                    logger.Warn("Missing GamePlayState component, present inside LoadingGameState : {0}", gc.GetType().ToString());
                }
            }

            //Check if the GamePlay Components equal those that have been loaded inside the LoadingGameState
            foreach (var gc in GameComponents.Except(_ioc.Get <LoadingGameState>().GameComponents))
            {
                if (gc.GetType() != typeof(LoadingComponent))
                {
                    logger.Warn("Missing LoadingGameState component, present inside GamePlayState : {0}", gc.GetType().ToString());
                }
            }
#endif
            base.Initialize(context);
        }