コード例 #1
0
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            var dPoint = KeyTranslator.GetDirection(_key);

            if (dPoint != null)
            {
                var newPoint = m_targetPoint + dPoint + m_avatarScreenPoint;
                if (ContentRct.Contains(newPoint))
                {
                    m_targetPoint += dPoint;
                }
            }
            switch (_key)
            {
            case ConsoleKey.Escape:
            case ConsoleKey.Z:
                m_act.IsCancelled = true;
                CloseTopBlock();
                break;

            case ConsoleKey.Enter:
            case ConsoleKey.M:
                if (m_path != null)
                {
                    m_act.AddParameter(m_path);
                    m_act.AddParameter(int.MaxValue);
                    CloseTopBlock();
                }
                return;
            }
            //MessageManager.SendMessage(this, WorldMessage.JustRedraw);
        }
コード例 #2
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			if (_modifiers != EKeyModifiers.NONE) return;
			switch (_key)
			{
				case ConsoleKey.Escape:
				case ConsoleKey.Z:
					CloseTopBlock();
					return;
				case ConsoleKey.V:
					MessageManager.SendMessage(this, new OpenUIBlockMessage(new BackpackUiBlock(Rct)));
					return;
			}
			var presenter = m_presenters.SingleOrDefault(_presenter => _presenter.Key == _key);

			if (presenter != null)
			{
				if (presenter.Item == null)
				{
					MessageManager.SendMessage(this, new OpenUIBlockMessage(new SelectToTakeOnUiBlock(Rct, this, presenter)));
				}
				else
				{
					Intelligent.TakeOff(presenter.Place);
					Rebuild();
				}
			}
		}
コード例 #3
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			switch (_key)
			{
				case ConsoleKey.A:
					Constants.WORLD_MAP_SIZE = 32;
					Constants.WORLD_SEED = new Random().Next(10000);
					//Constants.WORLD_SEED = 2;
                    m_game.Run();
					break;
				case ConsoleKey.B:
					Constants.WORLD_MAP_SIZE = 100;
					Constants.WORLD_SEED = new Random().Next(10000);
                    m_game.Run();
					break;
				case ConsoleKey.C:
					Constants.WORLD_MAP_SIZE = 1;
					Constants.WORLD_SEED = 1;
                    m_game.Run();
					break;
				case ConsoleKey.D:
					Constants.WORLD_MAP_SIZE = 1;
					Constants.WORLD_SEED = 2;
                    m_game.Run();
					break;
				case ConsoleKey.E:
					Constants.WORLD_MAP_SIZE = 1;
					Constants.WORLD_SEED = 0;
                    m_game.Run();
					break;
			}
		}
コード例 #4
0
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            var dPoint = KeyTranslator.GetDirection(_key);

            if (dPoint != null)
            {
                var newPoint = m_targetPoint + dPoint + m_addPoint;
                if (ContentRct.Contains(newPoint))
                {
                    m_targetPoint += dPoint;
                    if (m_targetPoint.Lenght > m_maxDistance)
                    {
                        m_targetPoint *= m_maxDistance / m_targetPoint.Lenght;
                    }
                }
            }
            switch (_key)
            {
            case ConsoleKey.Escape:
            case ConsoleKey.Z:
                m_act.IsCancelled = true;
                CloseTopBlock();
                break;

            case ConsoleKey.OemPlus:
                if (_modifiers != EKeyModifiers.NONE)
                {
                    return;
                }
                m_currentTarget++;
                SelectTargetFromList();
                break;

            case ConsoleKey.OemMinus:
                if (_modifiers != EKeyModifiers.NONE)
                {
                    return;
                }
                m_currentTarget--;
                SelectTargetFromList();
                break;

            case ConsoleKey.Add:
                m_currentTarget++;
                SelectTargetFromList();
                break;

            case ConsoleKey.Subtract:
                m_currentTarget--;
                SelectTargetFromList();
                break;

            case ConsoleKey.Enter:
            case ConsoleKey.T:
                m_act.AddParameter(m_realTarget);
                CloseTopBlock();
                return;
            }
            //MessageManager.SendMessage(this, WorldMessage.JustRedraw);
        }
コード例 #5
0
 public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
 {
     if (m_turnMessages.Count > 0)
     {
         PrepareText();
     }
 }
