示例#1
0
        private void HandleNewIPCGameState(string gs_data)
        {
            //Global.logger.LogLine("Received gs!");
            //Global.logger.LogLine(gs_data);

            GameState_Wrapper new_state = new GameState_Wrapper(gs_data); //GameState_Wrapper

            wrapper_connected = true;
            wrapped_process   = new_state.Provider.Name.ToLowerInvariant();

            var task = new System.Threading.Tasks.Task(() =>
            {
                if (new_state.Provider.Name.ToLowerInvariant().Equals("gta5.exe"))
                {
                    CurrentGameState = new Profiles.GTA5.GSI.GameState_GTA5(gs_data);
                }
                else
                {
                    CurrentGameState = new_state;
                }
            }
                                                       );

            task.Start();
        }
示例#2
0
        private void HandleNewIPCGameState(string gs_data)
        {
            GameState_Wrapper new_state = new GameState_Wrapper(gs_data); //GameState_Wrapper

            wrapper_connected = true;
            wrapped_process   = new_state.Provider.Name.ToLowerInvariant();

            if (new_state.Provider.Name.ToLowerInvariant().Equals("gta5.exe"))
            {
                CurrentGameState = new Profiles.GTA5.GSI.GameState_GTA5(gs_data);
            }
            else
            {
                CurrentGameState = new_state;
            }
        }
示例#3
0
 public GameEvent_BF3()
 {
     _game_state = new GameState_Wrapper();
 }
