示例#1
0
 internal static void HandleChatMessage(DataBuffer buffer)
 {
     var type = (Enumerations.MessageType)buffer.ReadByte();
     var msg = buffer.ReadString();
     SFML.Graphics.Color color = new SFML.Graphics.Color(0, 0, 0);
     if (!Data.InGame) return;
     switch (type) {
         case Enumerations.MessageType.System:
             color = new SFML.Graphics.Color(100, 100, 49);
         break;
         case Enumerations.MessageType.Error:
             color = new SFML.Graphics.Color(255, 0, 0);
         break;
         case Enumerations.MessageType.World:
             color = new SFML.Graphics.Color(0, 195, 255);
         break;
         case Enumerations.MessageType.Map:
             color = new SFML.Graphics.Color(0, 0, 0);
         break;
         case Enumerations.MessageType.Emote:
             color = new SFML.Graphics.Color(255, 59, 0);
         break;
     }
     Interface.GUI.Get<TGUI.ChatBox>("chat").AddLine(msg, color);
 }
示例#2
0
        public static Color InterpolateBetween( Color endPoint1, Color endPoint2, double lambda)
        {
            if (lambda < 0 || lambda > 1)
            {
                throw new ArgumentOutOfRangeException("lambda");
            }
            Color color = new Color
                (
                    InterpolateComponent(endPoint1, endPoint2, lambda, RedSelector),
                    InterpolateComponent(endPoint1, endPoint2, lambda, GreenSelector),
                    InterpolateComponent(endPoint1, endPoint2, lambda, BlueSelector)
                );

            return color;
        }
示例#3
0
        private void InitPreview()
        {
            m_sfmlControl.Dock = DockStyle.Fill;
            m_sfmlControl.DrawDelegates.Add(this.DrawPreviewNoLighting);
            m_sfmlControl.UpdateDelegates.Add(this.UpdateSprites);
            panelEditorOuter.Controls.Add(m_sfmlControl);

            //create layers to hold sprites
            for (var i = 0; i < Enum.GetValues(typeof(Layer)).Length; ++i)
            {
                m_previewLayers.Add(new List <SFML.Graphics.RectangleShape>());
            }

            byte[]       va = Encoding.UTF8.GetBytes(lightShaderVert);
            MemoryStream vs = new MemoryStream(va);

            byte[]       fa = Encoding.UTF8.GetBytes("#version 130\n#define TEXTURE\n" + lightShaderFrag);
            MemoryStream fs = new MemoryStream(fa);

            m_lightShaderTextured = new SFML.Graphics.Shader(vs, fs);

            fa = Encoding.UTF8.GetBytes("#version 130\n#define COLOUR\n" + lightShaderFrag);
            fs = new MemoryStream(fa);
            m_lightShaderColoured = new SFML.Graphics.Shader(vs, fs);

            var colour = panelAmbientColour.BackColor;

            m_ambientColour = new SFML.Graphics.Color(colour.R, colour.G, colour.B);
            colour          = panelSunColour.BackColor;
            m_sunColour     = new SFML.Graphics.Color(colour.R, colour.G, colour.B);

            m_sfmlControl.MouseDown  += m_sfmlControl_MouseDown;
            m_sfmlControl.MouseUp    += m_sfmlControl_MouseUp;
            m_sfmlControl.MouseMove  += m_sfmlControl_MouseMove;
            m_sfmlControl.MouseClick += m_sfmlControl_MouseClick;
        }
示例#4
0
 private void panelAmbientColour_BackColorChanged(object sender, EventArgs e)
 {
     var c = panelAmbientColour.BackColor;
     m_ambientColour = new SFML.Graphics.Color(c.R, c.G, c.B);
     m_modified = true;
 }