コード例 #6
0
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            if (_modifiers != EKeyModifiers.NONE)
            {
                return;
            }
            switch (_key)
            {
            case ConsoleKey.Escape:
            case ConsoleKey.Z:
                CloseTopBlock();
                return;

            case ConsoleKey.V:
                MessageManager.SendMessage(this, new OpenUIBlockMessage(new BackpackUiBlock(Rct)));
                return;
            }
            var presenter = m_presenters.SingleOrDefault(_presenter => _presenter.Key == _key);

            if (presenter != null)
            {
                if (presenter.Item == null)
                {
                    MessageManager.SendMessage(this, new OpenUIBlockMessage(new SelectToTakeOnUiBlock(Rct, this, presenter)));
                }
                else
                {
                    Intelligent.TakeOff(presenter.Place);
                    Rebuild();
                }
            }
        }
コード例 #7
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			var dPoint = KeyTranslator.GetDirection(_key);
			if (dPoint != null)
			{
				var newPoint = m_targetPoint + dPoint + m_avatarScreenPoint;
				if (ContentRct.Contains(newPoint))
				{
					m_targetPoint += dPoint;
				}
			}
			switch (_key)
			{
				case ConsoleKey.Escape:
				case ConsoleKey.Z:
					m_act.IsCancelled = true;
					CloseTopBlock();
					break;
				case ConsoleKey.Enter:
				case ConsoleKey.M:
					if (m_path != null)
					{
						m_act.AddParameter(m_path);
						m_act.AddParameter(int.MaxValue);
						CloseTopBlock();
					}
					return;
			}
			//MessageManager.SendMessage(this, WorldMessage.JustRedraw);
		}
コード例 #8
0
		public virtual void SendKey(ConsoleKey _key, EKeyModifiers _modifiers = EKeyModifiers.NONE)
		{
			World.TheWorld.KeyPressed(_key, _modifiers);
			do
			{
				World.TheWorld.GameUpdated();
			} while (World.TheWorld.CreatureManager.FirstActiveCreature != Avatar);
		}
コード例 #9
0
 public virtual void SendKey(ConsoleKey _key, EKeyModifiers _modifiers = EKeyModifiers.NONE)
 {
     World.TheWorld.KeyPressed(_key, _modifiers);
     do
     {
         World.TheWorld.GameUpdated();
     } while (World.TheWorld.CreatureManager.FirstActiveCreature != Avatar);
 }
コード例 #10
0
 public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
 {
     switch (_key)
     {
     case ConsoleKey.Escape:
     case ConsoleKey.Z:
         CloseTopBlock();
         break;
     }
 }
コード例 #11
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			switch (_key)
			{
				case ConsoleKey.Z:
				case ConsoleKey.Escape:
					CloseTopBlock();
					break;
			}
		}
コード例 #12
0
        public void KeyPressed(ConsoleKey _key, EKeyModifiers _modifiers = EKeyModifiers.NONE)
        {
            var act = KeyTranslator.TranslateKey(_key, _modifiers);

            if (act == null)
            {
                return;
            }

            Avatar.AddActToPool(act);
        }
コード例 #13
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			if (_modifiers != EKeyModifiers.NONE) return;
			if (_key == ConsoleKey.Y || _key == ConsoleKey.L)
			{
				MessageManager.SendMessage(this, new SystemMessage(SystemMessage.ESystemMessage.EXIT_GAME));
			}
			if (_key == ConsoleKey.N || _key == ConsoleKey.Y || _key == ConsoleKey.Escape)
			{
				MessageManager.SendMessage(this, new SystemMessage(SystemMessage.ESystemMessage.CLOSE_TOP_UI_BLOCK));
			}
		}
コード例 #14
0
		public static Act TranslateKey(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			var tuple = new Tuple<ConsoleKey, EKeyModifiers>(_key, _modifiers);
			Type type;
			if (!m_acts.TryGetValue(tuple, out type))
			{
				return null;
			}
			var act = GetAct(type);
			act.AddParameter(_key);
			act.AddParameter(_modifiers);
			return act;
		}
