Example #1
0
 KeyDescriptor(SpecialKey specialKey, char keyChar, ModifierKeys modifierKeys, object nativeKeyChar)
 {
     SpecialKey    = specialKey;
     KeyChar       = keyChar;
     ModifierKeys  = modifierKeys;
     NativeKeyChar = nativeKeyChar;
 }
Example #2
0
    private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
    {
        if (nCode >= 0 && (wParam == (IntPtr)WM_KEYDOWN) | (wParam == (IntPtr)WM_KEYUP))
        {
            int vkCode = Marshal.ReadInt32(lParam);
            if (specialkey.HasFlag((SpecialKey)vkCode))
            {
                checkspecialkey = true;
                special         = (SpecialKey)vkCode;
            }
            else if (fnumberkey.HasFlag((FnumberKey)vkCode))
            {
                checkfnumberkey = true;
                fnumber         = (FnumberKey)vkCode;
            }

            if (checkspecialkey && checkfnumberkey)
            {
                input           = special.ToString() + "+" + fnumber.ToString();
                checkspecialkey = false;
                checkfnumberkey = false;
            }
        }
        return(CallNextHookEx(_hookID, nCode, wParam, lParam));
    }
Example #3
0
        public static KeyInfo Make(SpecialKey spc)
        {
            var key_info = new KeyInfo();

            key_info.SpecialKey = spc;
            return(key_info);
        }
		KeyDescriptor (SpecialKey specialKey, char keyChar, ModifierKeys modifierKeys, object nativeKeyChar)
		{
			SpecialKey = specialKey;
			KeyChar = keyChar;
			ModifierKeys = modifierKeys;
			NativeKeyChar = nativeKeyChar;
		}
Example #5
0
 internal string GetFirstSpecialKey(SpecialKey key)
 {
     if (!SpecialKeys.ContainsKey(key))
     {
         return(string.Empty);
     }
     return(SpecialKeys[key].FirstOrDefault());
 }
Example #6
0
    public override Pickup Clone()
    {
        //Debug.Log("HealthPotion cloning");

        SpecialKey specialKey = Instantiate <GameObject>(this.gameObject).GetComponent <SpecialKey>();

        return(specialKey);
    }
Example #7
0
 void OnRespawnKey(int player, SpecialKey key)
 {
     if (key != SpecialKey.Respawn)
     {
         return;
     }
     Respawn(player);
     m.SendMessage(player, "&7Respawn");
 }
            public KeyboardClickRoutedEvtArgs(RoutedEventArgs innerArgs, SpecialKey flags)
            {
                this.RoutedEvent     = innerArgs.RoutedEvent;
                this.Handled         = false;
                this.Source          = innerArgs.Source;
                this.SpecialKeyFlags = flags;

                this.Key = (string)((Button)this.Source).Tag;
            }
Example #9
0
        public override string ToString()
        {
            string str = string.Empty;

            if (SpecialKey != 0)
            {
                str += SpecialKey.ToString() + " + ";
            }
            str += MainKey.ToString();
            return(str);
        }
Example #10
0
 internal void AddSpecialKey(SpecialKey key, string keyName)
 {
     if (SpecialKeys == null)
     {
         SpecialKeys = new Dictionary <SpecialKey, List <string> >();
     }
     if (!SpecialKeys.ContainsKey(key))
     {
         SpecialKeys.Add(key, new List <string>());
     }
     SpecialKeys[key].Add(keyName);
 }
Example #11
0
 void OnSelectTeamKey(int player, SpecialKey key)
 {
     if (key != SpecialKey.SelectTeam)
     {
         return;
     }
     if (warmode == WarMode.Edit)
     {
         return;
     }
     ShowTeamSelectionDialog(player);
 }
Example #12
0
 void OnSetSpawnKey(int player, SpecialKey key)
 {
     if (key != SpecialKey.SetSpawn)
     {
         return;
     }
     float[] pos = new float[3];
     pos[0] = m.GetPlayerPositionX(player);
     pos[1] = m.GetPlayerPositionY(player);
     pos[2] = m.GetPlayerPositionZ(player);
     spawnPositions[m.GetPlayerName(player)] = pos;
     m.SendMessage(player, "&7Spawn position set");
 }
Example #13
0
        public override bool Key(SpecialKey key, bool up, string keyString)
        {
            if (!Enabled)
            {
                return(true);
            }

            if (m_contentView.Key(key, up, keyString))
            {
                return(true);
            }

            return(false);
        }
        void DoPreInsertionSmartIndent(SpecialKey key)
        {
            switch (key)
            {
            case SpecialKey.BackSpace:
                SafeUpdateIndentEngine(Editor.CaretOffset);
                HandleStringConcatinationDeletion(Editor.CaretOffset - 1, 0);
                break;

            case SpecialKey.Delete:
                SafeUpdateIndentEngine(Editor.CaretOffset);
                HandleStringConcatinationDeletion(Editor.CaretOffset, Editor.Length);
                break;
            }
        }
        public bool Key(int code, bool up, char character)
        {
            SpecialKey key = (SpecialKey)code;

            for (int i = Windows.Count - 1; i >= 0; /*i--*/)
            {
                if (Windows[i].Key(key, up, character))
                {
                    return(true);
                }

                break;
            }

            return(false);
        }
Example #16
0
        public override bool Key(SpecialKey key, bool up, string keyString)
        {
            if (key == SpecialKey.Back)
            {
                HandleButtonPress(1);
                return(true);
            }
            else
            if (key == SpecialKey.Enter)
            {
                HandleButtonPress(0);
                return(true);
            }

            return(base.Key(key, up, keyString));
        }
