示例#1
0
文件: Display.cs 项目: uotools/PlayUO
 public void Display_KeyPress(object sender, KeyPressEventArgs e)
 {
     if (Engine.m_EventOk)
     {
         if (Gumps.KeyDown(e.KeyChar))
         {
             e.Handled = true;
         }
         else
         {
             e.Handled = true;
             if (e.KeyChar == '\x001b')
             {
                 if (Engine.TargetHandler != null)
                 {
                     Engine.TargetHandler.OnCancel(TargetCancelType.UserCancel);
                     Engine.TargetHandler = null;
                     return;
                 }
                 if (Engine.Prompt != null)
                 {
                     Engine.Prompt.OnCancel(PromptCancelType.UserCancel);
                     Engine.Prompt = null;
                     return;
                 }
             }
             if (!Engine.m_Locked)
             {
                 if (e.KeyChar == '\b')
                 {
                     if (Engine.m_Text.Length > 0)
                     {
                         Engine.m_Text = Engine.m_Text.Substring(0, Engine.m_Text.Length - 1);
                         Renderer.SetText(Engine.m_Text);
                     }
                 }
                 else if (e.KeyChar == '\r')
                 {
                     Engine.commandEntered(Engine.Encode(Engine.m_Text));
                     Engine.m_Text = "";
                     Renderer.SetText("");
                 }
                 else if (e.KeyChar < ' ')
                 {
                     e.Handled = false;
                     e.Handled = true;
                 }
                 else
                 {
                     int    num;
                     string input  = Engine.m_Text + e.KeyChar;
                     string text   = Engine.Encode(input) + "_";
                     Mobile player = World.Player;
                     if (((player != null) && player.OpenedStatus) && (player.StatusBar == null))
                     {
                         num = Engine.GameWidth - 0x2e;
                     }
                     else
                     {
                         num = Engine.GameWidth - 4;
                     }
                     if (Engine.GetUniFont(3).GetStringWidth(text) < num)
                     {
                         Engine.m_Text = input;
                         Renderer.SetText(input);
                     }
                 }
             }
         }
     }
 }
示例#2
0
 public void Display_KeyPress(object sender, KeyPressEventArgs e)
 {
     if (!Engine.m_EventOk)
     {
         return;
     }
     if (Gumps.KeyDown(e.KeyChar))
     {
         e.Handled = true;
     }
     else
     {
         e.Handled = true;
         if ((int)e.KeyChar == 27)
         {
             if (TargetManager.IsActive)
             {
                 TargetManager.Active.Cancel();
             }
             else if (Engine.Prompt != null)
             {
                 Engine.Prompt.OnCancel(PromptCancelType.UserCancel);
                 Engine.Prompt = (IPrompt)null;
                 return;
             }
         }
         if (Engine.m_Locked)
         {
             return;
         }
         if ((int)e.KeyChar == 8)
         {
             if (Engine.m_Text.Length <= 0)
             {
                 return;
             }
             Engine.m_Text = Engine.m_Text.Substring(0, Engine.m_Text.Length - 1);
             Renderer.SetText(Engine.m_Text);
         }
         else if ((int)e.KeyChar == 13)
         {
             Engine.commandEntered(Engine.Encode(Engine.m_Text));
             Engine.m_Text = "";
             Renderer.SetText("");
         }
         else if ((int)e.KeyChar < 32)
         {
             e.Handled = false;
             e.Handled = true;
         }
         else
         {
             string str    = Engine.m_Text + (object)e.KeyChar;
             string text   = Engine.Encode(str) + "_";
             Mobile player = World.Player;
             int    num    = player == null || !player.OpenedStatus || player.StatusBar != null ? Engine.GameWidth - 4 : Engine.GameWidth - 46;
             if (Engine.GetUniFont(3).GetStringWidth(text) >= num)
             {
                 return;
             }
             Engine.m_Text = str;
             Renderer.SetText(str);
         }
     }
 }