コード例 #15
0
ファイル: HelpUiBlock.cs プロジェクト: Foxbow74/my-busycator
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			switch (_key)
			{
				case ConsoleKey.A:
					MessageManager.SendMessage(this, new OpenUIBlockMessage(new HelpKeyBindingUiBlock(Rct)));
					break;
				case ConsoleKey.Z:
				case ConsoleKey.Escape:
					CloseTopBlock();
					break;
			}
		}
コード例 #16
0
ファイル: HelpUiBlock.cs プロジェクト: Foxbow74/my-busycator
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            switch (_key)
            {
            case ConsoleKey.A:
                MessageManager.SendMessage(this, new OpenUIBlockMessage(new HelpKeyBindingUiBlock(Rct)));
                break;

            case ConsoleKey.Z:
            case ConsoleKey.Escape:
                CloseTopBlock();
                break;
            }
        }
コード例 #17
0
 public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
 {
     if (_modifiers != EKeyModifiers.NONE)
     {
         return;
     }
     if (_key == ConsoleKey.Y || _key == ConsoleKey.L)
     {
         MessageManager.SendMessage(this, new SystemMessage(SystemMessage.ESystemMessage.EXIT_GAME));
     }
     if (_key == ConsoleKey.N || _key == ConsoleKey.Y || _key == ConsoleKey.Escape)
     {
         MessageManager.SendMessage(this, new SystemMessage(SystemMessage.ESystemMessage.CLOSE_TOP_UI_BLOCK));
     }
 }
コード例 #18
0
        public static Act TranslateKey(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            var  tuple = new Tuple <ConsoleKey, EKeyModifiers>(_key, _modifiers);
            Type type;

            if (!m_acts.TryGetValue(tuple, out type))
            {
                return(null);
            }
            var act = GetAct(type);

            act.AddParameter(_key);
            act.AddParameter(_modifiers);
            return(act);
        }
コード例 #19
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			var dPoint = KeyTranslator.GetDirection(_key);
			if (dPoint != null)
			{
				var newPoint = m_targetPoint + dPoint + m_addPoint;
				if (ContentRct.Contains(newPoint))
				{
					m_targetPoint += dPoint;
					if (m_targetPoint.Lenght > m_maxDistance)
					{
						m_targetPoint *= m_maxDistance/m_targetPoint.Lenght;
					}
				}
			}
			switch (_key)
			{
				case ConsoleKey.Escape:
				case ConsoleKey.Z:
					m_act.IsCancelled = true;
					CloseTopBlock();
					break;
				case ConsoleKey.OemPlus:
					if (_modifiers != EKeyModifiers.NONE) return;
					m_currentTarget++;
					SelectTargetFromList();
					break;
				case ConsoleKey.OemMinus:
					if (_modifiers != EKeyModifiers.NONE) return;
					m_currentTarget--;
					SelectTargetFromList();
					break;
				case ConsoleKey.Add:
					m_currentTarget++;
					SelectTargetFromList();
					break;
				case ConsoleKey.Subtract:
					m_currentTarget--;
					SelectTargetFromList();
					break;
				case ConsoleKey.Enter:
				case ConsoleKey.T:
					m_act.AddParameter(m_realTarget);
					CloseTopBlock();
					return;
			}
			//MessageManager.SendMessage(this, WorldMessage.JustRedraw);
		}
コード例 #20
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			var dPoint = KeyTranslator.GetDirection(_key);
			if (dPoint != null)
			{
				m_message.Act.AddParameter(dPoint);
				CloseTopBlock();
				return;
			}

			if (_key == ConsoleKey.Escape)
			{
				m_message.Act.IsCancelled = true;
				CloseTopBlock();
			}
		}