Example #17
0
        /// <summary>
        /// Subscribes an event to a keystroke + special key.
        /// </summary>
        /// <remarks>The special key must be helt down prior to the keystroke to fire one of these events.</remarks>
        public static void SubscribeChord(char Key, SpecialKey Special, Event Event)
        {
            Key = (char)(Key & 0x7f);
            // Alt operates over the range from 0x80-0x9f
            if (Special == SpecialKey.Alt)
            {
                Key = (char)(Key & 0x3f | 0x80);
            }
            // Control operates over the range from 0xc0-0xff
            else if (Special == SpecialKey.Control)
            {
                Key = (char)(Key | 0xc0);
            }

            Subscribe(Key, Event);
        }
Example #18
0
 void RespawnKey(int player, SpecialKey key)
 {
     if (key != SpecialKey.Respawn)
     {
         return;
     }
     if (warmode == WarMode.Edit)
     {
         return;
     }
     if (players[player].isdead)
     {
         return;                     //Don't allow dead players to respawn
     }
     m.SendMessage(player, "Respawn.");
     Die(player);
 }
Example #19
0
        public bool Key(SpecialKey key, bool up, string keyString)
        {
            T[] array = EnsureArray();

            for (int i = array.Length - 1; i >= 0; i--)
            {
                if (array[i] != null && array[i].Visible)
                {
                    if (array[i].Key(key, up, keyString))
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Example #20
0
        public bool Key(SpecialKey key, bool up, string keyString)
        {
            if (Windows.Count > 0 && Windows[Windows.Count - 1].Key(key, up, keyString))
            {
                return(true);
            }

/*
 *          for (int i = Windows.Count - 1; i >= 0; i--)
 *          {
 *              if (Windows[i].Key(key, up, keyString))
 *                  return true;
 *
 *              break;
 *          }*/

            return(false);
        }
Example #21
0
        public override bool Key(SpecialKey key, bool up, char character)
        {
            if (!Controlling)
            {
                return(true);
            }

            if (m_children.Key(key, up, character))
            {
                return(true);
            }

            if (Modal && key == SpecialKey.Back && up)
            {
                Remove();
                return(true);
            }

            if (IsFocusable && up)
            {
                if (key == SpecialKey.Left)
                {
                    return(FocusNext(false));
                }
                else if (key == SpecialKey.Right)
                {
                    return(FocusNext(true));
                }
                else if ((key == SpecialKey.Select || key == SpecialKey.Enter))
                {
                    foreach (WindowObject child in m_children.List)
                    {
                        if (child is IFocusable && ((IFocusable)child).IsFocusable && ((IFocusable)child).IsFocused)
                        {
                            ((IFocusable)child).Press();
                            return(true);
                        }
                    }
                }
            }


            return(false);
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            SpecialKey flags = 0;

            if (Keyboard.IsKeyDown(Key.LeftCtrl))
            {
                flags |= SpecialKey.Ctrl;
            }
            if (Keyboard.IsKeyDown(Key.LeftShift))
            {
                flags |= SpecialKey.Shift;
            }
            if (Keyboard.IsKeyDown(Key.LeftAlt))
            {
                flags |= SpecialKey.Alt;
            }

            this.OnKeyboardKeyDown?.Invoke(this, new KeyboardClickRoutedEvtArgs(e, flags));
        }
Example #23
0
        public override bool Key(SpecialKey key, bool up, char character)
        {
            if (!Enabled)
            {
                return(true);
            }

            if (m_children.Key(key, up, character))
            {
                return(true);
            }

            if (m_background.Key(key, up, character))
            {
                return(true);
            }

            return(false);
        }
        static char TranslateKeyCharForIndenter(SpecialKey key, char keyChar, char docChar)
        {
            switch (key)
            {
            case SpecialKey.Return:
                return('\n');

            case SpecialKey.Tab:
                return('\t');

            default:
                if (docChar == keyChar)
                {
                    return(keyChar);
                }
                break;
            }
            return('\0');
        }
Example #25
0
        public override bool Key(SpecialKey key, bool up, string keyString)
        {
            if (!Enabled)
            {
                return(true);
            }

            if (m_children.Key(key, up, keyString))
            {
                return(true);
            }

            if (m_background.Key(key, up, keyString))
            {
                return(true);
            }

            return(false);
        }
Example #26
0
    private Gdk.FilterReturn FilterKey(IntPtr xeventPtr, Gdk.Event gdkEvent)
    {
        Console.WriteLine("filter " + gdkEvent.Type);
        if (DateTime.Now - last_raise < raise_delay)
        {
            return(Gdk.FilterReturn.Continue);
        }

        last_raise = DateTime.Now;

        XKeyEvent xevent = (XKeyEvent)Marshal.PtrToStructure(xeventPtr, typeof(XKeyEvent));

        if (xevent.type != XEventName.KeyPress)
        {
            return(Gdk.FilterReturn.Continue);
        }

        int    keycode = (int)xevent.keycode;
        object x       = key_map[keycode];

        Console.WriteLine("filter " + keycode);

        if (x == null)
        {
            return(Gdk.FilterReturn.Continue);
        }

        SpecialKey key = (SpecialKey)key_map[keycode];

        if (key_registrations[keycode] != null)
        {
            x = key_registrations[keycode];
            if (x is SpecialKeyPressedHandler)
            {
                ((SpecialKeyPressedHandler)x)(this, key);
            }
            return(Gdk.FilterReturn.Remove);
        }

        return(Gdk.FilterReturn.Continue);
    }
Example #27
0
        private void AddSpecialKey(SpecialKey specialKey)
        {
            KeyControl key;

            switch (specialKey.KeyType)
            {
            case SpecialKeyType.Shift:
                key = new ShiftKey();
                break;

            case SpecialKeyType.Win:
                key = new WindowsKey();
                break;

            case SpecialKeyType.Tab:
                key = new TabKey();
                break;

            case SpecialKeyType.Captial:
                key = new CapsKey();
                break;

            case SpecialKeyType.Return:
                key = new EnterKey();
                break;

            case SpecialKeyType.Back:
                key = new BackKey();
                break;

            default:
                return;
            }
            key.IsPressed = specialKey.IsDown;
            _currentKeyItem.InlineCollection.Add(key);
        }
		public virtual Task<ICompletionDataList> HandleBackspaceOrDeleteCodeCompletionAsync (CodeCompletionContext completionContext, SpecialKey key, char triggerCharacter, CancellationToken token = default(CancellationToken))
		{
			return Task.FromResult (emptyList);
		}
Example #29
0
 /// <summary>
 /// Types the keyboard key represented by the special key passed in
 /// </summary>
 /// <param name="key">the special key to send to the active window</param>
 public static void Type(SpecialKey key)
 {
     Type(_specialKeyValues[key]);
 }
Example #30
0
        void OnTabKey(int player, SpecialKey key)
        {
            if (key != SpecialKey.TabPlayerList)
            {
                return;
            }
            tabOpen[m.GetPlayerName(player)] = true;
            Dialog d = new Dialog();

            d.IsModal = true;
            List <Widget> widgets = new List <Widget>();

            // table alignment
            float tableX = xcenter(m.GetScreenResolution(player)[0], tableWidth);
            float tableY = tableMarginTop;

            // text to draw
            string row1 = m.GetServerName();

            row1 = cutText(row1, HeadingFont, tableWidth - 2 * tablePadding);

            string row2 = m.GetServerMotd();

            row2 = cutText(row2, SmallFontBold, tableWidth - 2 * tablePadding);


            string row3_1 = "IP: " + m.GetServerIp() + ":" + m.GetServerPort();
            string row3_2 = (int)(m.GetPlayerPing(player) * 1000) + "ms";

            string row4_1 = "Players: " + m.AllPlayers().Length;
            string row4_2 = "Page: " + (page + 1) + "/" + (pageCount + 1);

            string row5_1 = "ID";
            string row5_2 = "Player";
            string row5_3 = "Ping";

            // row heights
            float row1Height      = textHeight(row1, HeadingFont) + 2 * tablePadding;
            float row2Height      = textHeight(row2, SmallFontBold) + 2 * tablePadding;
            float row3Height      = textHeight(row3_1, SmallFont) + 2 * tablePadding;
            float row4Height      = textHeight(row4_1, SmallFont) + 2 * tablePadding;
            float row5Height      = textHeight(row5_1, NormalFontBold) + 2 * tablePadding;
            float listEntryHeight = textHeight("Player", NormalFont) + 2 * listEntryPaddingTopBottom;

            float heightOffset = 0;

            // determine how many entries can be displayed
            tableHeight = m.GetScreenResolution(player)[1] - tableMarginTop - tableMarginBottom;
            float availableEntrySpace = tableHeight - row1Height - row2Height - row3Height - row4Height - (row5Height + tableLineWidth);

            int entriesPerPage = (int)(availableEntrySpace / listEntryHeight);

            pageCount = (int)Math.Ceiling((float)(m.AllPlayers().Length / entriesPerPage));
            if (page > pageCount)
            {
                page = 0;
            }

            // 1 - heading: Servername
            widgets.Add(Widget.MakeSolid(tableX, tableY, tableWidth, row1Height, Color.DarkGreen.ToArgb()));
            widgets.Add(Widget.MakeText(row1, HeadingFont, tableX + xcenter(tableWidth, textWidth(row1, HeadingFont)), tableY + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row1Height;

            // 2 - MOTD
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, row2Height, Color.ForestGreen.ToArgb()));
            widgets.Add(Widget.MakeText(row2, SmallFontBold, tableX + xcenter(tableWidth, textWidth(row2, SmallFontBold)), tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row2Height;

            // 3 - server info: IP Motd Serverping
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, row3Height, Color.DarkSeaGreen.ToArgb()));
            // row3_1 - IP align left
            widgets.Add(Widget.MakeText(row3_1, SmallFont, tableX + tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row3_2 - Serverping align right
            widgets.Add(Widget.MakeText(row3_2, SmallFont, tableX + tableWidth - textWidth(row3_2, SmallFont) - tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row3Height;

            // 4 - infoline: Playercount, Page
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, row4Height, Color.DimGray.ToArgb()));
            // row4_1 PlayerCount
            widgets.Add(Widget.MakeText(row4_1, SmallFont, tableX + tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row4_2 PlayerCount
            widgets.Add(Widget.MakeText(row4_2, SmallFont, tableX + tableWidth - textWidth(row4_2, SmallFont) - tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row4Height;

            // 5 - playerlist heading: ID | Player | Ping
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableIdColumnWidth, row5Height, Color.DarkGray.ToArgb()));
            widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth, tableY + heightOffset, tablePlayerColumnWidth, row5Height, Color.DarkGray.ToArgb()));
            widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth + tablePlayerColumnWidth, tableY + heightOffset, tablePingColumnWidth, row5Height, Color.DarkGray.ToArgb()));
            // separation lines
            widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth, tableY + heightOffset, tableLineWidth, row5Height, Color.DimGray.ToArgb()));
            widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth + tablePlayerColumnWidth - tableLineWidth, tableY + heightOffset, tableLineWidth, row5Height, Color.DimGray.ToArgb()));
            // row4_1 ID - align center
            widgets.Add(Widget.MakeText(row5_1, NormalFontBold, tableX + xcenter(tableIdColumnWidth, textWidth(row5_1, NormalFontBold)), tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row4_2 Player - align center
            widgets.Add(Widget.MakeText(row5_2, NormalFontBold, tableX + tableIdColumnWidth + tablePlayerColumnWidth / 2 - textWidth(row5_2, NormalFontBold) / 2, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row4_3 Ping - align center
            widgets.Add(Widget.MakeText(row5_3, NormalFontBold, tableX + tableIdColumnWidth + tablePlayerColumnWidth + tablePingColumnWidth / 2 - textWidth(row5_3, NormalFontBold) / 2, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row5Height;
            // horizontal line
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, tableLineWidth, Color.DimGray.ToArgb()));
            heightOffset += tableLineWidth;

            // 6 - actual playerlist
            // entries:
            Color entryRowColor;

            int[] AllPlayers = m.AllPlayers();
            for (int i = page * entriesPerPage; i < Math.Min(AllPlayers.Length, page * entriesPerPage + entriesPerPage); i++)
            {
                if (i % 2 == 0)
                {
                    entryRowColor = Color.Gainsboro;
                }
                else
                {
                    entryRowColor = Color.Honeydew;
                }
                widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableIdColumnWidth, listEntryHeight, entryRowColor.ToArgb()));
                widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth, tableY + heightOffset, tablePlayerColumnWidth, listEntryHeight, entryRowColor.ToArgb()));
                widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth + tablePlayerColumnWidth, tableY + heightOffset, tablePingColumnWidth, listEntryHeight, entryRowColor.ToArgb()));

                // separation lines
                widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth, tableY + heightOffset, tableLineWidth, listEntryHeight, Color.DimGray.ToArgb()));
                widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth + tablePlayerColumnWidth - tableLineWidth, tableY + heightOffset, tableLineWidth, listEntryHeight, Color.DimGray.ToArgb()));

                widgets.Add(Widget.MakeText(AllPlayers[i].ToString(), NormalFont, tableX + tableIdColumnWidth - textWidth(AllPlayers[i].ToString(), NormalFont) - tablePadding, tableY + heightOffset + listEntryPaddingTopBottom, TEXT_COLOR.ToArgb()));
                widgets.Add(Widget.MakeText(getPrefix(AllPlayers[i]) + m.GetPlayerName(AllPlayers[i]), NormalFont, tableX + tableIdColumnWidth + tablePadding, tableY + heightOffset + listEntryPaddingTopBottom, TEXT_COLOR.ToArgb()));
                string pingString;
                if (m.IsBot(AllPlayers[i]))
                {
                    pingString = "BOT";
                }
                else
                {
                    pingString = ((int)(m.GetPlayerPing(AllPlayers[i]) * 1000)).ToString();
                }
                widgets.Add(Widget.MakeText(pingString, NormalFont, tableX + tableIdColumnWidth + tablePlayerColumnWidth + tablePingColumnWidth - textWidth(pingString, NormalFont) - tablePadding, tableY + heightOffset + listEntryPaddingTopBottom, TEXT_COLOR.ToArgb()));
                heightOffset += listEntryHeight;
            }
            var wtab = Widget.MakeSolid(0, 0, 0, 0, 0);

            wtab.ClickKey = '\t';
            wtab.Id       = "Tab";
            widgets.Add(wtab);
            var wesc = Widget.MakeSolid(0, 0, 0, 0, 0);

            wesc.ClickKey = (char)27;
            wesc.Id       = "Esc";
            widgets.Add(wesc);

            d.Width   = m.GetScreenResolution(player)[0];
            d.Height  = m.GetScreenResolution(player)[1];
            d.Widgets = widgets.ToArray();
            m.SendDialog(player, "PlayerList", d);
        }
