Entities werden nun auf die Map gezeichnet

This commit is contained in:
2014-05-01 02:22:00 +02:00
parent 4b8d4d002d
commit 85102482a5
3 changed files with 34 additions and 3 deletions

View File

@@ -28,14 +28,15 @@ namespace WorldOfPeacecraft
Rec = new Receiver (Client, receiverBuffer); Rec = new Receiver (Client, receiverBuffer);
Send = new Sender (Client, SenderBuffer); Send = new Sender (Client, SenderBuffer);
SenderBuffer.AddLine ("get:map"); SenderBuffer.AddLine ("get:map");
SenderBuffer.AddLine ("get:ents");
} }
public IEnumerable<IPositionable> getDragons () public IEnumerable<IPositionable> GetDragons ()
{ {
return Dragons.Values; return Dragons.Values;
} }
public IEnumerable<IPositionable> getPlayers () public IEnumerable<IPositionable> GetPlayers ()
{ {
return Players.Values; return Players.Values;
} }

View File

@@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Drawing; using System.Drawing;
using System.Windows.Forms; using System.Windows.Forms;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
@@ -54,6 +55,7 @@ namespace WorldOfPeacecraft
Graphics g = buffer.Graphics; Graphics g = buffer.Graphics;
lock (Backend) { lock (Backend) {
PaintMap (g); PaintMap (g);
PaintEntities (g);
} }
buffer.Render(); buffer.Render();
} }
@@ -95,11 +97,34 @@ namespace WorldOfPeacecraft
g.FillRectangle(new SolidBrush(color), posx, posy, tileSize, tileSize); g.FillRectangle(new SolidBrush(color), posx, posy, tileSize, tileSize);
} }
public void PaintEntities (Graphics g)
{
IEnumerable<IPositionable> dragons = Backend.GetDragons ();
IEnumerable<IPositionable> players = Backend.GetPlayers ();
foreach (IPositionable dragon in dragons) {
PaintEntity (g, dragon);
}
foreach (IPositionable player in players) {
PaintEntity (g, player);
}
}
public void PaintEntity (Graphics g, IPositionable entity)
{
int x = entity.GetX () * tileSize + tileSize / 2 - entitySize / 2;
int y = entity.GetY () * tileSize + tileSize / 2 - entitySize / 2;
g.FillRectangle (new SolidBrush (Color.Red), x, y, entitySize, entitySize);
g.DrawRectangle (new Pen( new SolidBrush (Color.Black)), x, y, entitySize, entitySize);
}
public void PerformRefresh () public void PerformRefresh ()
{ {
this.BeginInvoke(new MethodInvoker(delegate this.BeginInvoke(new MethodInvoker(delegate
{ {
ITile[,] map = Backend.GetMap(); ITile[,] map = Backend.GetMap();
if (map == null) {
return;
}
int mapWidth = (map.GetLength(0)) * tileSize; int mapWidth = (map.GetLength(0)) * tileSize;
int mapHeight = (map.GetLength(1)) * tileSize; int mapHeight = (map.GetLength(1)) * tileSize;
this.SuspendLayout(); this.SuspendLayout();

View File

@@ -1,3 +1,4 @@
using System.Collections.Generic;
namespace WorldOfPeacecraft namespace WorldOfPeacecraft
{ {
@@ -5,6 +6,10 @@ namespace WorldOfPeacecraft
{ {
ITile[,] GetMap(); ITile[,] GetMap();
IEnumerable<IPositionable> GetPlayers();
IEnumerable<IPositionable> GetDragons();
void Stop(); void Stop();
} }
} }