public override void Init()
        {
#if DEBUG
            GodotResourceCopy.DoDirCopy("../../Resources", "Content");
#endif
            var factory    = IoCManager.Resolve <IComponentFactory>();
            var prototypes = IoCManager.Resolve <IPrototypeManager>();

            factory.RegisterIgnore("Interactable");
            factory.RegisterIgnore("Damageable");
            factory.RegisterIgnore("Destructible");
            factory.RegisterIgnore("Temperature");
            factory.RegisterIgnore("PowerTransfer");
            factory.RegisterIgnore("PowerNode");
            factory.RegisterIgnore("PowerProvider");
            factory.RegisterIgnore("PowerDevice");
            factory.RegisterIgnore("PowerStorage");
            factory.RegisterIgnore("PowerGenerator");

            factory.RegisterIgnore("Wirecutter");
            factory.RegisterIgnore("Screwdriver");
            factory.RegisterIgnore("Multitool");
            factory.RegisterIgnore("Welder");
            factory.RegisterIgnore("Wrench");
            factory.RegisterIgnore("Crowbar");
            factory.RegisterIgnore("HitscanWeapon");
            factory.RegisterIgnore("ProjectileWeapon");
            factory.RegisterIgnore("Projectile");
            factory.RegisterIgnore("MeleeWeapon");

            factory.RegisterIgnore("Storeable");

            factory.RegisterIgnore("Material");
            factory.RegisterIgnore("Stack");

            factory.Register <HandsComponent>();
            factory.RegisterReference <HandsComponent, IHandsComponent>();
            factory.Register <ClientStorageComponent>();
            factory.Register <ClientInventoryComponent>();
            factory.Register <PowerDebugTool>();
            factory.Register <ConstructorComponent>();
            factory.Register <ConstructionGhostComponent>();
            factory.Register <IconSmoothComponent>();
            factory.Register <ClothingComponent>();
            factory.Register <ItemComponent>();
            factory.RegisterReference <ClothingComponent, ItemComponent>();

            factory.RegisterIgnore("Construction");
            factory.RegisterIgnore("Apc");
            factory.RegisterIgnore("Door");
            factory.RegisterIgnore("PoweredLight");
            factory.RegisterIgnore("Smes");

            prototypes.RegisterIgnore("material");
        }
        public override void Main(Godot.SceneTree tree)
        {
#if !X64
            throw new InvalidOperationException("The client cannot start outside x64.");
#endif
            Mode = DisplayMode.Godot;
            tree.SetAutoAcceptQuit(false);
            IoCManager.Register <ISceneTreeHolder, SceneTreeHolder>();
            IoCManager.BuildGraph();
            IoCManager.Resolve <ISceneTreeHolder>().Initialize(tree);

#if DEBUG
            // Ensure Godot's side of the resources are up to date.
            GodotResourceCopy.DoDirCopy("../Resources", "Engine");
#endif

            Startup();

            _gameTimingGodotGodot = IoCManager.Resolve <GameTimingGodot>();
        }
        public override void Init()
        {
#if DEBUG
            GodotResourceCopy.DoDirCopy("../../Resources", "Content");
#endif
            var factory    = IoCManager.Resolve <IComponentFactory>();
            var prototypes = IoCManager.Resolve <IPrototypeManager>();

            factory.RegisterIgnore("Interactable");
            factory.RegisterIgnore("Destructible");
            factory.RegisterIgnore("Temperature");
            factory.RegisterIgnore("PowerTransfer");
            factory.RegisterIgnore("PowerNode");
            factory.RegisterIgnore("PowerProvider");
            factory.RegisterIgnore("PowerDevice");
            factory.RegisterIgnore("PowerStorage");
            factory.RegisterIgnore("PowerGenerator");

            factory.RegisterIgnore("Wirecutter");
            factory.RegisterIgnore("Screwdriver");
            factory.RegisterIgnore("Multitool");
            factory.RegisterIgnore("Welder");
            factory.RegisterIgnore("Wrench");
            factory.RegisterIgnore("Crowbar");
            factory.Register <ClientRangedWeaponComponent>();
            factory.RegisterIgnore("HitscanWeapon");
            factory.RegisterIgnore("ProjectileWeapon");
            factory.RegisterIgnore("Projectile");
            factory.RegisterIgnore("MeleeWeapon");

            factory.RegisterIgnore("Storeable");

            factory.RegisterIgnore("Material");
            factory.RegisterIgnore("Stack");

            factory.Register <HandsComponent>();
            factory.RegisterReference <HandsComponent, IHandsComponent>();
            factory.Register <ClientStorageComponent>();
            factory.Register <ClientInventoryComponent>();
            factory.Register <PowerDebugTool>();
            factory.Register <ConstructorComponent>();
            factory.Register <ConstructionGhostComponent>();
            factory.Register <IconSmoothComponent>();
            factory.Register <DamageableComponent>();
            factory.Register <ClothingComponent>();
            factory.Register <ItemComponent>();
            factory.Register <SoundComponent>();

            factory.RegisterReference <ClothingComponent, ItemComponent>();

            factory.Register <SpeciesUI>();
            factory.Register <CharacterInterface>();

            factory.RegisterIgnore("Construction");
            factory.RegisterIgnore("Apc");
            factory.RegisterIgnore("Door");
            factory.RegisterIgnore("PoweredLight");
            factory.RegisterIgnore("Smes");
            factory.RegisterIgnore("Powercell");
            factory.RegisterIgnore("HandheldLight");

            prototypes.RegisterIgnore("material");

            factory.RegisterIgnore("PowerCell");

            factory.Register <SharedSpawnPointComponent>();

            factory.Register <CameraRecoilComponent>();
            factory.RegisterReference <CameraRecoilComponent, SharedCameraRecoilComponent>();

            IoCManager.Register <IClientNotifyManager, ClientNotifyManager>();
            IoCManager.Register <ISharedNotifyManager, ClientNotifyManager>();
            IoCManager.Register <IClientGameTicker, ClientGameTicker>();
            IoCManager.Register <IParallaxManager, ParallaxManager>();
            IoCManager.BuildGraph();

            IoCManager.Resolve <IParallaxManager>().LoadParallax();
            IoCManager.Resolve <IBaseClient>().PlayerJoinedServer += SubscribePlayerAttachmentEvents;

            var stylesheet = new NanoStyle();

            IoCManager.Resolve <IUserInterfaceManager>().Stylesheet = stylesheet.Stylesheet;
        }