Example #31
0
        void OnTabKey(int player, SpecialKey key)
        {
            if (key != SpecialKey.TabPlayerList)
            {
                return;
            }
            tabOpen[m.GetPlayerName(player)] = true;
            Dialog d = new Dialog();
            d.IsModal = true;
            List<Widget> widgets = new List<Widget>();

            // table alignment
            float tableX = xcenter(m.GetScreenResolution(player)[0], tableWidth);
            float tableY = tableMarginTop;

            // text to draw
            string row1 = m.GetServerName();
            row1 = cutText(row1, HeadingFont, tableWidth - 2 * tablePadding);

            string row2 = m.GetServerMotd();
            row2 = cutText(row2, SmallFontBold, tableWidth - 2 * tablePadding);

            string row3_1 = "IP: " + m.GetServerIp() + ":" + m.GetServerPort();
            string row3_2 = (int)(m.GetPlayerPing(player) * 1000) + "ms";

            string row4_1 = "Players: " + m.AllPlayers().Length;
            string row4_2 = "Page: " + (page + 1) + "/" + (pageCount + 1);

            string row5_1 = "ID";
            string row5_2 = "Player";
            string row5_3 = "Ping";

            // row heights
            float row1Height = textHeight(row1, HeadingFont) + 2 * tablePadding;
            float row2Height = textHeight(row2, SmallFontBold) + 2 * tablePadding;
            float row3Height = textHeight(row3_1, SmallFont) + 2 * tablePadding;
            float row4Height = textHeight(row4_1, SmallFont) + 2 * tablePadding;
            float row5Height = textHeight(row5_1, NormalFontBold) + 2 * tablePadding;
            float listEntryHeight = textHeight("Player", NormalFont) + 2 * listEntryPaddingTopBottom;

            float heightOffset = 0;

            // determine how many entries can be displayed
            tableHeight = m.GetScreenResolution(player)[1] - tableMarginTop - tableMarginBottom;
            float availableEntrySpace = tableHeight - row1Height - row2Height - row3Height - row4Height - (row5Height + tableLineWidth);

            int entriesPerPage = (int)(availableEntrySpace / listEntryHeight);
            pageCount = (int)Math.Ceiling((float)(m.AllPlayers().Length / entriesPerPage));
            if (page > pageCount)
            {
                page = 0;
            }

            // 1 - heading: Servername
            widgets.Add(Widget.MakeSolid(tableX, tableY, tableWidth, row1Height, Color.DarkGreen.ToArgb()));
            widgets.Add(Widget.MakeText(row1, HeadingFont, tableX + xcenter(tableWidth, textWidth(row1, HeadingFont)), tableY + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row1Height;

            // 2 - MOTD
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, row2Height, Color.ForestGreen.ToArgb()));
            widgets.Add(Widget.MakeText(row2, SmallFontBold, tableX + xcenter(tableWidth, textWidth(row2, SmallFontBold)), tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row2Height;

            // 3 - server info: IP Motd Serverping
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, row3Height, Color.DarkSeaGreen.ToArgb()));
            // row3_1 - IP align left
            widgets.Add(Widget.MakeText(row3_1, SmallFont, tableX + tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row3_2 - Serverping align right
            widgets.Add(Widget.MakeText(row3_2, SmallFont, tableX + tableWidth - textWidth(row3_2, SmallFont) - tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row3Height;

            // 4 - infoline: Playercount, Page
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, row4Height, Color.DimGray.ToArgb()));
            // row4_1 PlayerCount
            widgets.Add(Widget.MakeText(row4_1, SmallFont, tableX + tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row4_2 PlayerCount
            widgets.Add(Widget.MakeText(row4_2, SmallFont, tableX + tableWidth - textWidth(row4_2, SmallFont) - tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row4Height;

            // 5 - playerlist heading: ID | Player | Ping
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableIdColumnWidth, row5Height, Color.DarkGray.ToArgb()));
            widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth, tableY + heightOffset, tablePlayerColumnWidth, row5Height, Color.DarkGray.ToArgb()));
            widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth + tablePlayerColumnWidth, tableY + heightOffset, tablePingColumnWidth, row5Height, Color.DarkGray.ToArgb()));
            // separation lines
            widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth, tableY + heightOffset, tableLineWidth, row5Height, Color.DimGray.ToArgb()));
            widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth + tablePlayerColumnWidth - tableLineWidth, tableY + heightOffset, tableLineWidth, row5Height, Color.DimGray.ToArgb()));
            // row4_1 ID - align center
            widgets.Add(Widget.MakeText(row5_1, NormalFontBold, tableX + xcenter(tableIdColumnWidth, textWidth(row5_1, NormalFontBold)), tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row4_2 Player - align center
            widgets.Add(Widget.MakeText(row5_2, NormalFontBold, tableX + tableIdColumnWidth + tablePlayerColumnWidth / 2 - textWidth(row5_2, NormalFontBold) / 2, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row4_3 Ping - align center
            widgets.Add(Widget.MakeText(row5_3, NormalFontBold, tableX + tableIdColumnWidth + tablePlayerColumnWidth + tablePingColumnWidth / 2 - textWidth(row5_3, NormalFontBold) / 2, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row5Height;
            // horizontal line
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, tableLineWidth, Color.DimGray.ToArgb()));
            heightOffset += tableLineWidth;

            // 6 - actual playerlist
            // entries:
            Color entryRowColor;
            int[] AllPlayers = m.AllPlayers();
            for (int i = page * entriesPerPage; i < Math.Min(AllPlayers.Length, page * entriesPerPage + entriesPerPage); i++)
            {
                if (i % 2 == 0)
                {
                    entryRowColor = Color.Gainsboro;
                }
                else
                {
                    entryRowColor = Color.Honeydew;
                }
                widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableIdColumnWidth, listEntryHeight, entryRowColor.ToArgb()));
                widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth, tableY + heightOffset, tablePlayerColumnWidth, listEntryHeight, entryRowColor.ToArgb()));
                widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth + tablePlayerColumnWidth, tableY + heightOffset, tablePingColumnWidth, listEntryHeight, entryRowColor.ToArgb()));

                // separation lines
                widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth, tableY + heightOffset, tableLineWidth, listEntryHeight, Color.DimGray.ToArgb()));
                widgets.Add(Widget.MakeSolid(tableX + tableIdColumnWidth + tablePlayerColumnWidth - tableLineWidth, tableY + heightOffset, tableLineWidth, listEntryHeight, Color.DimGray.ToArgb()));

                widgets.Add(Widget.MakeText(AllPlayers[i].ToString(), NormalFont, tableX + tableIdColumnWidth - textWidth(AllPlayers[i].ToString(), NormalFont) - tablePadding, tableY + heightOffset + listEntryPaddingTopBottom, TEXT_COLOR.ToArgb()));
                widgets.Add(Widget.MakeText(getPrefix(AllPlayers[i]) + m.GetPlayerName(AllPlayers[i]), NormalFont, tableX + tableIdColumnWidth + tablePadding, tableY + heightOffset + listEntryPaddingTopBottom, TEXT_COLOR.ToArgb()));
                string pingString;
                if (m.IsBot(AllPlayers[i]))
                {
                    pingString = "BOT";
                }
                else
                {
                    pingString = ((int)(m.GetPlayerPing(AllPlayers[i]) * 1000)).ToString();
                }
                widgets.Add(Widget.MakeText(pingString, NormalFont, tableX + tableIdColumnWidth + tablePlayerColumnWidth + tablePingColumnWidth - textWidth(pingString, NormalFont) - tablePadding, tableY + heightOffset + listEntryPaddingTopBottom, TEXT_COLOR.ToArgb()));
                heightOffset += listEntryHeight;
            }
            var wtab = Widget.MakeSolid(0, 0, 0, 0, 0);
            wtab.ClickKey = '\t';
            wtab.Id = "Tab";
            widgets.Add(wtab);
            var wesc = Widget.MakeSolid(0, 0, 0, 0, 0);
            wesc.ClickKey = (char)27;
            wesc.Id = "Esc";
            widgets.Add(wesc);

            d.Width = m.GetScreenResolution(player)[0];
            d.Height = m.GetScreenResolution(player)[1];
            d.Widgets = widgets.ToArray();
            m.SendDialog(player, "PlayerList", d);
        }
