public void DrawText(SpriteRenderer r, string text, float2 location, Color c) { location.Y += size; // baseline vs top var p = location; foreach (var s in text) { if (s == '\n') { location.Y += size; p = location; continue; } var g = glyphs[s]; r.DrawSprite(g.Sprite, new float2( (int)Math.Round(p.X + g.Offset.X, 0), p.Y + g.Offset.Y), "chrome"); p.X += g.Advance; } r.Flush(); }
public SmudgeRenderer( Renderer renderer, Map map ) { this.spriteRenderer = new SpriteRenderer( renderer, true ); this.map = map; smudgeSprites = smudgeSpriteNames.SelectMany(f => SpriteSheetBuilder.LoadAllSprites(f)).ToArray(); }
public Viewport(float2 screenSize, int2 mapStart, int2 mapEnd, Renderer renderer) { this.screenSize = screenSize; this.renderer = renderer; cursorRenderer = new SpriteRenderer(renderer, true); this.scrollPosition = Game.CellSize* mapStart; }
internal void Draw(SpriteRenderer r) { if (dirty) { dirty = false; for (int j = map.YOffset; j < map.YOffset + map.Height; j++) for (int i = map.XOffset; i < map.XOffset + map.Width; i++) sprites[i, j] = ChooseShroud(i, j); for (int j = map.YOffset; j < map.YOffset + map.Height; j++) for (int i = map.XOffset; i < map.XOffset + map.Width; i++) fogSprites[i, j] = ChooseFog(i, j); } var miny = bounds.HasValue ? Math.Max(map.YOffset, bounds.Value.Top) : map.YOffset; var maxy = bounds.HasValue ? Math.Min(map.YOffset + map.Height, bounds.Value.Bottom) : map.YOffset + map.Height; var minx = bounds.HasValue ? Math.Max(map.XOffset, bounds.Value.Left) : map.XOffset; var maxx = bounds.HasValue ? Math.Min(map.XOffset + map.Width, bounds.Value.Right) : map.XOffset + map.Width; var shroudPalette = "fog"; for (var j = miny; j < maxy; j++) { var starti = minx; for (var i = minx; i < maxx; i++) { if (fogSprites[i, j] == shadowBits[0x0f]) continue; if (starti != i) { r.DrawSprite(fogSprites[starti, j], Game.CellSize * new float2(starti, j), shroudPalette, new float2(Game.CellSize * (i - starti), Game.CellSize)); starti = i+1; } r.DrawSprite(fogSprites[i, j], Game.CellSize * new float2(i, j), shroudPalette); starti = i+1; } if (starti < maxx) r.DrawSprite(fogSprites[starti, j], Game.CellSize * new float2(starti, j), shroudPalette, new float2(Game.CellSize * (maxx - starti), Game.CellSize)); } shroudPalette = "shroud"; for (var j = miny; j < maxy; j++) { var starti = minx; for (var i = minx; i < maxx; i++) { if (sprites[i, j] == shadowBits[0x0f]) continue; if (starti != i) { r.DrawSprite(sprites[starti, j], Game.CellSize * new float2(starti, j), shroudPalette, new float2(Game.CellSize * (i - starti), Game.CellSize)); starti = i + 1; } r.DrawSprite(sprites[i, j], Game.CellSize * new float2(i, j), shroudPalette); starti = i + 1; } if (starti < maxx) r.DrawSprite(sprites[starti, j], Game.CellSize * new float2(starti, j), shroudPalette, new float2(Game.CellSize * (maxx - starti), Game.CellSize)); } }
public Chrome(Renderer r, Manifest m) { this.renderer = r; rgbaRenderer = new SpriteRenderer(renderer, true, renderer.RgbaSpriteShader); lineRenderer = new LineRenderer(renderer); shpRenderer = new SpriteRenderer(renderer, true, renderer.WorldSpriteShader); optionsButton = new Animation("tabs"); optionsButton.PlayRepeating("left-normal"); tabSprites = Rules.Info.Values .Where(u => u.Traits.Contains<BuildableInfo>()) .ToDictionary( u => u.Name, u => SpriteSheetBuilder.LoadAllSprites(u.Traits.Get<BuildableInfo>().Icon ?? (u.Name + "icon"))[0]); spsprites = Rules.Info.Values.SelectMany( u => u.Traits.WithInterface<SupportPowerInfo>() ) .ToDictionary( u => u.Image, u => SpriteSheetBuilder.LoadAllSprites(u.Image)[0]); var groups = Rules.Categories(); tabImageNames = groups.Select( (g, i) => Pair.New(g, OpenRA.Graphics.Util.MakeArray(3, n => i.ToString()))) .ToDictionary(a => a.First, a => a.Second); cantBuild = new Animation("clock"); cantBuild.PlayFetchIndex("idle", () => 0); ready = new Animation("pips"); ready.PlayRepeating("ready"); clock = new Animation("clock"); var widgetYaml = m.ChromeLayout.Select(a => MiniYaml.FromFile(a)).Aggregate(MiniYaml.Merge); rootWidget = WidgetLoader.LoadWidget( widgetYaml.FirstOrDefault() ); rootWidget.Initialize(); }
public UiOverlay(SpriteRenderer spriteRenderer) { this.spriteRenderer = spriteRenderer; buildOk = SynthesizeTile(0x80); buildBlocked = SynthesizeTile(0xe6); unitDebug = SynthesizeTile(0x7c); }
public ResourceLayer(Actor self) { sr = new SpriteRenderer( Game.renderer, true ); }