示例#5
0
        public static void DrawBank()
        {
            int       i       = 0;
            int       x       = 0;
            int       y       = 0;
            int       itemnum = 0;
            string    amount  = "";
            Rectangle sRect   = new Rectangle();
            Rectangle dRect   = new Rectangle();
            int       sprite  = 0;

            SFML.Graphics.Color colour = new SFML.Graphics.Color();

            //first render panel
            C_Graphics.RenderSprite(C_Graphics.BankPanelSprite, C_Graphics.GameWindow, C_UpdateUI.BankWindowX, C_UpdateUI.BankWindowY, 0, 0, C_Graphics.BankPanelGfxInfo.Width, C_Graphics.BankPanelGfxInfo.Height);

            //Headertext
            C_Text.DrawText(C_UpdateUI.BankWindowX + 140, C_UpdateUI.BankWindowY + 6, "Your Bank", SFML.Graphics.Color.White, SFML.Graphics.Color.Black, C_Graphics.GameWindow, (byte)15);

            //close
            C_Text.DrawText(C_UpdateUI.BankWindowX + 140, C_UpdateUI.BankWindowY + C_Graphics.BankPanelGfxInfo.Height - 20, "Close Bank", SFML.Graphics.Color.White, SFML.Graphics.Color.Black, C_Graphics.GameWindow, (byte)15);

            for (i = 1; i <= Constants.MAX_BANK; i++)
            {
                itemnum = C_GameLogic.GetBankItemNum((byte)i);
                if (itemnum > 0 && itemnum <= Constants.MAX_ITEMS)
                {
                    sprite = Types.Item[itemnum].Pic;

                    if (C_Graphics.ItemsGfxInfo[sprite].IsLoaded == false)
                    {
                        C_Graphics.LoadTexture(sprite, (byte)4);
                    }

                    //seeying we still use it, lets update timer
                    ref var with_1 = ref C_Graphics.ItemsGfxInfo[sprite];
                    with_1.TextureTimer = C_General.GetTickCount() + 100000;

                    sRect.Y      = 0;
                    sRect.Height = C_Constants.PicY;
                    sRect.X      = 0;
                    sRect.Width  = C_Constants.PicX;

                    dRect.Y      = C_UpdateUI.BankWindowY + C_UpdateUI.BankTop + ((C_UpdateUI.BankOffsetY + 32) * ((i - 1) / C_UpdateUI.BankColumns));
                    dRect.Height = C_Constants.PicY;
                    dRect.X      = C_UpdateUI.BankWindowX + C_UpdateUI.BankLeft + ((C_UpdateUI.BankOffsetX + 32) * ((i - 1) % C_UpdateUI.BankColumns));
                    dRect.Width  = C_Constants.PicX;

                    C_Graphics.RenderSprite(C_Graphics.ItemsSprite[sprite], C_Graphics.GameWindow, dRect.X, dRect.Y, sRect.X, sRect.Y, sRect.Width, sRect.Height);

                    // If item is a stack - draw the amount you have
                    if (C_GameLogic.GetBankItemValue((byte)i) > 1)
                    {
                        y = dRect.Top + 22;
                        x = dRect.Left - 4;

                        amount = System.Convert.ToString(C_GameLogic.GetBankItemValue((byte)i));
                        colour = SFML.Graphics.Color.White;
                        // Draw currency but with k, m, b etc. using a convertion function
                        if (long.Parse(amount) < 1000000)
                        {
                            colour = SFML.Graphics.Color.White;
                        }
                        else if (long.Parse(amount) > 1000000 && long.Parse(amount) < 10000000)
                        {
                            colour = SFML.Graphics.Color.Yellow;
                        }
                        else if (long.Parse(amount) > 10000000)
                        {
                            colour = SFML.Graphics.Color.Green;
                        }

                        C_Text.DrawText(x, y, C_GameLogic.ConvertCurrency(System.Convert.ToInt32(amount)), colour, SFML.Graphics.Color.Black, C_Graphics.GameWindow);
                    }
                }
            }
示例#6
0
        public static void DrawTrade()
        {
            int       i       = 0;
            int       x       = 0;
            int       y       = 0;
            int       itemnum = 0;
            int       itempic = 0;
            string    amount  = "";
            Rectangle rec     = new Rectangle();
            Rectangle recPos  = new Rectangle();

            SFML.Graphics.Color colour = new SFML.Graphics.Color();

            amount = System.Convert.ToString(0);
            colour = SFML.Graphics.Color.White;

            if (!C_Variables.InGame)
            {
                return;
            }

            //first render panel
            C_Graphics.RenderSprite(C_Graphics.TradePanelSprite, C_Graphics.GameWindow, C_UpdateUI.TradeWindowX, C_UpdateUI.TradeWindowY, 0, 0, C_Graphics.TradePanelGfxInfo.Width, C_Graphics.TradePanelGfxInfo.Height);

            //Headertext
            C_Text.DrawText(C_UpdateUI.TradeWindowX + 70, C_UpdateUI.TradeWindowY + 6, "Your Offer", SFML.Graphics.Color.White, SFML.Graphics.Color.Black, C_Graphics.GameWindow, (byte)15);

            C_Text.DrawText(C_UpdateUI.TradeWindowX + 260, C_UpdateUI.TradeWindowY + 6, C_UpdateUI.Tradername + "'s Offer.", SFML.Graphics.Color.White, SFML.Graphics.Color.Black, C_Graphics.GameWindow, (byte)15);

            for (i = 1; i <= Constants.MAX_INV; i++)
            {
                // blt your own offer
                itemnum = C_Player.GetPlayerInvItemNum(C_Variables.Myindex, TradeYourOffer[i].Num);

                if (itemnum > 0 && itemnum <= Constants.MAX_ITEMS)
                {
                    itempic = Types.Item[itemnum].Pic;

                    if (itempic > 0 && itempic <= C_Graphics.NumItems)
                    {
                        if (C_Graphics.ItemsGfxInfo[itempic].IsLoaded == false)
                        {
                            C_Graphics.LoadTexture(itempic, (byte)4);
                        }

                        //seeying we still use it, lets update timer
                        ref var with_1 = ref C_Graphics.ItemsGfxInfo[itempic];
                        with_1.TextureTimer = C_General.GetTickCount() + 100000;

                        rec.Y      = 0;
                        rec.Height = C_Constants.PicY;
                        rec.X      = 0;
                        rec.Width  = C_Constants.PicX;

                        recPos.Y      = C_UpdateUI.TradeWindowY + C_UpdateUI.OurTradeY + C_UpdateUI.InvTop + ((C_UpdateUI.InvOffsetY + 32) * ((i - 1) / C_UpdateUI.InvColumns));
                        recPos.Height = C_Constants.PicY;
                        recPos.X      = C_UpdateUI.TradeWindowX + C_UpdateUI.OurTradeX + C_UpdateUI.InvLeft + ((C_UpdateUI.InvOffsetX + 32) * ((i - 1) % C_UpdateUI.InvColumns));
                        recPos.Width  = C_Constants.PicX;

                        C_Graphics.RenderSprite(C_Graphics.ItemsSprite[itempic], C_Graphics.GameWindow, recPos.X, recPos.Y, rec.X, rec.Y, rec.Width, rec.Height);

                        // If item is a stack - draw the amount you have
                        if (TradeYourOffer[i].Value >= 1)
                        {
                            y = recPos.Top + 22;
                            x = recPos.Left - 4;

                            // Draw currency but with k, m, b etc. using a convertion function
                            if (double.Parse(amount) < 1000000)
                            {
                                colour = SFML.Graphics.Color.White;
                            }
                            else if (double.Parse(amount) > 1000000 && long.Parse(amount) < 10000000)
                            {
                                colour = SFML.Graphics.Color.Yellow;
                            }
                            else if (double.Parse(amount) > 10000000)
                            {
                                colour = SFML.Graphics.Color.Green;
                            }

                            amount = System.Convert.ToString(TradeYourOffer[i].Value);
                            C_Text.DrawText(x, y, C_GameLogic.ConvertCurrency(System.Convert.ToInt32(amount)), colour, SFML.Graphics.Color.Black, C_Graphics.GameWindow);
                        }
                    }
                }
            }
        private void CalculeMaps()
        {
            int    cellId        = 0;
            double cellWidth     = 86;
            double cellHeight    = 43;
            double midCellHeight = cellHeight / 2;
            double midCellWidth  = cellWidth / 2;

            CellManager.Instance.offsetX = 586;
            CellManager.Instance.offsetY = 543;
            int offsetX = CellManager.Instance.offsetX - 430;
            int offsetY = CellManager.Instance.offsetY - 258;

            lock (Maps)
            {
                Maps.Clear();

                int map = 0;
                for (int axeY = 1; axeY < countY + 1; axeY++)
                {
                    for (int u = 0; u < countX; u++)
                    {
                        if (Maps.Count - 1 < map)
                        {
                            Maps.Add(new List <MapCell>());
                        }

                        Maps[map].Clear();
                        var rand  = new Random();
                        var color = new SFML.Graphics.Color((byte)(rand.Next(0, 90) % 255), (byte)(rand.Next(0, 90) % 255), (byte)(rand.Next(0, 90) % 255));

                        for (int y = 0; y < 2 * 20; y++)
                        {
                            if (y % 2 == 0)
                            {
                                for (int x = 0; x < 14; x++)
                                {
                                    var left  = new Vector2f((int)(offsetX + x * cellWidth), (int)(offsetY + y * midCellHeight + midCellHeight));
                                    var top   = new Vector2f((int)(offsetX + x * cellWidth + midCellWidth), (int)(offsetY + y * midCellHeight));
                                    var right = new Vector2f((int)(offsetX + x * cellWidth + cellWidth), (int)(offsetY + y * midCellHeight + midCellHeight));
                                    var down  = new Vector2f((int)(offsetX + x * cellWidth + midCellWidth), (int)(offsetY + y * midCellHeight + cellHeight));
                                    var cell  = mcells.FirstOrDefault(current => current != null && current.Points[0] == left && current.Points[1] == top && current.Points[2] == right && current.Points[3] == down);
                                    if (cell != null)
                                    {
                                        cell.RealID = cellId;
                                        Maps[map].Add(cell);
                                    }
                                    cellId++;
                                }
                            }
                            else
                            {
                                for (int x = 0; x < 14; x++)
                                {
                                    var left  = new Vector2f((int)(offsetX + x * cellWidth + midCellWidth), (int)(offsetY + y * midCellHeight + midCellHeight));
                                    var top   = new Vector2f((int)(offsetX + x * cellWidth + cellWidth), (int)(offsetY + y * midCellHeight));
                                    var right = new Vector2f((int)(offsetX + x * cellWidth + cellWidth + midCellWidth), (int)(offsetY + y * midCellHeight + midCellHeight));
                                    var down  = new Vector2f((int)(offsetX + x * cellWidth + cellWidth), (int)(offsetY + y * midCellHeight + cellHeight));
                                    var cell  = mcells.FirstOrDefault(current => current != null && current.Points[0] == left && current.Points[1] == top && current.Points[2] == right && current.Points[3] == down);
                                    if (cell != null)
                                    {
                                        cell.RealID = cellId;
                                        Maps[map].Add(cell);
                                    }
                                    cellId++;
                                }
                            }
                        }
                        offsetX = (int)Maps[map][13].Center.X + 43;
                        cellId  = 0;
                        map++;
                    }
                    offsetX = CellManager.Instance.offsetX - 430;
                    offsetY = (int)((CellManager.Instance.offsetY - 258) + (axeY * 10 * 86));
                }
            }
        }
示例#8
0
 public ColourAffector(SFML.Graphics.Color start, SFML.Graphics.Color end, float duration)
 {
     m_start = start; m_end = end; m_duration = duration;
 }
示例#9
0
 private static byte InterpolateComponent(Color endPoint1, Color endPoint2, double lambda, ComponentSelector selector)
 {
     return (byte)(selector(endPoint1) + (selector(endPoint2) - selector(endPoint1)) * lambda);
 }
 public static bool Matches(this SFMLColor self, SadRogueColor other)
 => self.R == other.R && self.G == other.G && self.B == other.B && self.A == other.A;
 public static SadRogueColor ToSadRogueColor(this SFMLColor self)
 => new SadRogueColor(self.R, self.G, self.B, self.A);
示例#12
0
        private void AffectorWindow_FormClosing(object sender, FormClosingEventArgs e)
        {
            switch (m_type)
            {
                case AffectorType.Colour:
                    SFML.Graphics.Color start = new SFML.Graphics.Color();
                    start.R = panelColourStart.BackColor.R;
                    start.G = panelColourStart.BackColor.G;
                    start.B = panelColourStart.BackColor.B;

                    SFML.Graphics.Color end = new SFML.Graphics.Color();
                    end.R = panelColourEnd.BackColor.R;
                    end.G = panelColourEnd.BackColor.G;
                    end.B = panelColourEnd.BackColor.B;

                    Affector = new ColourAffector(start, end, (float)numericUpDownColour.Value);
                    break;
                case AffectorType.Force:
                    Affector = new ForceAffector(new SFML.Window.Vector2f((float)numericUpDownForceX.Value, (float)numericUpDownForceY.Value));
                    break;
                case AffectorType.Rotation:
                    Affector = new RotationAffector((float)numericUpDownRotation.Value);
                    break;
                case AffectorType.Scale:
                    Affector = new ScaleAffector(new SFML.Window.Vector2f((float)numericUpDownScaleX.Value, (float)numericUpDownScaleY.Value));
                    break;
                case AffectorType.Velocity:
                    Affector = new VelocityAffector(new SFML.Window.Vector2f((float)numericUpDownVelX.Value, (float)numericUpDownVelY.Value));
                    break;
            }
        }
示例#13
0
 /// <summary>
 /// Gets an XML node attribute as a SFML Color.
 /// </summary>
 /// <returns>The attribute value or the default value.</returns>
 /// <param name="node">Node.</param>
 /// <param name="attributeName">Attribute name.</param>
 /// <param name="def">Default value that will be returned on errors.</param>
 static public SFML.Graphics.Color GetColor(XmlNode node, string attributeName, SFML.Graphics.Color def)
 {
     try {
         var buff = XmlUtilities.GetIntArray(node, attributeName);
         var res  = new SFML.Graphics.Color((byte)buff[0], (byte)buff[1], (byte)buff[2]);
         if (buff.Length > 3)
         {
             res.A = (byte)buff[3];
         }
         return(res);
     } catch {
         return(def);
     }
 }
示例#14
0
文件: Texture.cs 项目: pzaps/CrossGFX
 public Texture(SFML.Graphics.Texture texture)
 {
     this.texture = texture;
     this.drawColor = SFML.Graphics.Color.White;
 }
示例#15
0
 public ColourAffector(SFML.Graphics.Color start, SFML.Graphics.Color end, float duration)
 {
     m_start = start; m_end = end; m_duration = duration;
 }
示例#16
0
        public void update(Particle p, float dt)
        {
            float ratio = (m_duration - p.Lifetime) / m_duration;
            ratio = Math.Max(0f, Math.Min(ratio, 1f));

            SFML.Graphics.Color c = new SFML.Graphics.Color
            (
                lerp(m_start.R, m_end.R, ratio),
                lerp(m_start.G, m_end.G, ratio),
                lerp(m_start.B, m_end.B, ratio)
            );
            p.Colour = c;
        }