示例#1
0
文件: VRC.cs 项目: fr1tz/vjoy-server
 private void Remove()
 {
     if (this.vjoyDevice != null)
     {
         this.vjoyDevice.RemoveRemoteController(this);
     }
     this.vjoyDevice = null;
 }
示例#2
0
 private void VjoyServerControl_Load(object sender, EventArgs e)
 {
     this.vjoyDevice = Program.VjoyInterface.GetDevice(VjoyDeviceId);
     this.vjoyDevice.StatusChanged   += VjoyDevice_StatusChanged;
     this.vjoyDevice.ExportedChanged += VjoyDevice_StatusChanged;
     this.vjoyDeviceLabel.Text        = string.Format("vJoy #{0}", VjoyDeviceId);
     UpdateVjoyDeviceStatus();
 }
示例#3
0
文件: VRC.cs 项目: fr1tz/vjoy-server
        private void VjoyDevice_StatusChanged(object sender, EventArgs e)
        {
            VjoyDevice vjoyDevice = (VjoyDevice)sender;
            uint       id         = vjoyDevice.GetVjoyDeviceId();
            string     status     = GetJoystickStatus(vjoyDevice);
            string     msg        = string.Format("/set_var JOYSTICK_STATUS/{0} '{1}'\n", id, status);

            Send(msg);
        }
示例#4
0
        private void VjoyDevice_StatusChanged(object sender, EventArgs e)
        {
            VjoyDevice vjoyDevice   = (VjoyDevice)sender;
            uint       vjoyDeviceId = vjoyDevice.GetVjoyDeviceId();
            string     status       = GetJoystickStatus(vjoyDevice);
            string     msg          = string.Format("vjoy_status {0} {1}\n", vjoyDeviceId, status);

            Send(msg);
        }
示例#5
0
文件: VRC.cs 项目: fr1tz/vjoy-server
        private void ProcessLogMsg(string level, string source, string content)
        {
            string[] source_nodes = source.Split(new char[] { '/' });
            if (source == "vrchost/vrc")
            {
                string[] words = content.Split(new char[] { ' ' });
                if (words.Length == 2 && words[0] == "joystick_request")
                {
                    uint id = uint.Parse(words[1]);
                    if (id == 0)
                    {
                        if (this.vjoyDevice != null)
                        {
                            this.vjoyDevice.RemoveRemoteController(this);
                        }
                        this.vjoyDevice = null;
                    }
                    else
                    {
                        VjoyDevice oldVjoyDevice = this.vjoyDevice;
                        this.vjoyDevice = Program.VjoyInterface.GetDevice(id);
                        if (this.vjoyDevice == null)
                        {
                            return;
                        }
                        if (this.vjoyDevice.AddRemoteController(this) == false)
                        {
                            return;
                        }
                        if (oldVjoyDevice != null)
                        {
                            oldVjoyDevice.RemoveRemoteController(this);
                        }
                    }
                    string cmd = string.Format("/set_var ACTIVE_JOYSTICK_ID '{0}'\n", id);
                    Send(cmd);
                }
            }

            /*
             * else if (this.activeGui == Gui.JoystickScreen
             * && source.EndsWith("vrc")
             * && content == "joystick disabled")
             * {
             *  if (this.vjoyDevice == null)
             *      return;
             *  this.vjoyDevice.RemoveRemoteController(this);
             *  string cmd = string.Format("/set_var ACTIVE_JOYSTICK_ID '{0}'\n", 0);
             *  Send(cmd);
             *  this.activeGui = Gui.OptionsScreen;
             * }
             */
        }
示例#6
0
文件: VRC.cs 项目: fr1tz/vjoy-server
 public VRC(IPAddress address, int tcpPort)
 {
     this.tcpClient     = new TcpClient();
     this.address       = address;
     this.tcpPort       = tcpPort;
     this.controllerId  = -1;
     this.vjoyDevice    = null;
     this.activeGui     = Gui.None;
     this.joystickState = new JoystickState();
     this.setupThread   = new Thread(SetupThread);
     this.setupThread.Start();
     this.sendLock = new Object();
 }
示例#7
0
文件: VRC.cs 项目: fr1tz/vjoy-server
        private string GetJoystickStatus(VjoyDevice vjoyDevice)
        {
            string status = "";

            if (vjoyDevice.IsExported())
            {
                switch (vjoyDevice.GetStatus())
                {
                case VjoyDevice.Status.Acquired:
                case VjoyDevice.Status.Busy:
                    status = "taken"; break;

                case VjoyDevice.Status.Free:
                    status = "free"; break;
                }
            }
            return(status);
        }
示例#8
0
        public VjoyClient(TcpClient tcpClient)
        {
            this.clientAddress = ((IPEndPoint)tcpClient.Client.RemoteEndPoint).Address;
            this.clientId      = ((IPEndPoint)tcpClient.Client.RemoteEndPoint).Port;
            this.tcpClient     = tcpClient;
            this.sendLock      = new Object();
            this.controllers   = new VjoyController[16];
            for (uint i = 0; i < 16; i++)
            {
                VjoyController controller           = new VjoyController();
                VjoyDevice     device               = Program.VjoyInterface.GetDevice(i + 1);
                device.GetConfig().PropertyChanged += VjoyDeviceConfig_PropertyChanged;
                device.AddRemoteController(controller);
                this.controllers[i] = controller;
            }

            //this.setupThread = new Thread(SetupThread);
            //this.setupThread.Start();
            string lines = "";

            lines += string.Format("init {0} {1} {2}\n", Environment.MachineName,
                                   Program.NetworkInterface.GetUdpPort(), this.clientId);
            VjoyDevice[] vjoyDevices = Program.VjoyInterface.GetDevices();
            foreach (VjoyDevice vjoyDevice in vjoyDevices)
            {
                vjoyDevice.StatusChanged   += VjoyDevice_StatusChanged;
                vjoyDevice.ExportedChanged += VjoyDevice_StatusChanged;
                uint   id     = vjoyDevice.GetVjoyDeviceId();
                string status = GetJoystickStatus(vjoyDevice);
                lines += string.Format("vjoy_status {0} {1}\n", id, status);
                foreach (string prop in vjoyDevice.GetConfig().GetProperties())
                {
                    lines += string.Format("vjoy_config {0} {1}\n", id, prop);
                }
            }
            Send(lines);
        }