Example #1
0
        public void Run()
        {
            Logger.Debug("Initialising GameController.");

            ShowSplashScreen();

            _configurationManager.LoadFromFile(PathHelpers.ExecutableRelativeFile("client_config.toml"));

            _resourceManager.LoadBaseResources();
            _resourceManager.LoadLocalResources();

            //Setup Cluwne first, as the rest depends on it.
            SetupCluwne();
            CleanupSplashScreen();

            //Initialization of private members
            _messageLogger.Initialize();
            _entityNetworkManager.Initialize();
            _tileDefinitionManager.InitializeResources();

            var prototypeManager = IoCManager.Resolve <IPrototypeManager>();

            prototypeManager.LoadDirectory(PathHelpers.ExecutableRelativeFile("Prototypes"));
            prototypeManager.Resync();
            _networkManager.Initialize();
            _netGrapher.Initialize();
            _userInterfaceManager.Initialize();

            _stateManager.RequestStateChange <MainScreen>();

            FrameEventArgs _frameEvent;

            // EventArgs _frameEventArgs;
            _clock = new Clock();

            while (CluwneLib.IsRunning == true)
            {
                var lastFrameTime = _clock.ElapsedTime.AsSeconds();
                _clock.Restart();
                _frameEvent = new FrameEventArgs(lastFrameTime);
                CluwneLib.ClearCurrentRendertarget(Color.Black);
                CluwneLib.Screen.DispatchEvents();
                CluwneLib.RunIdle(this, _frameEvent);
                CluwneLib.Screen.Display();
            }
            _networkManager.Disconnect();
            CluwneLib.Terminate();
            Logger.Info("GameController terminated.");

            IoCManager.Resolve <IConfigurationManager>().SaveToFile();
        }
Example #2
0
        private async Task InitReferences(VimPortTypeClient client)
        {
            var clunkyTree = await LoadReferenceTree(client);

            if (clunkyTree.Length == 0)
            {
                throw new InvalidOperationException();
            }

            string[] path       = _config.PoolPath.ToLower().Split(new char[] { '/', '\\' });
            string   datacenter = (path.Length > 0) ? path[0] : "";
            string   cluster    = (path.Length > 1) ? path[1] : "";
            string   pool       = (path.Length > 2) ? path[2] : "";

            var dcContent = (clunkyTree.FindTypeByName("Datacenter", datacenter) ?? clunkyTree.First("Datacenter"));

            _datacenter = dcContent.obj;
            _vms        = (ManagedObjectReference)dcContent.GetProperty("vmFolder");

            var clusterContent = clunkyTree.FindTypeByName("ComputeResource", cluster) ?? clunkyTree.First("ComputeResource");

            _res = clusterContent.obj;

            var poolContent = clunkyTree.FindTypeByName("ResourcePool", pool)
                              ?? clunkyTree.FindTypeByReference(
                (ManagedObjectReference)clusterContent.GetProperty("resourcePool")
                );

            _pool = poolContent.obj;

            var netSettings = new VimReferences
            {
                vim                = client,
                cluster            = _res,
                props              = _props,
                pool               = _pool,
                vmFolder           = _vms,
                UplinkSwitch       = _config.Uplink,
                ExcludeNetworkMask = _config.ExcludeNetworkMask
            };

            if (_config.IsVCenter)
            {
                ManagedObjectReference[] subpools = poolContent.GetProperty("resourcePool") as ManagedObjectReference[];
                if (subpools != null && subpools.Length > 0)
                {
                    _pool = subpools.First();
                }

                if (_config.Uplink.StartsWith("nsx."))
                {
                    _netman = new NsxNetworkManager(
                        netSettings,
                        _vmCache,
                        _vlanman,
                        _config.Sddc
                        );
                }
                else
                {
                    var dvs = clunkyTree.FindTypeByName("DistributedVirtualSwitch", _config.Uplink.ToLower()) ?? clunkyTree.First("DistributedVirtualSwitch");
                    _dvs     = dvs?.obj;
                    _dvsuuid = dvs?.GetProperty("uuid").ToString();

                    netSettings.dvs     = dvs?.obj;
                    netSettings.DvsUuid = _dvsuuid;

                    _netman = new DistributedNetworkManager(
                        netSettings,
                        _vmCache,
                        _vlanman
                        );
                }
            }
            else
            {
                var hostContent = clunkyTree.FindType("HostSystem").FirstOrDefault();
                if (hostContent != null)
                {
                    var hostConfig = hostContent.GetProperty("configManager") as HostConfigManager;
                    netSettings.net = hostConfig?.networkSystem;
                }

                _netman = new HostNetworkManager(
                    netSettings,
                    _vmCache,
                    _vlanman
                    );
            }

            await _netman.Initialize();
        }