Exemplo n.º 1
0
        protected SizeF MeasureText(DialogFont f, string text)
        {
            Font font = new Font(f.FamilyName, f.Size);

            StringFormat format    = new StringFormat(StringFormat.GenericDefault);
            RectangleF   rectangle = new RectangleF(0, 0, 2000, 1000);

            CharacterRange[] ranges  = { new CharacterRange(0, text.Length) };
            Region[]         regions = new Region[1];

            try
            {
                format.SetMeasurableCharacterRanges(ranges);
                format.FormatFlags = StringFormatFlags.MeasureTrailingSpaces;

                using (Bitmap b = new Bitmap(2000, 1000))
                {
                    using (Graphics g = Graphics.FromImage(b))
                    {
                        regions   = g.MeasureCharacterRanges(text, font, rectangle, format);
                        rectangle = regions[0].GetBounds(g);
                    }
                }
            }
            catch (Exception ex)
            {
                System.Console.WriteLine(ex.ToString());
            }

            return(rectangle.Size);
        }
Exemplo n.º 2
0
        private void OnEntityUse(int player, ServerEntityId id)
        {
            ServerEntity e = m.EntityGet(id);

            if (e.sign == null)
            {
                return;
            }

            // TODO: Check permissions

            Dialog d = new Dialog();

            d.Width   = 400;
            d.Height  = 200;
            d.IsModal = true;
            d.Widgets = new Widget[4];
            int widgetCount = 0;
            var font        = new DialogFont("Verdana", 11f, DialogFontStyle.Bold);

            d.Widgets[widgetCount++] = Widget.MakeSolid(0, 0, 300, 200, Color.FromArgb(255, 50, 50, 50).ToArgb());
            d.Widgets[widgetCount++] = Widget.MakeTextBox(e.sign.text, font, 50, 50, 200, 50, Color.FromArgb(255, 0, 0, 0).ToArgb());
            Widget okHandler = Widget.MakeSolid(100, 100, 100, 50, Color.FromArgb(255, 100, 100, 100).ToArgb());

            okHandler.ClickKey       = (char)13;
            okHandler.Id             = "UseSign_OK";
            d.Widgets[widgetCount++] = okHandler;
            d.Widgets[widgetCount++] = Widget.MakeText("OK", font, 100, 100, Color.FromArgb(255, 0, 0, 0).ToArgb());
            editingSign[player]      = id;
            m.SendDialog(player, "UseSign", d);
        }
Exemplo n.º 3
0
 private string cutText(string text, DialogFont font, float maxWidth)
 {
     while (textWidth(text, font) > maxWidth && text.Length > 3)
     {
         text = text.Remove(text.Length - 1);
     }
     return text;
 }
Exemplo n.º 4
0
 private string cutText(string text, DialogFont font, float maxWidth)
 {
     while (textWidth(text, font) > maxWidth && text.Length > 3)
     {
         text = text.Remove(text.Length - 1);
     }
     return(text);
 }
Exemplo n.º 5
0
        /// <summary>
        /// Dispose resources
        /// </summary>
        public static void Dispose()
        {
            if (MenuFont != null)
            {
                MenuFont.Dispose();
            }
            MenuFont = null;

            if (DialogFont != null)
            {
                DialogFont.Dispose();
            }
            DialogFont = null;
        }