示例#4
0
        public override void SetGameState(IGameState gamestate)
        {
            if (!(gamestate is GameState_Wrapper))
            {
                return;
            }

            GameState_Wrapper ngw_state = (gamestate as GameState_Wrapper);

            if (ngw_state.Sent_Bitmap.Length != 0)
            {
                bitmap = ngw_state.Sent_Bitmap;
            }

            SetExtraKey(Devices.DeviceKeys.LOGO, ngw_state.Extra_Keys.logo);
            SetExtraKey(Devices.DeviceKeys.LOGO2, ngw_state.Extra_Keys.badge);
            SetExtraKey(Devices.DeviceKeys.Peripheral, ngw_state.Extra_Keys.peripheral);
            SetExtraKey(Devices.DeviceKeys.G1, ngw_state.Extra_Keys.G1);
            SetExtraKey(Devices.DeviceKeys.G2, ngw_state.Extra_Keys.G2);
            SetExtraKey(Devices.DeviceKeys.G3, ngw_state.Extra_Keys.G3);
            SetExtraKey(Devices.DeviceKeys.G4, ngw_state.Extra_Keys.G4);
            SetExtraKey(Devices.DeviceKeys.G5, ngw_state.Extra_Keys.G5);
            SetExtraKey(Devices.DeviceKeys.G6, ngw_state.Extra_Keys.G6);
            SetExtraKey(Devices.DeviceKeys.G7, ngw_state.Extra_Keys.G7);
            SetExtraKey(Devices.DeviceKeys.G8, ngw_state.Extra_Keys.G8);
            SetExtraKey(Devices.DeviceKeys.G9, ngw_state.Extra_Keys.G9);
            SetExtraKey(Devices.DeviceKeys.G10, ngw_state.Extra_Keys.G10);
            SetExtraKey(Devices.DeviceKeys.G11, ngw_state.Extra_Keys.G11);
            SetExtraKey(Devices.DeviceKeys.G12, ngw_state.Extra_Keys.G12);
            SetExtraKey(Devices.DeviceKeys.G13, ngw_state.Extra_Keys.G13);
            SetExtraKey(Devices.DeviceKeys.G14, ngw_state.Extra_Keys.G14);
            SetExtraKey(Devices.DeviceKeys.G15, ngw_state.Extra_Keys.G15);
            SetExtraKey(Devices.DeviceKeys.G16, ngw_state.Extra_Keys.G16);
            SetExtraKey(Devices.DeviceKeys.G17, ngw_state.Extra_Keys.G17);
            SetExtraKey(Devices.DeviceKeys.G18, ngw_state.Extra_Keys.G18);
            SetExtraKey(Devices.DeviceKeys.G19, ngw_state.Extra_Keys.G19);
            SetExtraKey(Devices.DeviceKeys.G20, ngw_state.Extra_Keys.G20);

            if (ngw_state.Command.Equals("SetLighting"))
            {
                Color newfill = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);

                if (!last_fill_color.Equals(newfill))
                {
                    last_fill_color = newfill;

                    for (int i = 0; i < bitmap.Length; i++)
                    {
                        bitmap[i] = (int)(((int)ngw_state.Command_Data.red_start << 16) | ((int)ngw_state.Command_Data.green_start << 8) | ((int)ngw_state.Command_Data.blue_start));
                    }
                }
            }
            else if (ngw_state.Command.Equals("SetLightingForKeyWithKeyName") || ngw_state.Command.Equals("SetLightingForKeyWithScanCode"))
            {
                var bitmap_key = Devices.Logitech.LogitechDevice.ToLogitechBitmap((LedCSharp.keyboardNames)(ngw_state.Command_Data.key));

                if (bitmap_key != Devices.Logitech.Logitech_keyboardBitmapKeys.UNKNOWN)
                {
                    bitmap[(int)bitmap_key / 4] = (int)(((int)ngw_state.Command_Data.red_start << 16) | ((int)ngw_state.Command_Data.green_start << 8) | ((int)ngw_state.Command_Data.blue_start));
                }
            }
            else if (ngw_state.Command.Equals("FlashSingleKey"))
            {
                Devices.DeviceKeys dev_key   = Devices.Logitech.LogitechDevice.ToDeviceKey((LedCSharp.keyboardNames)(ngw_state.Command_Data.key));
                LogiFlashSingleKey neweffect = new LogiFlashSingleKey(dev_key, Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start),
                                                                      ngw_state.Command_Data.duration,
                                                                      ngw_state.Command_Data.interval
                                                                      );

                if (key_effects.ContainsKey(dev_key))
                {
                    key_effects[dev_key] = neweffect;
                }
                else
                {
                    key_effects.Add(dev_key, neweffect);
                }
            }
            else if (ngw_state.Command.Equals("PulseSingleKey"))
            {
                Devices.DeviceKeys dev_key = Devices.Logitech.LogitechDevice.ToDeviceKey((LedCSharp.keyboardNames)(ngw_state.Command_Data.key));
                long duration = ngw_state.Command_Data.interval == 0 ? 0 : ngw_state.Command_Data.duration;

                LogiPulseSingleKey neweffect = new LogiPulseSingleKey(dev_key, Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start),
                                                                      Color.FromArgb(ngw_state.Command_Data.red_end, ngw_state.Command_Data.green_end, ngw_state.Command_Data.blue_end),
                                                                      duration
                                                                      );

                if (key_effects.ContainsKey(dev_key))
                {
                    key_effects[dev_key] = neweffect;
                }
                else
                {
                    key_effects.Add(dev_key, neweffect);
                }
            }
            else if (ngw_state.Command.Equals("PulseLighting"))
            {
                current_effect = new LogiPulseLighting(
                    Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start),
                    ngw_state.Command_Data.duration,
                    ngw_state.Command_Data.interval
                    );
            }
            else if (ngw_state.Command.Equals("FlashLighting"))
            {
                current_effect = new LogiFlashLighting(
                    Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start),
                    ngw_state.Command_Data.duration,
                    ngw_state.Command_Data.interval
                    );
            }
            else if (ngw_state.Command.Equals("StopEffects"))
            {
                key_effects.Clear();
                current_effect = null;
            }
            else if (ngw_state.Command.Equals("SetLightingFromBitmap"))
            {
            }
            //LightFX
            else if (ngw_state.Command.Equals("LFX_GetNumDevices"))
            {
                //Retain previous lighting
                int fill_color_int = Utils.ColorUtils.GetIntFromColor(last_fill_color);

                for (int i = 0; i < bitmap.Length; i++)
                {
                    bitmap[i] = fill_color_int;
                }

                foreach (var extra_key in extra_keys.Keys.ToArray())
                {
                    extra_keys[extra_key] = last_fill_color;
                }
            }
            else if (ngw_state.Command.Equals("LFX_Light"))
            {
                //Retain previous lighting
                int fill_color_int = Utils.ColorUtils.GetIntFromColor(last_fill_color);

                for (int i = 0; i < bitmap.Length; i++)
                {
                    bitmap[i] = fill_color_int;
                }

                foreach (var extra_key in extra_keys.Keys.ToArray())
                {
                    extra_keys[extra_key] = last_fill_color;
                }
            }
            else if (ngw_state.Command.Equals("LFX_SetLightColor"))
            {
                //Retain previous lighting
                int fill_color_int = Utils.ColorUtils.GetIntFromColor(last_fill_color);

                for (int i = 0; i < bitmap.Length; i++)
                {
                    bitmap[i] = fill_color_int;
                }

                foreach (var extra_key in extra_keys.Keys.ToArray())
                {
                    extra_keys[extra_key] = last_fill_color;
                }
            }
            else if (ngw_state.Command.Equals("LFX_Update"))
            {
                Color newfill = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);

                if (!last_fill_color.Equals(newfill))
                {
                    last_fill_color = newfill;

                    for (int i = 0; i < bitmap.Length; i++)
                    {
                        bitmap[i] = (int)(((int)ngw_state.Command_Data.red_start << 16) | ((int)ngw_state.Command_Data.green_start << 8) | ((int)ngw_state.Command_Data.blue_start));
                    }
                }

                foreach (var extra_key in extra_keys.Keys.ToArray())
                {
                    extra_keys[extra_key] = newfill;
                }
            }
            else if (ngw_state.Command.Equals("LFX_SetLightActionColor") || ngw_state.Command.Equals("LFX_ActionColor"))
            {
                Color primary   = Color.Transparent;
                Color secondary = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);

                if (current_effect != null)
                {
                    primary = current_effect.GetCurrentColor(Utils.Time.GetMillisecondsSinceEpoch() - current_effect.timeStarted);
                }

                switch (ngw_state.Command_Data.effect_type)
                {
                case "LFX_ACTION_COLOR":
                    current_effect = new LFX_Color(primary);
                    break;

                case "LFX_ACTION_PULSE":
                    current_effect = new LFX_Pulse(primary, secondary, ngw_state.Command_Data.duration);
                    break;

                case "LFX_ACTION_MORPH":
                    current_effect = new LFX_Morph(primary, secondary, ngw_state.Command_Data.duration);
                    break;

                default:
                    current_effect = null;
                    break;
                }
            }
            else if (ngw_state.Command.Equals("LFX_SetLightActionColorEx") || ngw_state.Command.Equals("LFX_ActionColorEx"))
            {
                Color primary   = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);
                Color secondary = Color.FromArgb(ngw_state.Command_Data.red_end, ngw_state.Command_Data.green_end, ngw_state.Command_Data.blue_end);

                switch (ngw_state.Command_Data.effect_type)
                {
                case "LFX_ACTION_COLOR":
                    current_effect = new LFX_Color(primary);
                    break;

                case "LFX_ACTION_PULSE":
                    current_effect = new LFX_Pulse(primary, secondary, ngw_state.Command_Data.duration);
                    break;

                case "LFX_ACTION_MORPH":
                    current_effect = new LFX_Morph(primary, secondary, ngw_state.Command_Data.duration);
                    break;

                default:
                    current_effect = null;
                    break;
                }
            }
            else if (ngw_state.Command.Equals("LFX_Reset"))
            {
                current_effect = null;
            }
            //Razer
            else if (ngw_state.Command.Equals("CreateMouseEffect"))
            {
            }
            else if (ngw_state.Command.Equals("CreateKeyboardEffect"))
            {
                Color primary   = Color.Red;
                Color secondary = Color.Blue;

                if (ngw_state.Command_Data.red_start >= 0 &&
                    ngw_state.Command_Data.green_start >= 0 &&
                    ngw_state.Command_Data.blue_start >= 0
                    )
                {
                    primary = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);
                }

                if (ngw_state.Command_Data.red_end >= 0 &&
                    ngw_state.Command_Data.green_end >= 0 &&
                    ngw_state.Command_Data.blue_end >= 0
                    )
                {
                    secondary = Color.FromArgb(ngw_state.Command_Data.red_end, ngw_state.Command_Data.green_end, ngw_state.Command_Data.blue_end);
                }

                switch (ngw_state.Command_Data.effect_type)
                {
                case "CHROMA_BREATHING":
                    current_effect = new CHROMA_BREATHING(primary, secondary, ngw_state.Command_Data.effect_config);
                    break;

                default:
                    current_effect = null;
                    break;
                }
            }
            else
            {
                Global.logger.Info("Unknown Wrapper Command: " + ngw_state.Command);
            }
        }
