Example #1
0
        public static void OnRender()
        {
            if (Offset != 0)
            {
                int consoleHeight = AllodsWindow.Height / 2;

                QMesh.SetVertex(0, 0f, 0f, 0f, 0f, 0f, 64, 64, 64, 192);
                QMesh.SetVertex(1, (float)AllodsWindow.Width, 0f, 0f, 0f, 0f, 64, 64, 64, 192);
                QMesh.SetVertex(2, (float)AllodsWindow.Width, (float)consoleHeight, 0f, 0f, 0f, 16, 16, 16, 192);
                QMesh.SetVertex(3, 0f, (float)consoleHeight, 0f, 0f, 0f, 16, 16, 16, 192);

                QMesh.SetVertex(4, 0f, (float)consoleHeight, 0f, 0f, 0f, 255, 120, 0, 255);
                QMesh.SetVertex(5, (float)AllodsWindow.Width, (float)consoleHeight, 0f, 0f, 0f, 150, 72, 0, 255);
                QMesh.SetVertex(6, (float)AllodsWindow.Width, (float)(consoleHeight + 2), 0f, 0f, 0f, 73, 33, 0, 255);
                QMesh.SetVertex(7, 0f, (float)(consoleHeight + 2), 0f, 0f, 0f, 73, 33, 0, 255);

                QMesh.SetVertex(8, 0f, (float)(consoleHeight + 2), 0f, 0f, 0f, 0, 0, 0, 255);
                QMesh.SetVertex(9, (float)AllodsWindow.Width, (float)(consoleHeight + 2), 0f, 0f, 0f, 0, 0, 0, 255);
                QMesh.SetVertex(10, (float)AllodsWindow.Width, (float)(consoleHeight + 8), 0f, 0f, 0f, 0, 0, 0, 0);
                QMesh.SetVertex(11, 0f, (float)(consoleHeight + 8), 0f, 0f, 0f, 0, 0, 0, 0);

                AllodsWindow.SetTranslation(0f, (float)(Offset - consoleHeight), 0f);
                QMesh.Render("notex");

                // now draw last messages. starts with consoleHeight-Fonts.Font2.LineHeight*2
                int textY = Offset - Fonts.Font2.LineHeight * 2;
                int textX = 3;

                // draw text field
                if (LineEditLeft == null)
                {
                    LineEditLeft = Fonts.Font2.Render(">", Font.Align.Left, 0, 0, false);
                }
                LineEditLeft.Render(textX, textY + 6, 1, 255, 255, 255, 255);
                LineEdit.Resize(12, textY + 4, AllodsWindow.Width - 16, Fonts.Font2.LineHeight + 4);
                LineEdit.SetFont(Fonts.Font2);
                LineEdit.TreeRender();

                for (int i = Messages.Count - 1; i >= 0; i--)
                {
                    ClientConsoleMessage msg = Messages[i];
                    if (msg.Text.Length > 0)
                    {
                        msg.UpdateMesh();
                        if (textY + msg.Mesh.MeshHeight < 0)
                        {
                            break;
                        }

                        textY -= msg.Mesh.MeshHeight;
                        msg.Mesh.Render(textX, textY, 1, 255, 255, 255, 255);
                    }
                }
            }
        }
Example #2
0
        public static void OnTick()
        {
            int targetOffset = 0;

            if (Enabled)
            {
                targetOffset = AllodsWindow.Height / 2;
            }

            if (targetOffset != Offset)
            {
                int delay = 5;
                int step  = 5;

                long tL = Core.GetTickCount() - LastTicks;

                if (tL > delay)
                {
                    while (tL > 0 && targetOffset != Offset)
                    {
                        if (targetOffset < Offset)
                        {
                            Offset -= step;
                            if (Offset < targetOffset)
                            {
                                Offset = targetOffset;
                            }
                        }
                        else if (targetOffset > Offset)
                        {
                            Offset += step;
                            if (Offset > targetOffset)
                            {
                                Offset = targetOffset;
                            }
                        }

                        tL        -= delay;
                        LastTicks += delay;
                    }
                }
            }

            // process all buffered messages. these are to be added into the ingame console.
            if (BufferedMessages.Length > 0)
            {
                string lines = BufferedMessages.ToString();
                if (ConsoleWriter != null)
                {
                    ConsoleWriter.Write(lines);
                }

                bool     hasNewline = lines.EndsWith("\n");
                string[] linesp     = lines.Split('\n');
                if (hasNewline)
                {
                    linesp = linesp.Take(linesp.Length - 1).ToArray();
                }

                // first line has special handling.
                int start = 0;
                if (Messages.Count > 0 && !Messages[Messages.Count - 1].Text.EndsWith("\n"))
                {
                    ClientConsoleMessage lastMsg = Messages[Messages.Count - 1];
                    lastMsg.Text     += linesp[0];
                    lastMsg.LastWidth = 0; // force update
                    start             = 1;
                }

                for (int i = start; i < linesp.Length; i++)
                {
                    ClientConsoleMessage msg = new ClientConsoleMessage();
                    msg.Text      = linesp[i] + ((i != linesp.Length - 1 || hasNewline) ? "\n" : "");
                    msg.LastWidth = 0;
                    msg.Mesh      = null;
                    Messages.Add(msg);
                }

                BufferedMessages.Clear();
            }

            if (Enabled)
            {
                LineEdit.TreeTick();
            }
        }