Exemplo n.º 6
0
    void OnUseEntity(int player, int chunkx, int chunky, int chunkz, int id)
    {
        ServerEntity e = server.GetEntity(chunkx, chunky, chunkz, id);

        if (e.permissionSign == null)
        {
            return;
        }
        if (!server.PlayerHasPrivilege(player, ServerClientMisc.Privilege.area_add))
        {
            server.SendMessage(player, server.colorError + server.language.Get("Server_CommandInsufficientPrivileges"));
            return;
        }
        ManicDigger.Dialog d = new ManicDigger.Dialog();
        d.Width   = 400;
        d.Height  = 400;
        d.IsModal = true;
        d.Widgets = new ManicDigger.Widget[4 + server.serverClient.Groups.Count * 2];
        int widgetCount = 0;
        var font        = new DialogFont("Verdana", 11f, DialogFontStyle.Bold);

        d.Widgets[widgetCount++] = Widget.MakeSolid(0, 0, 400, 400, Game.ColorFromArgb(255, 50, 50, 50));
        d.Widgets[widgetCount++] = Widget.MakeTextBox(e.permissionSign.name, font, 50, 50, 200, 50, Game.ColorFromArgb(255, 0, 0, 0));
        for (int i = 0; i < server.serverClient.Groups.Count; i++)
        {
            Group  g      = server.serverClient.Groups[i];
            Widget button = Widget.MakeSolid(50, 150 + i * 50, 100, 40, Game.ColorFromArgb(255, 100, 100, 100));
            button.ClickKey          = (char)13;
            button.Id                = "PermissionSignGroup" + g.Name;
            d.Widgets[widgetCount++] = button;
            d.Widgets[widgetCount++] = Widget.MakeText(g.Name, font, 50, 150 + i * 50, Game.ColorFromArgb(255, 0, 0, 0));
        }
        Widget okHandler = Widget.MakeSolid(200, 50, 100, 50, Game.ColorFromArgb(255, 100, 100, 100));

        okHandler.ClickKey       = (char)13;
        okHandler.Id             = "UsePermissionSign_OK";
        d.Widgets[widgetCount++] = okHandler;
        d.Widgets[widgetCount++] = Widget.MakeText("Set player", font, 200, 50, Game.ColorFromArgb(255, 0, 0, 0));
        ServerEntityId id_ = new ServerEntityId();

        id_.chunkx = chunkx;
        id_.chunky = chunky;
        id_.chunkz = chunkz;
        id_.id     = id;
        server.clients[player].editingSign = id_;
        server.SendDialog(player, "UseSign", d);
    }
Exemplo n.º 7
0
        void UpdateRespawnTimer()
        {
            int[] allplayers       = m.AllPlayers();
            int   secondsToRespawn = (int)((CurrentRespawnTime + RespawnTime) - DateTime.UtcNow).TotalSeconds;

            if (secondsToRespawn <= 0)
            {
                for (int i = 0; i < allplayers.Length; i++)
                {
                    int p = allplayers[i];
                    if (!players.ContainsKey(p))
                    {
                        //Skip this player as he hasn't joined yet
                        continue;
                    }
                    if (players[p].isdead)
                    {
                        m.SendDialog(p, "RespawnCountdown" + p, null);
                        m.FollowPlayer(p, -1, false);
                        Respawn(p);
                        players[p].isdead = false;
                        UpdatePlayerModel(p);
                    }
                }
                CurrentRespawnTime = DateTime.UtcNow;
            }
            for (int i = 0; i < allplayers.Length; i++)
            {
                int p = allplayers[i];
                if (!players.ContainsKey(p))
                {
                    //Skip this player as he hasn't joined yet
                    continue;
                }
                if (players[p].isdead)
                {
                    Dialog d = new Dialog();
                    d.IsModal = false;
                    string     text = secondsToRespawn.ToString();
                    DialogFont f    = new DialogFont("Verdana", 60f, DialogFontStyle.Regular);
                    Widget     w    = Widget.MakeText(text, f, -m.MeasureTextSize(text, f)[0] / 2, -200, Color.Red.ToArgb());
                    d.Widgets    = new Widget[1];
                    d.Widgets[0] = w;
                    m.SendDialog(p, "RespawnCountdown" + p, d);
                }
            }
        }
Exemplo n.º 8
0
 public float[] MeasureTextSize(string text, DialogFont font)
 {
     if (IsArm)
     {
         // fixes crash
         return(new float[] { text.Length * 1f *font.Size, 1.7f *font.Size });
     }
     using (Bitmap bmp = new Bitmap(1, 1))
     {
         using (Graphics g = Graphics.FromImage(bmp))
         {
             g.TextRenderingHint = System.Drawing.Text.TextRenderingHint.AntiAlias;
             Font         tmpFont   = new Font(font.FamilyName, font.Size, (FontStyle)font.FontStyle);
             StringFormat tmpFormat = new StringFormat(StringFormatFlags.MeasureTrailingSpaces);
             SizeF        size      = g.MeasureString(StripColorCodes(text), tmpFont, new PointF(0, 0), tmpFormat);
             return(new float[] { size.Width, size.Height });
         }
     }
 }