示例#5
0
        internal virtual void UpdateWrapperLights(IGameState new_game_state)
        {
            if (new_game_state is GameState_Wrapper)
            {
                _game_state = new_game_state;

                GameState_Wrapper ngw_state = (new_game_state as GameState_Wrapper);

                bitmap     = ngw_state.Sent_Bitmap;
                logo       = ngw_state.Extra_Keys.logo;
                g1         = ngw_state.Extra_Keys.G1;
                g2         = ngw_state.Extra_Keys.G2;
                g3         = ngw_state.Extra_Keys.G3;
                g4         = ngw_state.Extra_Keys.G4;
                g5         = ngw_state.Extra_Keys.G5;
                peripheral = ngw_state.Extra_Keys.peripheral;

                if (ngw_state.Command.Equals("SetLighting"))
                {
                    Color newfill = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);

                    if (!last_fill_color.Equals(newfill))
                    {
                        last_fill_color = newfill;

                        for (int i = 0; i < bitmap.Length; i += 4)
                        {
                            bitmap[i]     = (byte)ngw_state.Command_Data.blue_start;
                            bitmap[i + 1] = (byte)ngw_state.Command_Data.green_start;
                            bitmap[i + 2] = (byte)ngw_state.Command_Data.red_start;
                            bitmap[i + 3] = (byte)255;
                        }
                    }
                }
                else if (ngw_state.Command.Equals("SetLightingForKeyWithKeyName") || ngw_state.Command.Equals("SetLightingForKeyWithScanCode"))
                {
                    var bitmap_key = Devices.Logitech.LogitechDevice.ToLogitechBitmap((LedCSharp.keyboardNames)(ngw_state.Command_Data.key));

                    if (bitmap_key != Devices.Logitech.Logitech_keyboardBitmapKeys.UNKNOWN)
                    {
                        bitmap[(int)bitmap_key]     = (byte)ngw_state.Command_Data.blue_start;
                        bitmap[(int)bitmap_key + 1] = (byte)ngw_state.Command_Data.green_start;
                        bitmap[(int)bitmap_key + 2] = (byte)ngw_state.Command_Data.red_start;
                        bitmap[(int)bitmap_key + 3] = (byte)255;
                    }
                }
                else if (ngw_state.Command.Equals("FlashSingleKey"))
                {
                    Devices.DeviceKeys dev_key   = Devices.Logitech.LogitechDevice.ToDeviceKey((LedCSharp.keyboardNames)(ngw_state.Command_Data.key));
                    LogiFlashSingleKey neweffect = new LogiFlashSingleKey(dev_key, Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start),
                                                                          ngw_state.Command_Data.duration,
                                                                          ngw_state.Command_Data.interval
                                                                          );

                    if (key_effects.ContainsKey(dev_key))
                    {
                        key_effects[dev_key] = neweffect;
                    }
                    else
                    {
                        key_effects.Add(dev_key, neweffect);
                    }
                }
                else if (ngw_state.Command.Equals("PulseSingleKey"))
                {
                    Devices.DeviceKeys dev_key = Devices.Logitech.LogitechDevice.ToDeviceKey((LedCSharp.keyboardNames)(ngw_state.Command_Data.key));
                    long duration = ngw_state.Command_Data.interval == 0 ? 0 : ngw_state.Command_Data.duration;

                    LogiPulseSingleKey neweffect = new LogiPulseSingleKey(dev_key, Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start),
                                                                          Color.FromArgb(ngw_state.Command_Data.red_end, ngw_state.Command_Data.green_end, ngw_state.Command_Data.blue_end),
                                                                          duration
                                                                          );

                    if (key_effects.ContainsKey(dev_key))
                    {
                        key_effects[dev_key] = neweffect;
                    }
                    else
                    {
                        key_effects.Add(dev_key, neweffect);
                    }
                }
                else if (ngw_state.Command.Equals("PulseLighting"))
                {
                    current_effect = new LogiPulseLighting(
                        Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start),
                        ngw_state.Command_Data.duration,
                        ngw_state.Command_Data.interval
                        );
                }
                else if (ngw_state.Command.Equals("FlashLighting"))
                {
                    current_effect = new LogiFlashLighting(
                        Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start),
                        ngw_state.Command_Data.duration,
                        ngw_state.Command_Data.interval
                        );
                }
                else if (ngw_state.Command.Equals("StopEffects"))
                {
                    key_effects.Clear();
                    current_effect = null;
                }
                else if (ngw_state.Command.Equals("SetLightingFromBitmap"))
                {
                }
                //LightFX
                else if (ngw_state.Command.Equals("LFX_GetNumDevices"))
                {
                }
                else if (ngw_state.Command.Equals("LFX_Light"))
                {
                }
                else if (ngw_state.Command.Equals("LFX_SetLightColor"))
                {
                }
                else if (ngw_state.Command.Equals("LFX_Update"))
                {
                    Color newfill = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);

                    if (!last_fill_color.Equals(newfill))
                    {
                        last_fill_color = newfill;

                        for (int i = 0; i < bitmap.Length; i++)
                        {
                            bitmap[i] = (int)(((int)ngw_state.Command_Data.red_start << 16) | ((int)ngw_state.Command_Data.green_start << 8) | ((int)ngw_state.Command_Data.blue_start));
                        }

                        logo       = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);
                        peripheral = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);
                    }
                }
                else if (ngw_state.Command.Equals("LFX_SetLightActionColor") || ngw_state.Command.Equals("LFX_ActionColor"))
                {
                    Color primary   = Color.Transparent;
                    Color secondary = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);

                    if (current_effect != null)
                    {
                        primary = current_effect.GetCurrentColor(Utils.Time.GetMillisecondsSinceEpoch() - current_effect.timeStarted);
                    }

                    switch (ngw_state.Command_Data.effect_type)
                    {
                    case "LFX_ACTION_COLOR":
                        current_effect = new LFX_Color(primary);
                        break;

                    case "LFX_ACTION_PULSE":
                        current_effect = new LFX_Pulse(primary, secondary, ngw_state.Command_Data.duration);
                        break;

                    case "LFX_ACTION_MORPH":
                        current_effect = new LFX_Morph(primary, secondary, ngw_state.Command_Data.duration);
                        break;

                    default:
                        current_effect = null;
                        break;
                    }
                }
                else if (ngw_state.Command.Equals("LFX_SetLightActionColorEx") || ngw_state.Command.Equals("LFX_ActionColorEx"))
                {
                    Color primary   = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);
                    Color secondary = Color.FromArgb(ngw_state.Command_Data.red_end, ngw_state.Command_Data.green_end, ngw_state.Command_Data.blue_end);

                    switch (ngw_state.Command_Data.effect_type)
                    {
                    case "LFX_ACTION_COLOR":
                        current_effect = new LFX_Color(primary);
                        break;

                    case "LFX_ACTION_PULSE":
                        current_effect = new LFX_Pulse(primary, secondary, ngw_state.Command_Data.duration);
                        break;

                    case "LFX_ACTION_MORPH":
                        current_effect = new LFX_Morph(primary, secondary, ngw_state.Command_Data.duration);
                        break;

                    default:
                        current_effect = null;
                        break;
                    }
                }
                else if (ngw_state.Command.Equals("LFX_Reset"))
                {
                    current_effect = null;
                }
                //Razer
                else if (ngw_state.Command.Equals("CreateMouseEffect"))
                {
                }
                else if (ngw_state.Command.Equals("CreateKeyboardEffect"))
                {
                    Color primary   = Color.Red;
                    Color secondary = Color.Blue;

                    if (ngw_state.Command_Data.red_start >= 0 &&
                        ngw_state.Command_Data.green_start >= 0 &&
                        ngw_state.Command_Data.blue_start >= 0
                        )
                    {
                        primary = Color.FromArgb(ngw_state.Command_Data.red_start, ngw_state.Command_Data.green_start, ngw_state.Command_Data.blue_start);
                    }

                    if (ngw_state.Command_Data.red_end >= 0 &&
                        ngw_state.Command_Data.green_end >= 0 &&
                        ngw_state.Command_Data.blue_end >= 0
                        )
                    {
                        secondary = Color.FromArgb(ngw_state.Command_Data.red_end, ngw_state.Command_Data.green_end, ngw_state.Command_Data.blue_end);
                    }

                    switch (ngw_state.Command_Data.effect_type)
                    {
                    case "CHROMA_BREATHING":
                        current_effect = new CHROMA_BREATHING(primary, secondary, ngw_state.Command_Data.effect_config);
                        break;

                    default:
                        current_effect = null;
                        break;
                    }
                }
                else
                {
                    Global.logger.LogLine("Unknown Wrapper Command: " + ngw_state.Command, Logging_Level.Info, false);
                }
            }
        }
