git-svn-id: svn://svn.ijw.co.nz/svn/OpenRa@1244 993157c7-ee19-0410-b2c4-bb4e9862e678

This commit is contained in:
chrisf
2007-07-14 09:40:10 +00:00
parent 4f500bff26
commit 1bb569e277
5 changed files with 49 additions and 22 deletions

View File

@@ -12,7 +12,47 @@ namespace OpenRa.Game
Size size; Size size;
MethodInvoker drawFunction; MethodInvoker drawFunction;
public Region(Point location, Size size, MethodInvoker drawFunction) static Size MakeSize(Viewport v, DockStyle d, int size)
{
switch (d)
{
case DockStyle.Top:
case DockStyle.Bottom:
return new Size(v.Width, size);
case DockStyle.Left:
case DockStyle.Right:
return new Size(size, v.Height);
default:
throw new NotImplementedException();
}
}
public static Region Create(Viewport v, DockStyle d, int size, MethodInvoker f)
{
Point topLeft = new Point(0, 0);
Point bottomRight = new Point(v.ClientSize);
Size s = MakeSize(v, d, size);
switch (d)
{
case DockStyle.Top:
case DockStyle.Left:
return new Region(topLeft, s, f);
case DockStyle.Right:
case DockStyle.Bottom:
Point origin = bottomRight; origin.Offset( -s.Width, -s.Height );
return new Region(origin, s, f);
default:
throw new NotImplementedException();
}
}
Region(Point location, Size size, MethodInvoker drawFunction)
{ {
this.location = location; this.location = location;
this.size = size; this.size = size;

View File

@@ -25,7 +25,7 @@ namespace OpenRa.Game
public Sidebar(Race race, Renderer renderer, Viewport viewport) public Sidebar(Race race, Renderer renderer, Viewport viewport)
{ {
this.viewport = viewport; this.viewport = viewport;
viewport.RequestRegion(AnchorStyles.Right, 128, Paint); viewport.AddRegion( Region.Create(viewport, DockStyle.Right, 128, Paint));
techTree.CurrentRace = race; techTree.CurrentRace = race;
techTree.Build("FACT", true); techTree.Build("FACT", true);
spriteRenderer = new SpriteRenderer(renderer, false); spriteRenderer = new SpriteRenderer(renderer, false);

View File

@@ -24,7 +24,7 @@ namespace OpenRa.Game
{ {
this.renderer = renderer; this.renderer = renderer;
this.viewport = viewport; this.viewport = viewport;
viewport.RequestRegion(AnchorStyles.Left, viewport.ClientSize.Width - 128, Draw); viewport.AddRegion(Region.Create(viewport, DockStyle.Left, viewport.ClientSize.Width - 128, Draw));
this.map = map; this.map = map;
tileSet = new TileSet(tilePackage, map.TileSuffix); tileSet = new TileSet(tilePackage, map.TileSuffix);

View File

@@ -19,6 +19,9 @@ namespace OpenRa.Game
public float2 Location { get { return scrollPosition; } } public float2 Location { get { return scrollPosition; } }
public float2 Size { get { return new float2(ClientSize); } } public float2 Size { get { return new float2(ClientSize); } }
public int Width { get { return clientSize.Width; } }
public int Height { get { return clientSize.Height; } }
public void Scroll(float2 delta) public void Scroll(float2 delta)
{ {
scrollPosition = (scrollPosition + delta).Constrain( scrollPosition = (scrollPosition + delta).Constrain(
@@ -33,25 +36,9 @@ namespace OpenRa.Game
} }
List<Region> regions = new List<Region>(); List<Region> regions = new List<Region>();
public void RequestRegion(AnchorStyles anchor, int distanceFromAnchor, MethodInvoker drawFunction) public void AddRegion(Region r)
{ {
switch (anchor) regions.Add(r);
{
case AnchorStyles.Top:
regions.Add(new Region(new Point(0, 0), new Size(clientSize.Width, distanceFromAnchor), drawFunction));
break;
case AnchorStyles.Bottom:
regions.Add(new Region(new Point(0, clientSize.Height - distanceFromAnchor), new Size(clientSize.Width, distanceFromAnchor), drawFunction));
break;
case AnchorStyles.Left:
regions.Add(new Region(new Point(0, 0), new Size(distanceFromAnchor, clientSize.Height), drawFunction));
break;
case AnchorStyles.Right:
regions.Add(new Region(new Point(clientSize.Width - distanceFromAnchor, 0), new Size(distanceFromAnchor, clientSize.Height), drawFunction));
break;
case AnchorStyles.None:
throw new NotImplementedException();
}
} }
public void DrawRegions() public void DrawRegions()

View File

@@ -19,7 +19,7 @@ namespace OpenRa.Game
{ {
this.renderer = renderer; this.renderer = renderer;
this.viewport = viewport; this.viewport = viewport;
viewport.RequestRegion(AnchorStyles.Left, viewport.ClientSize.Width - 128, Draw); viewport.AddRegion(Region.Create(viewport, DockStyle.Left, viewport.ClientSize.Width - 128, Draw));
spriteRenderer = new SpriteRenderer(renderer, true); spriteRenderer = new SpriteRenderer(renderer, true);
} }