Exemplo n.º 9
0
    void OnUseEntity(int player, int chunkx, int chunky, int chunkz, int id)
    {
        ServerEntity e = server.GetEntity(chunkx, chunky, chunkz, id);

        if (e.sign == null)
        {
            return;
        }
        if (!server.CheckBuildPrivileges(player, (int)e.position.x, (int)e.position.z, (int)e.position.y))
        {
            return;
        }
        ManicDigger.Dialog d = new ManicDigger.Dialog();
        d.Width   = 400;
        d.Height  = 200;
        d.IsModal = true;
        d.Widgets = new ManicDigger.Widget[4];
        int widgetCount = 0;
        var font        = new DialogFont("Verdana", 11f, DialogFontStyle.Bold);

        d.Widgets[widgetCount++] = Widget.MakeSolid(0, 0, 300, 200, Game.ColorFromArgb(255, 50, 50, 50));
        d.Widgets[widgetCount++] = Widget.MakeTextBox(e.sign.text, font, 50, 50, 200, 50, Game.ColorFromArgb(255, 0, 0, 0));
        Widget okHandler = Widget.MakeSolid(100, 100, 100, 50, Game.ColorFromArgb(255, 100, 100, 100));

        okHandler.ClickKey       = (char)13;
        okHandler.Id             = "UseSign_OK";
        d.Widgets[widgetCount++] = okHandler;
        d.Widgets[widgetCount++] = Widget.MakeText("OK", font, 100, 100, Game.ColorFromArgb(255, 0, 0, 0));
        ServerEntityId id_ = new ServerEntityId();

        id_.chunkx = chunkx;
        id_.chunky = chunky;
        id_.chunkz = chunkz;
        id_.id     = id;
        server.clients[player].editingSign = id_;
        server.SendDialog(player, "UseSign", d);
    }
Exemplo n.º 10
0
 private float textWidth(string text, DialogFont font)
 {
     return m.MeasureTextSize(text, font)[0];
 }
Exemplo n.º 11
0
 private float textHeight(string text, DialogFont font)
 {
     return m.MeasureTextSize(text, font)[1];
 }
Exemplo n.º 12
0
 private float textHeight(string text, DialogFont font)
 {
     return(m.MeasureTextSize(text, font)[1]);
 }
Exemplo n.º 13
0
 private float textWidth(string text, DialogFont font)
 {
     return(m.MeasureTextSize(text, font)[0]);
 }
Exemplo n.º 14
0
 void UpdateRespawnTimer()
 {
     int[] allplayers = m.AllPlayers();
     int secondsToRespawn = (int)((CurrentRespawnTime + RespawnTime) - DateTime.UtcNow).TotalSeconds;
     if (secondsToRespawn <= 0)
     {
         for (int i = 0; i < allplayers.Length; i++)
         {
             int p = allplayers[i];
             if (!players.ContainsKey(p))
             {
                 //Skip this player as he hasn't joined yet
                 continue;
             }
             if (players[p].isdead)
             {
                 m.SendDialog(p, "RespawnCountdown" + p, null);
                 m.FollowPlayer(p, -1, false);
                 Respawn(p);
                 players[p].isdead = false;
                 UpdatePlayerModel(p);
             }
         }
         CurrentRespawnTime = DateTime.UtcNow;
     }
     for (int i = 0; i < allplayers.Length; i++)
     {
         int p = allplayers[i];
         if (!players.ContainsKey(p))
         {
             //Skip this player as he hasn't joined yet
             continue;
         }
         if (players[p].isdead)
         {
             Dialog d = new Dialog();
             d.IsModal = false;
             string text = secondsToRespawn.ToString();
             DialogFont f = new DialogFont("Verdana", 60f, DialogFontStyle.Regular);
             Widget w = Widget.MakeText(text, f, -m.MeasureTextSize(text, f)[0] / 2, -200, Color.Red.ToArgb());
             d.Widgets = new Widget[1];
             d.Widgets[0] = w;
             m.SendDialog(p, "RespawnCountdown" + p, d);
         }
     }
 }