Exemple #4
0
        public override void Main(Godot.SceneTree tree)
        {
#if !X64
            throw new InvalidOperationException("The client cannot start outside x64.");
#endif
            ThreadUtility.MainThread = Thread.CurrentThread;
            PreInitIoC();
            IoCManager.Resolve <ISceneTreeHolder>().Initialize(tree);
            InitIoC();
            Godot.OS.SetWindowTitle("Space Station 14");
            SetupLogging();

            // Set up custom synchronization context.
            // Sorry Godot.
            _taskManager.Initialize();

            tree.SetAutoAcceptQuit(false);

            // Load config.
            _configurationManager.LoadFromFile(PathHelpers.ExecutableRelativeFile("client_config.toml"));

            displayManager.Initialize();

            // Ensure Godot's side of the resources are up to date.
#if DEBUG
            GodotResourceCopy.DoDirCopy("../Resources", "Engine");
#endif

            // Init resources.
            // Doesn't do anything right now because TODO Godot asset management is a bit ad-hoc.
            _resourceCache.LoadBaseResources();
            _resourceCache.LoadLocalResources();

            //identical code for server in baseserver
            if (!AssemblyLoader.TryLoadAssembly <GameShared>(_resourceManager, $"Content.Shared"))
            {
                Logger.Warning($"[ENG] Could not load any Shared DLL.");
            }

            if (!AssemblyLoader.TryLoadAssembly <GameClient>(_resourceManager, $"Content.Client"))
            {
                Logger.Warning($"[ENG] Could not load any Client DLL.");
            }

            // Call Init in game assemblies.
            AssemblyLoader.BroadcastRunLevel(AssemblyLoader.RunLevel.Init);

            eyeManager.Initialize();
            _serializer.Initialize();
            _userInterfaceManager.Initialize();
            _networkManager.Initialize(false);
            inputManager.Initialize();
            _console.Initialize();
            _prototypeManager.LoadDirectory(new ResourcePath(@"/Prototypes/"));
            _prototypeManager.Resync();
            _tileDefinitionManager.Initialize();
            _mapManager.Initialize();
            placementManager.Initialize();
            lightManager.Initialize();
            _entityManager.Initialize();
            gameStateManager.Initialize();
            overlayManager.Initialize();
            _viewVariablesManager.Initialize();

            _client.Initialize();

            AssemblyLoader.BroadcastRunLevel(AssemblyLoader.RunLevel.PostInit);

            _stateManager.RequestStateChange <MainScreen>();

            var args = (ICollection <string>)Godot.OS.GetCmdlineArgs();
            if (args.Contains("--connect"))
            {
                _client.ConnectToServer("127.0.0.1", 1212);
            }
        }