/// <summary>
        /// DoDamage on prefabs can be modified by cheats (FRIEND_NEUTRAL_CANT_DIE)
        /// </summary>
        protected override void DoDamageInternal(float playerDamage, float damage, float empDamage, MinerWars.AppCode.Game.Utils.MyDamageType damageType, MinerWars.AppCode.Game.Utils.MyAmmoType ammoType, MinerWars.AppCode.Game.Entities.MyEntity damageSource, bool justDeactivate)
        {
            if (MyFakes.INDESTRUCTIBLE_PREFABS)
            {
                return;
            }

            if (m_isExploded)
                return;

            if (MyGuiScreenGamePlay.Static != null && MySession.PlayerShip != null && damageSource != null)
            {
                var playerFactionRelation = MyFactions.GetFactionsRelation(this, damageSource);

                // Disable damage on friendly prefabs when FRIEND_NEUTRAL_CANT_DIE cheat is enabled
                if (playerFactionRelation == MyFactionRelationEnum.Friend &&
                    MyGuiScreenGamePlay.Static.IsCheatEnabled(MyGameplayCheatsEnum.FRIEND_NEUTRAL_CANT_DIE))
                {
                    return;
                }
            }

            damage *= PrefabDamageMultiplier;

            base.DoDamageInternal(playerDamage, damage, empDamage, damageType, ammoType, damageSource, justDeactivate);
            ElectricCapacity -= empDamage;

            //NeedsUpdate = true;
            RecheckNeedsUpdate();
                    
            if (IsDead() && !m_isExploded)
            {
                if (justDeactivate)
                {
                    //Activate(false);
                    MarkForClose();
                }
                else
                {
                    MarkForClose();
                    Explode();
                }

                MakeWaypointsFree();

                m_isExploded = true;

                if (CausesAlarm)
                {
                    m_owner.LaunchAlarm(this, damageSource);
                }

            }
        }
        private void OnVideoModeChangedAndComfirm(MinerWars.AppCode.Game.VideoMode.MyVideoModeManager.MyVideoModeChangeOperation result)
        {
            bool changed = MyVideoModeManager.EndChangeVideoMode(result);

            if (changed)
            {
                if (MyVideoModeManager.HasAnythingChanged(result))
                {
                    //udpate screen here
                    m_waitingForConfirmation = true;
                    MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.MESSAGE, MyTextsWrapperEnum.DoYouWantToKeepTheseSettingsXSecondsRemaining,
                        MyTextsWrapperEnum.MessageBoxCaptionPleaseConfirm, MyTextsWrapperEnum.Yes, MyTextsWrapperEnum.No,
                        OnMessageBoxCallback, MyGuiConstants.VIDEO_OPTIONS_CONFIRMATION_TIMEOUT_IN_MILISECONDS));
                }
            }
            else
            {
                MyGuiManager.AddScreen(new MyGuiScreenMessageBox(MyMessageBoxType.ERROR, MyTextsWrapperEnum.SorryButSelectedSettingsAreNotSupportedByYourHardware,
                    MyTextsWrapperEnum.MessageBoxCaptionError, MyTextsWrapperEnum.Ok, null));

                m_doRevert = true;
            }
        }
 private void OnVideoModeChanged(MinerWars.AppCode.Game.VideoMode.MyVideoModeManager.MyVideoModeChangeOperation result)
 {
     UpdateControls(m_settingsOld);
     UpdateSettings(m_settingsNew);
 }
 internal extern static uint MapVirtualKeyEx(uint key, MinerWars.AppCode.Game.GUI.Core.MyGuiLocalizedKeyboardState.MAPVK mappingType, IntPtr keyboardLayout);