示例#6
0
        private void IPCServerThread()
        {
            PipeSecurity pipeSa = new PipeSecurity();

            pipeSa.SetAccessRule(new PipeAccessRule(new SecurityIdentifier(WellKnownSidType.WorldSid, null),
                                                    PipeAccessRights.ReadWrite, System.Security.AccessControl.AccessControlType.Allow));
            while (true)
            {
                try
                {
                    using (NamedPipeServerStream pipeStream = new NamedPipeServerStream(
                               "Aurora\\server",
                               PipeDirection.In,
                               NamedPipeServerStream.MaxAllowedServerInstances,
                               PipeTransmissionMode.Message,
                               PipeOptions.None,
                               5 * 1024,
                               5 * 1024,
                               pipeSa,
                               HandleInheritability.None
                               ))
                    {
                        wrapper_connected = false;
                        wrapped_process   = "";
                        Global.logger.LogLine(String.Format("[IPCServer] Pipe created {0}", pipeStream.GetHashCode()));

                        pipeStream.WaitForConnection();
                        Global.logger.LogLine("[IPCServer] Pipe connection established");

                        using (StreamReader sr = new StreamReader(pipeStream))
                        {
                            string temp;
                            while ((temp = sr.ReadLine()) != null)
                            {
                                //Global.logger.LogLine(String.Format("{0}: {1}", DateTime.Now, temp));

                                GameState_Wrapper new_state = new GameState_Wrapper(temp); //GameState_Wrapper

                                wrapper_connected = true;
                                wrapped_process   = new_state.Provider.Name.ToLowerInvariant();

                                if (new_state.Provider.Name.ToLowerInvariant().Equals("gta5.exe"))
                                {
                                    CurrentGameState = new Profiles.GTA5.GSI.GameState_GTA5(temp);
                                }
                                else
                                {
                                    CurrentGameState = new_state;
                                }
                            }
                        }
                    }

                    wrapper_connected = false;
                    wrapped_process   = "";
                    Global.logger.LogLine("[IPCServer] Pipe connection lost");
                }
                catch (Exception exc)
                {
                    wrapper_connected = false;
                    wrapped_process   = "";
                    Global.logger.LogLine("[IPCServer] Named Pipe Exception, " + exc, Logging_Level.Error);
                }
            }
        }