コード例 #21
0
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            switch (_key)
            {
            case ConsoleKey.Backspace:
                m_count = m_count.Length > 0 ? (m_count.Substring(0, m_count.Length - 1)) : "";
                break;

            case ConsoleKey.NumPad0:
            case ConsoleKey.NumPad1:
            case ConsoleKey.NumPad2:
            case ConsoleKey.NumPad3:
            case ConsoleKey.NumPad4:
            case ConsoleKey.NumPad5:
            case ConsoleKey.NumPad6:
            case ConsoleKey.NumPad7:
            case ConsoleKey.NumPad8:
            case ConsoleKey.NumPad9:
            case ConsoleKey.D0:
            case ConsoleKey.D1:
            case ConsoleKey.D2:
            case ConsoleKey.D3:
            case ConsoleKey.D4:
            case ConsoleKey.D5:
            case ConsoleKey.D6:
            case ConsoleKey.D7:
            case ConsoleKey.D8:
            case ConsoleKey.D9:
                var name = Enum.GetName(typeof(ConsoleKey), _key);
                if (m_count.Length < m_message.GetFirstParameter <int>().ToString().Length)
                {
                    m_count += name.Substring(name.Length - 1, 1);
                }
                break;

            case ConsoleKey.Enter:
                var cnt = Math.Min(int.Parse(m_count), m_message.GetFirstParameter <int>());
                m_message.Act.AddParameter(cnt);
                CloseTopBlock();
                break;

            case ConsoleKey.Escape:
                m_message.Act.AddParameter(0);
                CloseTopBlock();
                break;
            }
        }
コード例 #22
0
ファイル: MainUiBlock.cs プロジェクト: Foxbow74/my-busycator
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			var tuple = new Tuple<ConsoleKey, EKeyModifiers>(_key, _modifiers);
			if (new QuitAct().ConsoleKeys.Contains(tuple))
			{
				MessageManager.SendMessage(this, new OpenUIBlockMessage(new ConfirmQuitBlock()));
				return;
			}

			if(m_messages.NeedWait)
			{
				m_messages.KeysPressed(_key, _modifiers);
				return;
			}

			World.TheWorld.KeyPressed(_key, _modifiers);
		}
コード例 #23
0
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            var dPoint = KeyTranslator.GetDirection(_key);

            if (dPoint != null)
            {
                m_message.Act.AddParameter(dPoint);
                CloseTopBlock();
                return;
            }

            if (_key == ConsoleKey.Escape)
            {
                m_message.Act.IsCancelled = true;
                CloseTopBlock();
            }
        }
コード例 #24
0
ファイル: MainUiBlock.cs プロジェクト: Foxbow74/my-busycator
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            var tuple = new Tuple <ConsoleKey, EKeyModifiers>(_key, _modifiers);

            if (new QuitAct().ConsoleKeys.Contains(tuple))
            {
                MessageManager.SendMessage(this, new OpenUIBlockMessage(new ConfirmQuitBlock()));
                return;
            }

            if (m_messages.NeedWait)
            {
                m_messages.KeysPressed(_key, _modifiers);
                return;
            }

            World.TheWorld.KeyPressed(_key, _modifiers);
        }
コード例 #25
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			switch (_key)
			{
				case ConsoleKey.Backspace:
					m_count = m_count.Length > 0 ? (m_count.Substring(0, m_count.Length - 1)) : "";
					break;
				case ConsoleKey.NumPad0:
				case ConsoleKey.NumPad1:
				case ConsoleKey.NumPad2:
				case ConsoleKey.NumPad3:
				case ConsoleKey.NumPad4:
				case ConsoleKey.NumPad5:
				case ConsoleKey.NumPad6:
				case ConsoleKey.NumPad7:
				case ConsoleKey.NumPad8:
				case ConsoleKey.NumPad9:
				case ConsoleKey.D0:
				case ConsoleKey.D1:
				case ConsoleKey.D2:
				case ConsoleKey.D3:
				case ConsoleKey.D4:
				case ConsoleKey.D5:
				case ConsoleKey.D6:
				case ConsoleKey.D7:
				case ConsoleKey.D8:
				case ConsoleKey.D9:
					var name = Enum.GetName(typeof (ConsoleKey), _key);
					if (m_count.Length < m_message.GetFirstParameter<int>().ToString().Length)
					{
						m_count += name.Substring(name.Length - 1, 1);
					}
					break;
				case ConsoleKey.Enter:
					var cnt = Math.Min(int.Parse(m_count), m_message.GetFirstParameter<int>());
					m_message.Act.AddParameter(cnt);
					CloseTopBlock();
					break;
				case ConsoleKey.Escape:
					m_message.Act.AddParameter(0);
					CloseTopBlock();
					break;
			}
		}
