Пример #1
0
        private IntRect GlyphArea;      // Total glyph-occupied region - doesn't change

        public GlyphStream(GlyphStreamConfig settings, Rectangle workingArea)
        {
            _workingArea = workingArea;
            _glyphConfig = settings.GlyphConfig;

            MAX_GLYPHS       = settings.MaxGlyphs;
            MIN_GLYPHS       = settings.MinGlyphs;
            MAX_MOVEMENTRATE = settings.MaxMovementRate;
            MIN_MOVEMENTRATE = settings.MinMovementRate;
            MIN_GLYPHSCALE   = settings.MinGlyphScale;
            MAX_GLYPHSCALE   = settings.MaxGlyphScale;
            MARGIN_SCALE     = settings.MarginScale;

            movementRate = GetRandom.Float(MIN_MOVEMENTRATE, MAX_MOVEMENTRATE);
            var numberOfGlyphs = GetRandom.Int(MIN_GLYPHS, MAX_GLYPHS);

            scale = GetRandom.Float(MIN_GLYPHSCALE, MAX_GLYPHSCALE);
            displayDurationMultipier = GetRandom.Float(0.5f / numberOfGlyphs, 1f);

            GlyphPosition = new Vector2f(
                GetRandom.Int((int)-GlyphSize.X, (int)(_workingArea.Width + GlyphSize.X)),
                GetRandom.Int((int)-GlyphSize.Y, (int)(_workingArea.Height + GlyphSize.Y)));

            ////TODO: refactor to a debugGlpyhStream class
            //if (Config.IsDebugGlyphStreams)
            //{
            //    // Just for debugging
            //    numberOfGlyphs = 6;
            //    GlyphPosition = new Vector2f(10,10);
            //    movementRate = 80;
            //    scale = 0.2f;
            //    displayDurationMultipier = 0.5f;
            //}

            _glyphs = new List <Glyph>();
            for (int i = 0; i < numberOfGlyphs; i++)
            {
                var y = GlyphPosition.Y + (i * Glyph.GLYPH_HEIGHT * scale * MARGIN_SCALE);

                if (y + Glyph.GLYPH_HEIGHT < 0)
                {
                    continue;
                }
                if (y > workingArea.Height)
                {
                    continue;
                }

                _glyphs.Add(new Glyph(new Vector2f(GlyphPosition.X, y), scale, _glyphConfig));
            }

            MaskPosition = new Vector2f(GlyphPosition.X, GlyphPosition.Y - MaskSize.Y);

            GlyphArea = new IntRect(
                (int)GlyphPosition.X,
                (int)GlyphPosition.Y,
                (int)GlyphSize.X,
                (int)GlyphSize.Y + (int)(GlyphSize.Y * MARGIN_SCALE * (_glyphs.Count - 1f))
                );
        }
Пример #2
0
        public Glyph(Vector2f location, float scale, GlyphConfig settings)
        {
            _config = settings;

            _sprite = new Sprite(_texture)
            {
                Scale = new Vector2f(scale, scale),
                Position = location,
            };

            _spriteOutline = new Sprite(_textureOutline)
            {
                Scale = new Vector2f(scale, scale),
                Position = location,
            };

            var glyphAreaX = (GLYPH_WIDTH*scale);
            _glyphArea = new IntRect(
                (int) (location.X - 0.5f*glyphAreaX),
                (int) location.Y,
                (int) glyphAreaX,
                (int) (GLYPH_HEIGHT*scale));

            Index = GetRandom.Int(MAX_INDEX);
            _twitch = new TwitchCalculator();
        }
Пример #3
0
        public Glyph(Vector2f location, float scale, GlyphConfig settings)
        {
            _config = settings;

            _sprite = new Sprite(_texture)
            {
                Scale    = new Vector2f(scale, scale),
                Position = location,
            };

            _spriteOutline = new Sprite(_textureOutline)
            {
                Scale    = new Vector2f(scale, scale),
                Position = location,
            };

            var glyphAreaX = (GLYPH_WIDTH * scale);

            _glyphArea = new IntRect(
                (int)(location.X - 0.5f * glyphAreaX),
                (int)location.Y,
                (int)glyphAreaX,
                (int)(GLYPH_HEIGHT * scale));

            Index   = GetRandom.Int(MAX_INDEX);
            _twitch = new TwitchCalculator();
        }
