private void UpdateFormControls(object sender, GameMemoryArgs args)
        {
            if (this.IsHandleCreated)
            {
                this.BeginInvoke((MethodInvoker) delegate
                {
                    gbPlayer.Enabled           = args.PlayerLoaded;
                    gbPlayerPositions.Enabled  = args.PlayerLoaded;
                    btnPlayerPositions.Enabled = args.PlayerLoaded;
                    gbEnemy.Enabled            = args.EnemyListLoaded;
                    gbPedestrian.Enabled       = args.PedestrianListLoaded;
                    gbGeneral.Enabled          = args.GeneralLoaded;

                    // Player
                    lblPlayerModelNameValue.Text     = args.PlayerModelName;
                    lblPlayerHealthCurrentValue.Text = args.PlayerHealthCurrent;
                    lblPlayerHealthMaxValue.Text     = args.PlayerHealthMax;
                    lblPlayerPowerCurrentValue.Text  = args.PlayerPowerCurrent;
                    lblPlayerPowerMaxValue.Text      = args.PlayerPowerMax;
                    lblPlayerRepCurrentValue.Text    = args.PlayerRepCurrent;
                    lblPlayerRepMaxValue.Text        = args.PlayerRepMax;
                    lblPlayerPositionXValue.Text     = args.PlayerPositionX;
                    lblPlayerPositionYValue.Text     = args.PlayerPositionY;
                    lblPlayerPositionZValue.Text     = args.PlayerPositionZ;
                    lblPlayerRotationYawValue.Text   = args.PlayerRotationYaw;

                    // Enemy List
                    if (cbEnemySelected.Items.Count != args.EnemyList.Length)
                    {
                        tblEnemySelected.Enabled = false;
                        cbEnemySelected.Items.Clear();
                        cbEnemySelected.Items.AddRange(args.EnemyList);
                        _gameMemory.EnemySelectedIndex = -1;
                    }
                    lblEnemyCountValue.Text = args.EnemyCount;

                    // Enemy Selected
                    lblEnemyHealthCurrentValue.Text = args.EnemySelectedHealthCurrent;
                    lblEnemyHealthMaxValue.Text     = args.EnemySelectedHealthMax;
                    lblEnemyPositionXValue.Text     = args.EnemySelectedPositionX;
                    lblEnemyPositionYValue.Text     = args.EnemySelectedPositionY;
                    lblEnemyPositionZValue.Text     = args.EnemySelectedPositionZ;
                    lblEnemyRotationYawValue.Text   = args.EnemySelectedRotationYaw;

                    // Pedestrian List
                    if (cbPedestrianSelected.Items.Count != args.PedestrianList.Length)
                    {
                        tblPedestrianSelected.Enabled = false;
                        cbPedestrianSelected.Items.Clear();
                        cbPedestrianSelected.Items.AddRange(args.PedestrianList);
                        _gameMemory.PedestrianSelectedIndex = -1;
                    }
                    lblPedestrianCountValue.Text = args.PedestrianCount;

                    // Pedestrian Selected
                    lblPedestrianPositionXValue.Text = args.PedestrianSelectedPositionX;
                    lblPedestrianPositionYValue.Text = args.PedestrianSelectedPositionY;
                    lblPedestrianPositionZValue.Text = args.PedestrianSelectedPositionZ;

                    // General
                    lblGeneralMapValue.Text         = args.GeneralMap;
                    lblGeneralCanPressureValue.Text = args.GeneralCanPressure;
                });
            }
        }
Exemplo n.º 2
0
        private void SendEventGameMemory()
        {
            GameMemoryArgs gameMemoryArgs = new GameMemoryArgs();

            gameMemoryArgs.PlayerLoaded         = _player.BaseAddress != IntPtr.Zero;
            gameMemoryArgs.EnemyListLoaded      = _enemyList.Count > 0;
            gameMemoryArgs.PedestrianListLoaded = _pedestrianList.Count > 0;
            gameMemoryArgs.GeneralLoaded        = _general.Loaded;

            // Player
            gameMemoryArgs.PlayerModelName     = _player.ModelName.Value;
            gameMemoryArgs.PlayerHealthCurrent = _player.HealthCurrent.Value.ToString();
            gameMemoryArgs.PlayerHealthMax     = _player.HealthMax.Value.ToString();
            gameMemoryArgs.PlayerPowerCurrent  = _player.PowerCurrent.Value.ToString();
            gameMemoryArgs.PlayerPowerMax      = _player.PowerMax.Value.ToString();
            gameMemoryArgs.PlayerRepCurrent    = _player.RepCurrent.Value.ToString();
            gameMemoryArgs.PlayerRepMax        = _player.RepMax.Value.ToString();
            gameMemoryArgs.PlayerPositionX     = _player.PositionX.Value.ToString();
            gameMemoryArgs.PlayerPositionY     = _player.PositionY.Value.ToString();
            gameMemoryArgs.PlayerPositionZ     = _player.PositionZ.Value.ToString();
            gameMemoryArgs.PlayerRotationYaw   = _player.RotationYaw.Value.ToString();

            // Enemy List
            gameMemoryArgs.EnemyList  = _enemyList.Select((i, index) => $"{(index + 1).ToString()}: {i.ModelName.Value}").ToArray();
            gameMemoryArgs.EnemyCount = _enemyList.Count.ToString();

            // Enemy Selected
            if (_enemySelectedIndex > -1)
            {
                if (_enemySelectedIndex >= _enemyList.Count)
                {
                    _enemySelectedIndex = -1;                      // Out of bounds: clear index
                }
                else
                {
                    Character enemySelected = _enemyList[_enemySelectedIndex];
                    gameMemoryArgs.EnemySelectedHealthCurrent = enemySelected.HealthCurrent.Value.ToString();
                    gameMemoryArgs.EnemySelectedHealthMax     = enemySelected.HealthMax.Value.ToString();
                    gameMemoryArgs.EnemySelectedPositionX     = enemySelected.PositionX.Value.ToString();
                    gameMemoryArgs.EnemySelectedPositionY     = enemySelected.PositionY.Value.ToString();
                    gameMemoryArgs.EnemySelectedPositionZ     = enemySelected.PositionZ.Value.ToString();
                    gameMemoryArgs.EnemySelectedRotationYaw   = enemySelected.RotationYaw.Value.ToString();
                }
            }

            // Pedestrian List
            gameMemoryArgs.PedestrianList  = _pedestrianList.Select((i, index) => $"Pedestrian {(index + 1).ToString()}").ToArray();
            gameMemoryArgs.PedestrianCount = _pedestrianList.Count.ToString();

            // Pedestrian Selected
            if (_pedestrianSelectedIndex > -1)
            {
                if (_pedestrianSelectedIndex >= _pedestrianList.Count)
                {
                    _pedestrianSelectedIndex = -1;                     // Out of bounds: clear index
                }
                else
                {
                    Pedestrian pedestrianSelected = _pedestrianList[_pedestrianSelectedIndex];
                    gameMemoryArgs.PedestrianSelectedPositionX = pedestrianSelected.PositionX.Value.ToString();
                    gameMemoryArgs.PedestrianSelectedPositionY = pedestrianSelected.PositionY.Value.ToString();
                    gameMemoryArgs.PedestrianSelectedPositionZ = pedestrianSelected.PositionZ.Value.ToString();
                }
            }

            // General
            gameMemoryArgs.GeneralMap         = _general.Map.Value;
            gameMemoryArgs.GeneralCanPressure = _general.CanPressure.Value.ToString();

            MemoryWatchEventHandler.Invoke(this, gameMemoryArgs);
        }