コード例 #26
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			var dPoint = KeyTranslator.GetDirection(_key);
			if (dPoint != null)
			{
				var newPoint = TargetPoint + dPoint + m_avatarScreenPoint;
				if (ContentRct.Contains(newPoint))
				{
					TargetPoint += dPoint;
				}
			}
			switch (_key)
			{
				case ConsoleKey.Escape:
				case ConsoleKey.Z:
					CloseTopBlock();
					break;
			}
			//MessageManager.SendMessage(this, WorldMessage.JustRedraw);
		}
コード例 #27
0
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            var dPoint = KeyTranslator.GetDirection(_key);

            if (dPoint != null)
            {
                var newPoint = TargetPoint + dPoint + m_avatarScreenPoint;
                if (ContentRct.Contains(newPoint))
                {
                    TargetPoint += dPoint;
                }
            }
            switch (_key)
            {
            case ConsoleKey.Escape:
            case ConsoleKey.Z:
                CloseTopBlock();
                break;
            }
            //MessageManager.SendMessage(this, WorldMessage.JustRedraw);
        }
コード例 #28
0
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            switch (_key)
            {
            case ConsoleKey.A:
                Constants.WORLD_MAP_SIZE = 32;
                Constants.WORLD_SEED     = new Random().Next(10000);
                //Constants.WORLD_SEED = 2;
                m_game.Run();
                break;

            case ConsoleKey.B:
                Constants.WORLD_MAP_SIZE = 100;
                Constants.WORLD_SEED     = new Random().Next(10000);
                m_game.Run();
                break;

            case ConsoleKey.C:
                Constants.WORLD_MAP_SIZE = 1;
                Constants.WORLD_SEED     = 1;
                m_game.Run();
                break;

            case ConsoleKey.D:
                Constants.WORLD_MAP_SIZE = 1;
                Constants.WORLD_SEED     = 2;
                m_game.Run();
                break;

            case ConsoleKey.E:
                Constants.WORLD_MAP_SIZE = 1;
                Constants.WORLD_SEED     = 0;
                m_game.Run();
                break;
            }
        }
コード例 #29
0
        public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
        {
            if ((m_behavior & ESelectItemDialogBehavior.ALLOW_CHANGE_FILTER) == ESelectItemDialogBehavior.ALLOW_CHANGE_FILTER)
            {
                if (_key == ConsoleKey.Multiply || (_key == ConsoleKey.D8 && _modifiers == EKeyModifiers.SHIFT))
                {
                    m_currentFilter = '*';
                    Rebuild();
                    return;
                }
                foreach (var pair in m_filters)
                {
                    if (pair.Key.Item1 == _key && pair.Key.Item2 == _modifiers)
                    {
                        m_currentFilter = EssenceCategoryAttribute.GetAttribute(pair.Value).C;
                        Rebuild();
                        return;
                    }
                }
            }

            if (_modifiers != EKeyModifiers.NONE)
            {
                return;
            }

            switch (_key)
            {
            case ConsoleKey.Z:
            case ConsoleKey.Escape:
                CloseTopBlock();
                return;

            case ConsoleKey.PageUp:
                m_currentPage = Math.Max(0, m_currentPage - 1);
                break;

            case ConsoleKey.PageDown:
                m_currentPage = Math.Min(m_pages.Count - 1, m_currentPage + 1);
                break;

            case ConsoleKey.Enter:
                if ((m_behavior & ESelectItemDialogBehavior.SELECT_MULTIPLE) == ESelectItemDialogBehavior.SELECT_MULTIPLE)
                {
                    CloseTopBlock(_key);
                }
                return;
            }

            if (m_pages.Count > 0)
            {
                foreach (var presenter in m_pages[m_currentPage].OfType <EssencePresenter>())
                {
                    if (presenter.Key == _key)
                    {
                        presenter.IsChecked = !presenter.IsChecked;
                        if ((m_behavior & ESelectItemDialogBehavior.SELECT_ONE) == ESelectItemDialogBehavior.SELECT_ONE)
                        {
                            CloseTopBlock(ConsoleKey.Enter);
                            return;
                        }
                    }
                }
            }
        }
