private void MessageManagerNewMessage(object _sender, Message _message) { if (_message is AskMessageNg) { var amng = (AskMessageNg)_message; switch (amng.AskMessageType) { case EAskMessageType.LOOK_AT: MessageManager.SendMessage(this, new OpenUIBlockMessage(new LookAtUiBlock(m_mainUiBlock.Messages, m_mainUiBlock.Map.Rct))); break; case EAskMessageType.ASK_DIRECTION: MessageManager.SendMessage(this, new OpenUIBlockMessage(new AskDirectionUiBlock(m_mainUiBlock.Map.Rct, amng))); break; case EAskMessageType.HELP: MessageManager.SendMessage(this, new OpenUIBlockMessage(new HelpUiBlock(m_mainUiBlock.Rct))); break; case EAskMessageType.HOW_MUCH: MessageManager.SendMessage(this, new OpenUIBlockMessage(new AskHowMuchUiBlock(m_mainUiBlock.Messages.ContentRct, amng))); break; case EAskMessageType.ASK_SHOOT_TARGET: MessageManager.SendMessage(this, new OpenUIBlockMessage(new SelectTargetUiBlock(m_mainUiBlock.Messages, m_mainUiBlock.Map.Rct, amng))); break; case EAskMessageType.ASK_DESTINATION: MessageManager.SendMessage(this, new OpenUIBlockMessage(new SelectDestinationUiBlock(m_mainUiBlock.Messages, m_mainUiBlock.Map.Rct, amng.Act))); break; case EAskMessageType.SELECT_THINGS: MessageManager.SendMessage(this, new OpenUIBlockMessage(new SelectItemsUiBlock(m_mainUiBlock.Rct, amng))); break; case EAskMessageType.SELECT_THINGS_FROM_BACK_PACK: MessageManager.SendMessage(this, new OpenUIBlockMessage(new BackpackUiBlock(m_mainUiBlock.Rct, amng))); break; case EAskMessageType.INVENTORY: MessageManager.SendMessage(this, new OpenUIBlockMessage(new EquipmentUiBlock(m_mainUiBlock.Rct))); break; case EAskMessageType.WORLD_MAP: MessageManager.SendMessage(this, new OpenUIBlockMessage(new MiniMapUiBlock(m_mainUiBlock.Map.Rct))); break; default: throw new ArgumentOutOfRangeException(); } } else if (_message is OpenUIBlockMessage) { var uiBlock = ((OpenUIBlockMessage)_message).UIBlock; UiBlocks.Push(uiBlock); MouseMove(m_lastMousePos); } else if (_message is SystemMessage) { switch (((SystemMessage)_message).Message) { case SystemMessage.ESystemMessage.EXIT_GAME: m_gameProvider.Exit(); break; case SystemMessage.ESystemMessage.CLOSE_TOP_UI_BLOCK: UiBlocks.Pop().Dispose(); m_pressed.Clear(); m_downKeys.Clear(); MessageManager.SendMessage(this, WorldMessage.Turn); break; default: throw new ArgumentOutOfRangeException(); } } }