Пример #4
0
        public GlyphStream(GlyphStreamConfig settings, Rectangle workingArea)
        {
            _workingArea = workingArea;
            _glyphConfig = settings.GlyphConfig;

            MAX_GLYPHS = settings.MaxGlyphs;
            MIN_GLYPHS = settings.MinGlyphs;
            MAX_MOVEMENTRATE = settings.MaxMovementRate;
            MIN_MOVEMENTRATE = settings.MinMovementRate;
            MIN_GLYPHSCALE = settings.MinGlyphScale;
            MAX_GLYPHSCALE = settings.MaxGlyphScale;
            MARGIN_SCALE = settings.MarginScale;

            movementRate = GetRandom.Float(MIN_MOVEMENTRATE, MAX_MOVEMENTRATE);
            var numberOfGlyphs = GetRandom.Int(MIN_GLYPHS, MAX_GLYPHS);
            scale = GetRandom.Float(MIN_GLYPHSCALE, MAX_GLYPHSCALE);
            displayDurationMultipier = GetRandom.Float(0.5f / numberOfGlyphs, 1f);

            GlyphPosition = new Vector2f(
                GetRandom.Int((int)-GlyphSize.X, (int) (_workingArea.Width + GlyphSize.X)),
                GetRandom.Int((int)-GlyphSize.Y, (int)(_workingArea.Height + GlyphSize.Y)));

            ////TODO: refactor to a debugGlpyhStream class
            //if (Config.IsDebugGlyphStreams)
            //{
            //    // Just for debugging
            //    numberOfGlyphs = 6;
            //    GlyphPosition = new Vector2f(10,10);
            //    movementRate = 80;
            //    scale = 0.2f;
            //    displayDurationMultipier = 0.5f;
            //}

            _glyphs = new List<Glyph>();
            for (int i = 0; i < numberOfGlyphs; i++)
            {
                var y = GlyphPosition.Y + (i * Glyph.GLYPH_HEIGHT * scale * MARGIN_SCALE);

                if (y + Glyph.GLYPH_HEIGHT < 0) continue;
                if (y > workingArea.Height) continue;

                _glyphs.Add(new Glyph(new Vector2f(GlyphPosition.X, y), scale, _glyphConfig));
            }

            MaskPosition = new Vector2f(GlyphPosition.X, GlyphPosition.Y - MaskSize.Y);

            GlyphArea = new IntRect(
                (int)GlyphPosition.X,
                (int)GlyphPosition.Y,
                (int)GlyphSize.X,
                (int)GlyphSize.Y + (int)(GlyphSize.Y * MARGIN_SCALE * (_glyphs.Count - 1f))
                );
        }
        internal static GlyphStreamManagerConfig Big()
        {
            return(new GlyphStreamManagerConfig()
            {
                MaximumGlyphStreams = 50,
                ChanceOfNewGlyphStream = 0.03f,
                GlyphStreamConfig = new GlyphStreamConfig()
                {
                    MaxGlyphs = 20,
                    MinGlyphs = 3,
                    MaxMovementRate = 300f,
                    MinMovementRate = 40f,

                    MinGlyphScale = 0.02f,
                    MaxGlyphScale = 0.36f,
                    MarginScale = 0.8f,

                    GlyphConfig = GlyphConfig.Bright(),
                },
            });
        }
        internal static GlyphStreamManagerConfig Debug()
        {
            return(new GlyphStreamManagerConfig()
            {
                MaximumGlyphStreams = 1,
                ChanceOfNewGlyphStream = 1,

                GlyphStreamConfig = new GlyphStreamConfig()
                {
                    MaxGlyphs = 20,
                    MinGlyphs = 3,
                    MaxMovementRate = 300f,
                    MinMovementRate = 40f,

                    MinGlyphScale = 0.05f,
                    MaxGlyphScale = 0.4f,

                    GlyphConfig = GlyphConfig.Default(),
                },
            });
        }
        internal static GlyphStreamManagerConfig Mini()
        {
            return(new GlyphStreamManagerConfig()
            {
                MaximumGlyphStreams = 800,
                ChanceOfNewGlyphStream = 0.31f,
                ShaderType = SHADER_GHOST,
                GlyphStreamConfig = new GlyphStreamConfig()
                {
                    MaxGlyphs = 20,
                    MinGlyphs = 3,
                    MaxMovementRate = 300f,
                    MinMovementRate = 40f,

                    MinGlyphScale = 0.02f,
                    MaxGlyphScale = 0.055f,
                    MarginScale = 0.8f,

                    GlyphConfig = GlyphConfig.Default(),
                },
            });
        }
        internal static GlyphStreamManagerConfig BigFew()
        {
            return(new GlyphStreamManagerConfig()
            {
                MaximumGlyphStreams = 6,
                ChanceOfNewGlyphStream = 0.09f,
                ShaderType = SHADER_GLITCH,

                GlyphStreamConfig = new GlyphStreamConfig()
                {
                    MaxGlyphs = 20,
                    MinGlyphs = 3,
                    MaxMovementRate = 300f,
                    MinMovementRate = 30f,

                    MinGlyphScale = 0.08f,
                    MaxGlyphScale = 0.2f,
                    MarginScale = 0.8f,

                    GlyphConfig = GlyphConfig.Bright(),
                },
            });
        }