コード例 #30
0
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			if ((m_behavior & ESelectItemDialogBehavior.ALLOW_CHANGE_FILTER) == ESelectItemDialogBehavior.ALLOW_CHANGE_FILTER)
			{
				if (_key == ConsoleKey.Multiply || (_key == ConsoleKey.D8 && _modifiers == EKeyModifiers.SHIFT))
				{
					m_currentFilter = '*';
					Rebuild();
					return;
				}
				foreach (var pair in m_filters)
				{
					if (pair.Key.Item1 == _key && pair.Key.Item2 == _modifiers)
					{
						m_currentFilter = EssenceCategoryAttribute.GetAttribute(pair.Value).C;
						Rebuild();
						return;
					}
				}
			}

			if (_modifiers != EKeyModifiers.NONE) return;

			switch (_key)
			{
				case ConsoleKey.Z:
				case ConsoleKey.Escape:
					CloseTopBlock();
					return;
				case ConsoleKey.PageUp:
					m_currentPage = Math.Max(0, m_currentPage - 1);
					break;
				case ConsoleKey.PageDown:
					m_currentPage = Math.Min(m_pages.Count - 1, m_currentPage + 1);
					break;
				case ConsoleKey.Enter:
					if ((m_behavior & ESelectItemDialogBehavior.SELECT_MULTIPLE) == ESelectItemDialogBehavior.SELECT_MULTIPLE)
					{
						CloseTopBlock(_key);
					}
					return;
			}

			if (m_pages.Count > 0)
			{
				foreach (var presenter in m_pages[m_currentPage].OfType<EssencePresenter>())
				{
					if (presenter.Key == _key)
					{
						presenter.IsChecked = !presenter.IsChecked;
						if ((m_behavior & ESelectItemDialogBehavior.SELECT_ONE) == ESelectItemDialogBehavior.SELECT_ONE)
						{
							CloseTopBlock(ConsoleKey.Enter);
							return;
						}
					}
				}
			}
		}
コード例 #31
0
 public EssenceCategoryAttribute(char _char, ConsoleKey _key, EKeyModifiers _modifiers)
 {
     C         = _char;
     Key       = _key;
     Modifiers = _modifiers;
 }
コード例 #32
0
ファイル: StatsBlock.cs プロジェクト: Foxbow74/my-busycator
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers) { throw new NotImplementedException(); }
コード例 #33
0
ファイル: TheGame.cs プロジェクト: Foxbow74/my-busycator
		public void Update(KeyState _keyState)
		{
			var keyModifiers = _keyState.KeyModifiers;

			var downKeys = _keyState.PressedKeys;

			if (keyModifiers != m_keyModifiers) m_downKeys.Clear();

			var pressedKeys = new List<ConsoleKey>();
			var prevDownKeys = m_downKeys.ToArray();

			foreach (var key in prevDownKeys)
			{
				if (downKeys.Contains(key)) continue;

				pressedKeys.Add(key);
				m_downKeys.Remove(key);
			}
			foreach (var key in downKeys)
			{
				if (m_downKeys.Contains(key)) continue;

				m_moveKeyHoldedSince = DateTime.Now;
				m_downKeys.Add(key);
			}

			m_keyModifiers = keyModifiers;

			if (m_downKeys.Except(KeyTranslator.MoveKeys).Any() || pressedKeys.Any())
			{
				m_isAutoRepeateMode = false;
			}
			else
			{
				if (m_downKeys.Intersect(KeyTranslator.MoveKeys).Any())
				{
					var totalMilliseconds = (DateTime.Now - m_moveKeyHoldedSince).TotalMilliseconds;
					if (m_isAutoRepeateMode)
					{
						if (totalMilliseconds > Constants.AUTO_MOVE_REPEAT_MILLISECONDS)
						{
							m_moveKeyHoldedSince = DateTime.Now;
							pressedKeys.AddRange(m_downKeys);
						}
					}
					else
					{
						if (totalMilliseconds > Constants.AUTO_MOVE_REPEAT_AFTER)
						{
							m_isAutoRepeateMode = true;
						}
					}
				}
			}

			foreach (var pressedKey in pressedKeys)
			{
				m_pressed.Enqueue(new Tuple<ConsoleKey, EKeyModifiers>(pressedKey, m_keyModifiers));
			}

			if (m_pressed.Count > 0)
			{
				if (UiBlocks.Peek() != m_mainUiBlock || World.TheWorld.Avatar.NextAct == null)
				{
					var tuple = m_pressed.Dequeue();
					UiBlocks.Peek().KeysPressed(tuple.Item1, tuple.Item2);
					MessageManager.SendMessage(this,WorldMessage.JustRedraw);
				}
			}

			if (UiBlocks.Peek() == m_mainUiBlock)
			{
				if (!m_mainUiBlock.NeedWait)
				{
					if (!World.TheWorld.CreatureManager.FirstActiveCreature.IsAvatar || World.TheWorld.Avatar.NextAct != null  || World.TheWorld.WorldTick==0)
					{
#if DEBUG
						using (new Profiler())
#endif
						{
							World.TheWorld.GameUpdated();
						}
					}
				}
			}
		}