Example #32
0
    public KeyItem(string itemName, SpecialKey keyType) : base(ItemType.KEY, itemName) {
        this.KeyType = keyType;

    }
Example #33
0
        public override bool Key(SpecialKey key, bool up, string keyString)
        {
            if (!IsFocused)
            {
                return(false);
            }

            if (up && key == SpecialKey.Back)
            {
                //SetFocused(false);
                if (OnTextEntered != null)
                {
                    OnTextEntered(this, string.Empty);
                }
                return(true);
            }

            if (up && (key == SpecialKey.Enter || key == SpecialKey.Joystick_Start))
            {
                //SetFocused(false);
                if (OnTextEntered != null)
                {
                    OnTextEntered(this, m_text);
                }
                return(true);
            }

            if (up && key == SpecialKey.Tab)
            {
                if (WidgetManager.FocusNext(this) && OnFocusLost != null)
                {
                    OnFocusLost(this, m_text);
                }

                return(true);
            }

            if ((key == SpecialKey.Letter || key == SpecialKey.Paste) /* && Font.HaveSymbol(character)*/)
            {
                StringBuilder stringToAdd = new StringBuilder(keyString.Length);

                for (int i = 0; i < keyString.Length; i++)
                {
                    if (Font.HaveSymbol(keyString[i]))
                    {
                        stringToAdd.Append(keyString[i]);
                    }
                }

                if (stringToAdd.Length > 0)
                {
                    string toAdd = stringToAdd.ToString();

                    if (m_cursorPosition == m_text.Length)
                    {
                        m_text += toAdd;
                    }
                    else
                    {
                        m_text = m_text.Insert(m_cursorPosition, toAdd);
                    }

                    if (OnTextChanged != null)
                    {
                        OnTextChanged(this, m_text);
                    }

                    m_cursorPosition     += toAdd.Length;
                    m_cursorLinePosition += toAdd.Length;
                    Relayout();
                    return(true);
                }
            }

            if (!up)
            {
                switch (key)
                {
                case SpecialKey.Backspace:
                    if (m_cursorPosition > 0)
                    {
                        m_text = m_text.Substring(0, m_cursorPosition - 1) + m_text.Substring(m_cursorPosition);

                        if (OnTextChanged != null)
                        {
                            OnTextChanged(this, m_text);
                        }

                        m_cursorPosition--;
                        m_cursorLinePosition--;
                        Relayout();
                    }
                    break;

                case SpecialKey.Delete:
                    if (m_cursorPosition <= m_text.Length - 1)
                    {
                        m_text = m_text.Substring(0, m_cursorPosition) + m_text.Substring(m_cursorPosition + 1);

                        if (OnTextChanged != null)
                        {
                            OnTextChanged(this, m_text);
                        }

                        Relayout();
                    }
                    break;

                case SpecialKey.Enter:
                {
                    if (m_cursorPosition == m_text.Length)
                    {
                        m_text += "\n";
                    }
                    else
                    {
                        m_text = m_text.Insert(m_cursorPosition, "\n");
                    }

                    if (OnTextChanged != null)
                    {
                        OnTextChanged(this, m_text);
                    }

                    m_cursorPosition++;
                    m_cursorLine++;
                    m_cursorLinePosition = 0;

                    Relayout();
                }
                break;

                case SpecialKey.Left:
                    if (m_cursorPosition > 0)
                    {
                        UpdateCursor(-1, 0);
                    }
                    break;

                case SpecialKey.Right:
                    if (m_cursorPosition <= m_text.Length - 1)
                    {
                        UpdateCursor(1, 0);
                    }
                    break;

                case SpecialKey.Home:
                    if (m_cursorLinePosition > 0)
                    {
                        UpdateCursor(-m_cursorLinePosition, 0);
                    }
                    break;

                case SpecialKey.End:
                    UpdateCursor(int.MaxValue, 0);
                    break;

                case SpecialKey.Up:
                    if (m_cursorLine > 0)
                    {
                        UpdateCursor(0, -1);
                    }
                    break;

                case SpecialKey.Down:
                    if (m_cursorLine < m_lines.Length - 1)
                    {
                        UpdateCursor(0, 1);
                    }
                    break;
                }
            }

            return(true);
        }
