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;