コード例 #34
0
ファイル: UIBlock.cs プロジェクト: Foxbow74/my-busycator
		public virtual void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers) { }
コード例 #35
0
 public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
 {
     throw new NotImplementedException();
 }
コード例 #36
0
ファイル: TheGame.cs プロジェクト: Foxbow74/my-busycator
        public void Update(KeyState _keyState)
        {
            var keyModifiers = _keyState.KeyModifiers;

            var downKeys = _keyState.PressedKeys;

            if (keyModifiers != m_keyModifiers)
            {
                m_downKeys.Clear();
            }

            var pressedKeys  = new List <ConsoleKey>();
            var prevDownKeys = m_downKeys.ToArray();

            foreach (var key in prevDownKeys)
            {
                if (downKeys.Contains(key))
                {
                    continue;
                }

                pressedKeys.Add(key);
                m_downKeys.Remove(key);
            }
            foreach (var key in downKeys)
            {
                if (m_downKeys.Contains(key))
                {
                    continue;
                }

                m_moveKeyHoldedSince = DateTime.Now;
                m_downKeys.Add(key);
            }

            m_keyModifiers = keyModifiers;

            if (m_downKeys.Except(KeyTranslator.MoveKeys).Any() || pressedKeys.Any())
            {
                m_isAutoRepeateMode = false;
            }
            else
            {
                if (m_downKeys.Intersect(KeyTranslator.MoveKeys).Any())
                {
                    var totalMilliseconds = (DateTime.Now - m_moveKeyHoldedSince).TotalMilliseconds;
                    if (m_isAutoRepeateMode)
                    {
                        if (totalMilliseconds > Constants.AUTO_MOVE_REPEAT_MILLISECONDS)
                        {
                            m_moveKeyHoldedSince = DateTime.Now;
                            pressedKeys.AddRange(m_downKeys);
                        }
                    }
                    else
                    {
                        if (totalMilliseconds > Constants.AUTO_MOVE_REPEAT_AFTER)
                        {
                            m_isAutoRepeateMode = true;
                        }
                    }
                }
            }

            foreach (var pressedKey in pressedKeys)
            {
                m_pressed.Enqueue(new Tuple <ConsoleKey, EKeyModifiers>(pressedKey, m_keyModifiers));
            }

            if (m_pressed.Count > 0)
            {
                if (UiBlocks.Peek() != m_mainUiBlock || World.TheWorld.Avatar.NextAct == null)
                {
                    var tuple = m_pressed.Dequeue();
                    UiBlocks.Peek().KeysPressed(tuple.Item1, tuple.Item2);
                    MessageManager.SendMessage(this, WorldMessage.JustRedraw);
                }
            }

            if (UiBlocks.Peek() == m_mainUiBlock)
            {
                if (!m_mainUiBlock.NeedWait)
                {
                    if (!World.TheWorld.CreatureManager.FirstActiveCreature.IsAvatar || World.TheWorld.Avatar.NextAct != null || World.TheWorld.WorldTick == 0)
                    {
#if DEBUG
                        using (new Profiler())
#endif
                        {
                            World.TheWorld.GameUpdated();
                        }
                    }
                }
            }
        }
コード例 #37
0
 public EssenceCategoryAttribute(char _char, ConsoleKey _key, EKeyModifiers _modifiers)
 {
     C = _char;
     Key = _key;
     Modifiers = _modifiers;
 }
コード例 #38
0
 public virtual void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
 {
 }
コード例 #39
-1
		public override void KeysPressed(ConsoleKey _key, EKeyModifiers _modifiers)
		{
			if (m_turnMessages.Count > 0)
			{
				PrepareText();
			}
		}