Example #34
0
        private void OnSpecialKeysPressed(object o, SpecialKey key)
        {
            switch (key) {
                case SpecialKey.AudioPlay:
                    if(Driver.player.Playing == true) {
                        // We are playing so stop playing
                        Driver.player.Stop();
                        toggle_play_button.Active = false;
                        artist_label.Markup = "";
                        song_label.Markup = "";
                        this.Title = "Last Exit";

                        trayicon.CanShowPopup = false;
                        // FIXME: Need a blank cover.
                        //Gdk.Pixbuf cover = new Gdk.Pixbuf (null, "unknown-cover.png", 66, 66);
                        //cover_image.ChangePixbuf (cover);
                        cover_image.ChangePixbuf(null);
                    } else {
                        // We were paused so play
                        TreeIter iter;

                        if (station_combo.GetActiveIter (out iter)) {
                            string path = (string) station_combo.Model.GetValue (iter, (int) Column.Path);
                            if (path != null) {
                                Driver.connection.ChangeStation (path);
                            } else {
                                FindStation dialog = new FindStation (this);
                                dialog.Visible = true;
                            }
                        }
                    }
                    break;
                case SpecialKey.AudioNext:
                    Driver.connection.Skip();
                    break;
            }
        }
		void DoPreInsertionSmartIndent (SpecialKey key)
		{
			switch (key) {
			case SpecialKey.BackSpace:
				SafeUpdateIndentEngine (Editor.CaretOffset);
				HandleStringConcatinationDeletion (Editor.CaretOffset - 1, 0);
				break;
			case SpecialKey.Delete:
				SafeUpdateIndentEngine (Editor.CaretOffset);
				HandleStringConcatinationDeletion (Editor.CaretOffset, Editor.Length);
				break;
			}
		}
