diff --git a/inf3.csproj b/inf3.csproj
index 3438185..0c083f0 100644
--- a/inf3.csproj
+++ b/inf3.csproj
@@ -9,28 +9,27 @@
Exe
inf3
inf3
- v4.0
- True
+ true
full
- False
+ false
bin\Debug
DEBUG;
prompt
4
x86
- False
+ false
/unsafe
none
- True
+ true
bin\Release
prompt
4
x86
- False
+ false
@@ -76,6 +75,8 @@
+
+
diff --git a/src/Backend.cs b/src/Backend.cs
index d871297..dcc8655 100644
--- a/src/Backend.cs
+++ b/src/Backend.cs
@@ -45,7 +45,7 @@ namespace WorldOfPeacecraft
return Dragons.Values;
}
- public IEnumerable GetPlayers ()
+ public IEnumerable GetPlayers ()
{
return Players.Values;
}
diff --git a/src/Gui/Gui.cs b/src/Gui/Gui.cs
index a9e5a93..a82d00e 100644
--- a/src/Gui/Gui.cs
+++ b/src/Gui/Gui.cs
@@ -9,10 +9,12 @@ namespace WorldOfPeacecraft
class Gui : Form, IGui
{
private const int ChatWidth = 300;
+ private const int OnlinePlayerWidth = 100;
private IBackend Backend;
private MapPanel MapPanel;
private ChatPanel ChatPanel;
+ private OnlinePlayerList OnlinePlayerList;
public Gui ()
{
@@ -40,11 +42,14 @@ namespace WorldOfPeacecraft
{
ChatPanel = new ChatPanel (Backend);
MapPanel = new MapPanel (Backend);
+ OnlinePlayerList = new OnlinePlayerList (Backend);
this.SuspendLayout();
- this.Size = new Size(400 + ChatWidth, 400);
- MapPanel.Location = new Point(0,0);
+ this.Size = new Size(OnlinePlayerWidth + 400 + ChatWidth, 400);
+ OnlinePlayerList.Location = new Point(0,0);
+ OnlinePlayerList.Size = new Size(OnlinePlayerWidth, 400);
+ MapPanel.Location = new Point(OnlinePlayerWidth,0);
MapPanel.Size = new Size(400, 400);
- ChatPanel.Location = new Point (400, 0);
+ ChatPanel.Location = new Point (OnlinePlayerWidth + 400, 0);
ChatPanel.Size = new Size (300, 400);
this.DoubleBuffered = true;
this.MaximizeBox = false;
@@ -52,6 +57,7 @@ namespace WorldOfPeacecraft
this.Text = "World of Peacecraft";
this.ShowIcon = false;
+ this.Controls.Add (OnlinePlayerList);
this.Controls.Add (MapPanel);
this.Controls.Add (ChatPanel);
@@ -70,8 +76,10 @@ namespace WorldOfPeacecraft
{
MapPanel.PerformLayout ();
this.SuspendLayout();
- this.SetClientSizeCore(MapPanel.Width + ChatWidth, MapPanel.Height);
- ChatPanel.Location = new Point (MapPanel.Width, 0);
+ this.SetClientSizeCore(OnlinePlayerWidth + MapPanel.Width + ChatWidth, MapPanel.Height);
+ OnlinePlayerList.Size = new Size(OnlinePlayerWidth, MapPanel.Height);
+ MapPanel.Location = new Point(OnlinePlayerWidth, 0);
+ ChatPanel.Location = new Point (OnlinePlayerWidth + MapPanel.Width, 0);
ChatPanel.Size = new Size (ChatWidth, MapPanel.Height);
this.ResumeLayout();
ChatPanel.UpdateData ();
diff --git a/src/Gui/IBackend.cs b/src/Gui/IBackend.cs
index 4270ce1..96d82d0 100644
--- a/src/Gui/IBackend.cs
+++ b/src/Gui/IBackend.cs
@@ -6,7 +6,7 @@ namespace WorldOfPeacecraft
{
ITile[,] GetMap();
- IEnumerable GetPlayers();
+ IEnumerable GetPlayers();
IEnumerable GetDragons();
diff --git a/src/Gui/IPlayer.cs b/src/Gui/IPlayer.cs
new file mode 100644
index 0000000..3b682b2
--- /dev/null
+++ b/src/Gui/IPlayer.cs
@@ -0,0 +1,7 @@
+namespace WorldOfPeacecraft
+{
+ public interface IPlayer : IEntity
+ {
+ string GetName();
+ }
+}
diff --git a/src/Gui/OnlinePlayerList.cs b/src/Gui/OnlinePlayerList.cs
new file mode 100644
index 0000000..a9bf661
--- /dev/null
+++ b/src/Gui/OnlinePlayerList.cs
@@ -0,0 +1,33 @@
+using System.Drawing;
+using System.Collections.Generic;
+using System.Windows.Forms;
+
+namespace WorldOfPeacecraft
+{
+ public class OnlinePlayerList : Panel
+ {
+ private IBackend Backend;
+
+ public OnlinePlayerList(IBackend backend)
+ {
+ this.Backend = backend;
+ SetStyle (ControlStyles.OptimizedDoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
+ Font = new Font(Font, FontStyle.Bold);
+ }
+
+ protected override void OnPaint (PaintEventArgs e)
+ {
+ base.OnPaint (e);
+ Graphics g = e.Graphics;
+ g.FillRectangle (new SolidBrush (Color.White), this.DisplayRectangle);
+ g.DrawRectangle (new Pen(new SolidBrush (Color.Black)), 0, 0, Width - 1, Height - 1);
+ IEnumerable players = Backend.GetPlayers ();
+ int count = 0;
+ Brush brush = new SolidBrush(Color.Black);
+ foreach (IPlayer player in players) {
+ g.DrawString(player.GetName(), Font, brush, 20, 10 + 20 * count);
+ count++;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/Player.cs b/src/Player.cs
index 811b8f4..49e65ab 100644
--- a/src/Player.cs
+++ b/src/Player.cs
@@ -1,6 +1,6 @@
namespace WorldOfPeacecraft
{
- public class Player : Entity
+ public class Player : Entity, IPlayer
{
private int Score;
@@ -19,6 +19,11 @@ namespace WorldOfPeacecraft
return Score;
}
+ public string GetName ()
+ {
+ return Desc;
+ }
+
public override string ToString()
{
return "Player: " + Id + " " + Coord.X + " " + Coord.Y + " " + Desc + " " + Busy + " " + Score;