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)) ); }
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(); }
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(); }
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(), }, }); }