Example #36
0
 void OnSetSpawnKey(int player, SpecialKey key)
 {
     if (key != SpecialKey.SetSpawn)
     {
         return;
     }
     float[] pos = new float[3];
     pos[0] = m.GetPlayerPositionX(player);
     pos[1] = m.GetPlayerPositionY(player);
     pos[2] = m.GetPlayerPositionZ(player);
     spawnPositions[m.GetPlayerName(player)] = pos;
     m.SendMessage(player, "&7Spawn position set");
 }
Example #37
0
        public static void KeyboardWrite(string ks)
        {
            ks = ks.ToUpper();

            for (int i = 0; i < ks.Length; i++)
            {
                List <byte> Keys = new List <byte>();
                if (ks[i] == '{')
                {
                    int iof;
                    if ((iof = ks.Substring(i).IndexOf('}')) != -1)
                    {
                        Console.WriteLine("i : " + i + ", iof : " + iof);

                        string   content     = ks.Substring(i + 1, iof - 1);
                        string[] SpecialKeys = content.Contains("+") ? content.Split('+') : new string[] { content };

                        foreach (string SpecialKey in SpecialKeys)
                        {
                            byte?CurrentKey = null;
                            switch (SpecialKey)
                            {
                            case "ENTER":
                                CurrentKey = 0x0D;
                                break;

                            case "ALT":
                                CurrentKey = 0x12;
                                break;

                            case "CTRL":
                                CurrentKey = 0x11;
                                break;

                            case "TAB":
                                CurrentKey = 0x09;
                                break;

                            case "START":
                                CurrentKey = 0x5B;
                                break;

                            case "ESC":
                                CurrentKey = 0x1B;
                                break;
                            }
                            if (SpecialKey.StartsWith("F"))
                            {
                                string fnum = SpecialKey.Substring(1);
                                try {
                                    CurrentKey = (byte)(0x70 + (byte)Int32.Parse(fnum) - 1);
                                }
                                catch { }
                                Console.WriteLine("FNUM : " + fnum);
                            }

                            if (!CurrentKey.HasValue)
                            {
                                if (content.EndsWith("MS") && !content.Contains("+"))
                                {
                                    int ms = Int32.Parse(SpecialKey.Substring(0, SpecialKey.Length - 2));
                                    Console.WriteLine("Waiting " + ms);

                                    Thread.Sleep(ms);

                                    continue;
                                }
                                else
                                {
                                    CurrentKey = (byte)SpecialKey[0];
                                }
                            }

                            Keys.Add(CurrentKey.Value);

                            Console.WriteLine("Special Key: " + SpecialKey);
                        }

                        i += iof;
                    }
                }
                else
                {
                    Keys.Add((byte)ks[i]);
                }

                foreach (byte b in Keys)
                {
                    Console.WriteLine("Pressed: " + b);
                    KeyDown(b);
                }
                foreach (byte b in Keys)
                {
                    Console.WriteLine("Released: " + b);
                    KeyUp(b);
                }
            }
        }
