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; }
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); }
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); }