예제 #1
0
        private void StopHacking(MyHackingResultEnum result, HackingResultAction action = null, object[] parameters = null)
        {
            MyHackingResultMessage resultMessage = m_hackingResultMessages[(int)result];

            if (resultMessage != null)
            {
                //MyGuiManager.AddScreen(new MyGuiScreenMessageBox(resultConfig.MessageBoxType, resultConfig.Text, MyTextsWrapperEnum.HackingResult, MyTextsWrapperEnum.Ok, null));
                resultMessage.Display(parameters);
            }

            if (m_hackingProgressScreen != null)
            {
                if (m_hackingProgressScreen.GetState() != MyGuiScreenState.CLOSED)
                {
                    m_hackingProgressScreen.CloseScreenNow();
                }
                m_hackingProgressScreen.OnCanceled -= m_hackingProgressScreenCanceled;
                m_hackingProgressScreen.OnSuccess  -= m_hackingProgressScreenSuccess;
                m_hackingProgressScreen             = null;
            }
            m_owner.OnDie -= m_ownerDie;
            if (action != null)
            {
                action();
            }
            NotifyHackingFinish(result);
            m_acutalHackingEntity = null;
            //m_hackingTimeLeft = 0;
            m_state = MyHackingToolStateEnum.Idle;
        }
예제 #2
0
        public void Hack(IMyUseableEntity entityToHack)
        {
            if (entityToHack == null)
            {
                throw new ArgumentNullException("entityToHack");
            }
            if (!entityToHack.CanBeHacked(m_owner))
            {
                StopHacking(MyHackingResultEnum.CanNotBeHacked);
                return;
            }
            if (HackingLevel < 1)
            {
                StopHacking(MyHackingResultEnum.NoHackingTool);
                return;
            }
            if (entityToHack.UseProperties.HackingLevel > HackingLevel)
            {
                StopHacking(MyHackingResultEnum.NotEnoughLevel, null, new object[] { entityToHack.UseProperties.HackingLevel, HackingLevel });
                return;
            }

            m_state = MyHackingToolStateEnum.Hacking;
            m_acutalHackingEntity = entityToHack;
            //m_hackingTimeTotal = (int)((float)entityToHack.UseProperties.HackingTime * (1f - (HackingLevel - entityToHack.UseProperties.HackingLevel) * 0.25f));
            //m_hackingTimeLeft = m_hackingTimeTotal;
            NotifyHackingStart();
            int hackingTimeTotal = (int)((float)entityToHack.UseProperties.HackingTime * (1f - (HackingLevel - entityToHack.UseProperties.HackingLevel) * 0.25f));

            m_hackingProgressScreen             = new MyGuiScreenUseProgressBar(MyTextsWrapperEnum.Hacking, MyTextsWrapperEnum.HackingProgress, 0f, MySoundCuesEnum.SfxProgressHack, MySoundCuesEnum.SfxCancelHack, MyGameControlEnums.USE, 50, hackingTimeTotal, 0);
            m_hackingProgressScreen.OnCanceled += m_hackingProgressScreenCanceled;
            m_hackingProgressScreen.OnSuccess  += m_hackingProgressScreenSuccess;
            m_owner.OnDie += m_ownerDie;
            MyGuiManager.AddScreen(m_hackingProgressScreen);
        }
예제 #3
0
        private void StopHacking(MyHackingResultEnum result, HackingResultAction action = null, object[] parameters = null) 
        {                        
            MyHackingResultMessage resultMessage = m_hackingResultMessages[(int)result];
            if (resultMessage != null)
            {
                //MyGuiManager.AddScreen(new MyGuiScreenMessageBox(resultConfig.MessageBoxType, resultConfig.Text, MyTextsWrapperEnum.HackingResult, MyTextsWrapperEnum.Ok, null));
                resultMessage.Display(parameters);
            }

            if (m_hackingProgressScreen != null)
            {
                if (m_hackingProgressScreen.GetState() != MyGuiScreenState.CLOSED)
                {
                    m_hackingProgressScreen.CloseScreenNow();
                }
                m_hackingProgressScreen.OnCanceled -= m_hackingProgressScreenCanceled;
                m_hackingProgressScreen.OnSuccess -= m_hackingProgressScreenSuccess;
                m_hackingProgressScreen = null;
            }
            m_owner.OnDie -= m_ownerDie;
            if (action != null) 
            {
                action();
            }
            NotifyHackingFinish(result);
            m_acutalHackingEntity = null;
            //m_hackingTimeLeft = 0;
            m_state = MyHackingToolStateEnum.Idle;
        }
예제 #4
0
        public void Hack(IMyUseableEntity entityToHack) 
        {
            if (entityToHack == null) 
            {
                throw new ArgumentNullException("entityToHack");
            }
            if (!entityToHack.CanBeHacked(m_owner)) 
            {
                StopHacking(MyHackingResultEnum.CanNotBeHacked);
                return;
            }
            if (HackingLevel < 1) 
            {
                StopHacking(MyHackingResultEnum.NoHackingTool);
                return;
            }
            if (entityToHack.UseProperties.HackingLevel > HackingLevel) 
            {
                StopHacking(MyHackingResultEnum.NotEnoughLevel, null, new object[]{ entityToHack.UseProperties.HackingLevel, HackingLevel });
                return;
            }

            m_state = MyHackingToolStateEnum.Hacking;
            m_acutalHackingEntity = entityToHack;
            //m_hackingTimeTotal = (int)((float)entityToHack.UseProperties.HackingTime * (1f - (HackingLevel - entityToHack.UseProperties.HackingLevel) * 0.25f));
            //m_hackingTimeLeft = m_hackingTimeTotal;
            NotifyHackingStart();
            int hackingTimeTotal = (int)((float)entityToHack.UseProperties.HackingTime * (1f - (HackingLevel - entityToHack.UseProperties.HackingLevel) * 0.25f));
            m_hackingProgressScreen = new MyGuiScreenUseProgressBar(MyTextsWrapperEnum.Hacking, MyTextsWrapperEnum.HackingProgress, 0f, MySoundCuesEnum.SfxProgressHack, MySoundCuesEnum.SfxCancelHack, MyGameControlEnums.USE, 50, hackingTimeTotal, 0);
            m_hackingProgressScreen.OnCanceled += m_hackingProgressScreenCanceled;
            m_hackingProgressScreen.OnSuccess += m_hackingProgressScreenSuccess;
            m_owner.OnDie += m_ownerDie;
            MyGuiManager.AddScreen(m_hackingProgressScreen);
        }