Example #38
0
 private static extern int XKeysymToKeycode(IntPtr display, SpecialKey keysym);
Example #39
0
        void OnTabKey(int player, SpecialKey key)
        {
            if (key != SpecialKey.TabPlayerList)
            {
                return;
            }
            tabOpen[m.GetPlayerName(player)] = true;
            Dialog d = new Dialog();
            d.IsModal = true;
            List<Widget> widgets = new List<Widget>();

            // table alignment
            float tableX = xcenter(m.GetScreenResolution(player)[0], tableWidth);
            float tableY = tableMarginTop;

            // text to draw
            string row1 = m.GetServerName();
            row1 = cutText(row1, HeadingFont, tableWidth - 2 * tablePadding);

            string row2 = m.GetServerMotd();
            row2 = cutText(row2, SmallFontBold, tableWidth - 2 * tablePadding);

            string row3_1 = "IP: " + m.GetServerIp() + ":" + m.GetServerPort();
            string row3_2 = (int)(m.GetPlayerPing(player) * 1000) + "ms";

            string row4_1 = "Players: " + m.AllPlayers().Length;
            string row4_2 = "Page: " + (page + 1) + "/" + (pageCount + 1);

            string row5_1 = "ID";
            //string row5_2 = "Player";
            //string row5_3 = "Ping";

            // row heights
            float row1Height = textHeight(row1, HeadingFont) + 2 * tablePadding;
            float row2Height = textHeight(row2, SmallFontBold) + 2 * tablePadding;
            float row3Height = textHeight(row3_1, SmallFont) + 2 * tablePadding;
            float row4Height = textHeight(row4_1, SmallFont) + 2 * tablePadding;
            float row5Height = textHeight(row5_1, NormalFontBold) + 2 * tablePadding;
            float listEntryHeight = textHeight("Player", NormalFont) + 2 * listEntryPaddingTopBottom;

            float heightOffset = 0;

            // determine how many entries can be displayed
            tableHeight = m.GetScreenResolution(player)[1] - tableMarginTop - tableMarginBottom;
            float availableEntrySpace = tableHeight - row1Height - row2Height - row3Height - row4Height - (row5Height + tableLineWidth);

            int entriesPerPage = (int)(availableEntrySpace / listEntryHeight);
            pageCount = (int)Math.Ceiling((float)(m.AllPlayers().Length / entriesPerPage));
            if (page > pageCount)
            {
                page = 0;
            }

            // 1 - heading: Servername
            widgets.Add(Widget.MakeSolid(tableX, tableY, tableWidth, row1Height, Color.DarkGreen.ToArgb()));
            widgets.Add(Widget.MakeText(row1, HeadingFont, tableX + xcenter(tableWidth, textWidth(row1, HeadingFont)), tableY + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row1Height;

            // 2 - MOTD
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, row2Height, Color.ForestGreen.ToArgb()));
            widgets.Add(Widget.MakeText(row2, SmallFontBold, tableX + xcenter(tableWidth, textWidth(row2, SmallFontBold)), tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row2Height;

            // 3 - server info: IP Motd Serverping
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, row3Height, Color.DarkSeaGreen.ToArgb()));
            // row3_1 - IP align left
            widgets.Add(Widget.MakeText(row3_1, SmallFont, tableX + tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row3_2 - Serverping align right
            widgets.Add(Widget.MakeText(row3_2, SmallFont, tableX + tableWidth - textWidth(row3_2, SmallFont) - tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row3Height;

            // 4 - infoline: Playercount, Page
            widgets.Add(Widget.MakeSolid(tableX, tableY + heightOffset, tableWidth, row4Height, Color.DimGray.ToArgb()));
            // row4_1 PlayerCount
            widgets.Add(Widget.MakeText(row4_1, SmallFont, tableX + tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            // row4_2 PlayerCount
            widgets.Add(Widget.MakeText(row4_2, SmallFont, tableX + tableWidth - textWidth(row4_2, SmallFont) - tablePadding, tableY + heightOffset + tablePadding, TEXT_COLOR.ToArgb()));
            heightOffset += row4Height;

            Dictionary<Team, List<int>> playersByTeam = new Dictionary<Team, List<int>>();
            playersByTeam[Team.Blue] = new List<int>();
            playersByTeam[Team.Spectator] = new List<int>();
            playersByTeam[Team.Green] = new List<int>();
            int[] AllPlayers = m.AllPlayers();
            foreach (int p in AllPlayers)
            {
                playersByTeam[players[p].team].Add(p);
            }
            Team[] allteams = new Team[] { Team.Blue, Team.Spectator, Team.Green };
            for (int t = 0; t < allteams.Length; t++)
            {
                List<int> players = playersByTeam[allteams[t]];
                players.Sort((a, b) => (this.players[b].kills.CompareTo(this.players[a].kills)));
                for (int i = 0; i < players.Count; i++)
                {
                    string s = string.Format("{0} {1}ms {2} kills", m.GetPlayerName(players[i]), (int)(m.GetPlayerPing(players[i]) * 1000), this.players[players[i]].kills);
                    widgets.Add(Widget.MakeText(s, NormalFont, tableX + 200 * t, tableY + heightOffset + listEntryHeight * i, Color.White.ToArgb()));
                }
            }

            var wtab = Widget.MakeSolid(0, 0, 0, 0, 0);
            wtab.ClickKey = '\t';
            wtab.Id = "Tab";
            widgets.Add(wtab);
            var wesc = Widget.MakeSolid(0, 0, 0, 0, 0);
            wesc.ClickKey = (char)27;
            wesc.Id = "Esc";
            widgets.Add(wesc);

            d.Width = m.GetScreenResolution(player)[0];
            d.Height = m.GetScreenResolution(player)[1];
            d.Widgets = widgets.ToArray();
            m.SendDialog(player, "PlayerList", d);
        }
Example #40
0
 void OnSelectTeamKey(int player, SpecialKey key)
 {
     if (key != SpecialKey.SelectTeam)
     {
         return;
     }
     if (warmode == WarMode.Edit)
     {
         return;
     }
     ShowTeamSelectionDialog(player);
 }
		static char TranslateKeyCharForIndenter (SpecialKey key, char keyChar, char docChar)
		{
			switch (key) {
			case SpecialKey.Return:
				return '\n';
			case SpecialKey.Tab:
				return '\t';
			default:
				if (docChar == keyChar)
					return keyChar;
				break;
			}
			return '\0';
		}
Example #42
0
 void RespawnKey(int player, SpecialKey key)
 {
     if (key != SpecialKey.Respawn)
     {
         return;
     }
     if (warmode == WarMode.Edit)
     {
         return;
     }
     if (players[player].isdead)
     {
         return;     //Don't allow dead players to respawn
     }
     m.SendMessage(player, "Respawn.");
     Die(player);
 }
Example #43
0
 void OnRespawnKey(int player, SpecialKey key)
 {
     if (key != SpecialKey.Respawn)
     {
         return;
     }
     Respawn(player);
     m.SendMessage(player, "&7Respawn");
 }
 public bool HasKey(SpecialKey key) {
     foreach (Item item in Inventory) {
         if (item is KeyItem) {
             KeyItem keyItem = item as KeyItem;
             if (keyItem.KeyType == key) {
                 return true;
             }
         }
     }
     return false;
 }