Exemple #1
0
        public Sentence WriteSentence(String Text, int Time, Vector2 Position, Origin Origin, Layer Layer, TextAlign Alignment, bool ScaleSprite = true, bool CharByChar = true, double Scale = 480.0 / 1080.0)
        {
            Text = Text.Trim();

            List <Sprite> TextSprites = new List <Sprite>();

            double X = Position.X;
            double Y = Position.Y;

            double SentenceSize = 0;

            if (CharByChar)
            {
                foreach (char c in Text)
                {
                    SentenceSize += c == ' ' ? Scale * Size * 0.35 : Scale *CreateSprite(c.ToString()).getWidth() - Size * Scale * 0.45;
                }
            }
            else
            {
                SentenceSize = Scale * CreateSprite(Text).getWidth() - Size * Scale;
            }

            double XDec = -Size / 10;

            switch (Alignment)
            {
            case TextAlign.Left:
            {
                break;
            }

            case TextAlign.Centre:
            {
                XDec -= SentenceSize / 2;
                break;
            }

            case TextAlign.Right:
            {
                XDec -= SentenceSize;
                break;
            }
            }

            if (CharByChar)
            {
                foreach (char c in Text)
                {
                    if (c.Equals(' '))
                    {
                        X += Scale * Size * 0.35;
                        continue;
                    }

                    FontText s = CreateSprite(c.ToString());
                    Vector2  Dec = decByOrigin(Origin, Scale, s.getWidth(), s.getHeight());
                    double   LayerDecX = Dec.X, LayerDecY = Dec.Y;

                    Sprite Sprite = Layer.CreateSprite(Path + s.getFileName() + ".png", Origin, X + LayerDecX + XDec, Y + LayerDecY);
                    if (ScaleSprite)
                    {
                        Sprite.Scale(Time, Scale);
                    }

                    X += Scale * s.getWidth() - Size * Scale * 0.45;
                    TextSprites.Add(Sprite);
                }
            }
            else
            {
                FontText s = CreateSprite(Text);
                Vector2  Dec = decByOrigin(Origin, Scale, s.getWidth(), s.getHeight());
                double   LayerDecX = Dec.X, LayerDecY = Dec.Y;
                Sprite   Sprite = Layer.CreateSprite(Path + s.getFileName() + ".png", Origin, X + LayerDecX + XDec, Y + LayerDecY);
                if (ScaleSprite)
                {
                    Sprite.Scale(Time, Scale);
                }

                TextSprites.Add(Sprite);
            }

            return(new Sentence(SentenceSize, TextSprites, Alignment));
        }
Exemple #2
0
        private Vector2 decByOrigin(Origin Origin, double Scale, double Width, double Height)
        {
            double LayerDecX = 0, LayerDecY = 0;

            switch (Origin.getName())
            {
            case "TopLeft":
            {
                break;
            }

            case "TopCentre":
            {
                LayerDecX += Scale * Width / 2;
                break;
            }

            case "TopRight":
            {
                LayerDecX += Scale * Width;
                break;
            }

            case "CentreLeft":
            {
                LayerDecY += Scale * Height / 2;
                break;
            }

            case "Centre":
            {
                LayerDecX += Scale * Width / 2;
                LayerDecY += Scale * Height / 2;
                break;
            }

            case "CentreRight":
            {
                LayerDecX += Scale * Width;
                LayerDecY += Scale * Height / 2;
                break;
            }

            case "BottomLeft":
            {
                LayerDecY += Scale * Height;
                break;
            }

            case "BottomCentre":
            {
                LayerDecX += Scale * Width / 2;
                LayerDecY += Scale * Height;
                break;
            }

            case "BottomRight":
            {
                LayerDecX += Scale * Width;
                LayerDecY += Scale * Height;
                break;
            }
            }
            return(new Vector2(LayerDecX, LayerDecY));
        }