tied into renderer

This commit is contained in:
Chris Forbes
2009-10-18 22:40:41 +13:00
parent 253e70f108
commit 4aea82712f
2 changed files with 30 additions and 17 deletions

View File

@@ -3,12 +3,14 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using OpenRa.Game.GameRules; using OpenRa.Game.GameRules;
using IjwFramework.Types;
using OpenRa.Game.Graphics;
namespace OpenRa.Game namespace OpenRa.Game
{ {
class Bullet class Bullet
{ {
readonly Player Owner; public readonly Player Owner;
readonly Actor FiredBy; readonly Actor FiredBy;
readonly WeaponInfo Weapon; readonly WeaponInfo Weapon;
readonly ProjectileInfo Projectile; readonly ProjectileInfo Projectile;
@@ -30,5 +32,6 @@ namespace OpenRa.Game
} }
public void Tick(Game game, int dt) { /* todo */ } public void Tick(Game game, int dt) { /* todo */ }
public IEnumerable<Pair<Sprite, float2>> Render() { yield break; }
} }
} }

View File

@@ -1,6 +1,8 @@
using System.Drawing; using System.Drawing;
using System.Linq; using System.Linq;
using System.Windows.Forms; using System.Windows.Forms;
using IjwFramework.Types;
using System.Collections.Generic;
namespace OpenRa.Game.Graphics namespace OpenRa.Game.Graphics
{ {
@@ -25,6 +27,25 @@ namespace OpenRa.Game.Graphics
spriteRenderer = new SpriteRenderer(renderer, true); spriteRenderer = new SpriteRenderer(renderer, true);
lineRenderer = new LineRenderer(renderer); lineRenderer = new LineRenderer(renderer);
uiOverlay = new UiOverlay(spriteRenderer, game); uiOverlay = new UiOverlay(spriteRenderer, game);
}
void DrawSpriteList(Player owner, RectangleF rect,
IEnumerable<Pair<Sprite, float2>> images)
{
foreach (var image in images)
{
var loc = image.Second;
if (loc.X > rect.Right || loc.X < rect.Left
- image.First.bounds.Width)
continue;
if (loc.Y > rect.Bottom || loc.Y < rect.Top
- image.First.bounds.Height)
continue;
spriteRenderer.DrawSprite(image.First, loc,
(owner != null) ? owner.Palette : 0);
}
} }
public void Draw() public void Draw()
@@ -33,21 +54,10 @@ namespace OpenRa.Game.Graphics
region.Size.ToSizeF()); region.Size.ToSizeF());
foreach (Actor a in game.world.Actors) foreach (Actor a in game.world.Actors)
{ DrawSpriteList(a.Owner, rect, a.Render());
var images = a.Render();
foreach (Bullet b in game.world.Bullets)
foreach( var image in images ) DrawSpriteList(b.Owner, rect, b.Render());
{
var loc = image.Second;
if( loc.X > rect.Right || loc.X < rect.Left - image.First.bounds.Width )
continue;
if( loc.Y > rect.Bottom || loc.Y < rect.Top - image.First.bounds.Height )
continue;
spriteRenderer.DrawSprite( image.First, loc, ( a.Owner != null ) ? a.Owner.Palette : 0 );
}
}
uiOverlay.Draw(); uiOverlay.Draw();