예제 #1
0
        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();
        }
예제 #2
0
        public SmudgeRenderer( Renderer renderer, Map map )
        {
            this.spriteRenderer = new SpriteRenderer( renderer, true );
            this.map = map;

            smudgeSprites = smudgeSpriteNames.SelectMany(f => SpriteSheetBuilder.LoadAllSprites(f)).ToArray();
        }
예제 #3
0
        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;
        }
예제 #4
0
        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));
            }
        }
예제 #5
0
파일: Chrome.cs 프로젝트: comradpara/OpenRA
		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();
		}
예제 #6
0
        public UiOverlay(SpriteRenderer spriteRenderer)
        {
            this.spriteRenderer = spriteRenderer;

            buildOk = SynthesizeTile(0x80);
            buildBlocked = SynthesizeTile(0xe6);
            unitDebug = SynthesizeTile(0x7c);
        }
예제 #7
0
 public ResourceLayer(Actor self)
 {
     sr = new SpriteRenderer( Game.renderer, true );
 }