From ba4eb0d2d98188b54f58b0f8ea0f7fb9e1e7e699 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20V=C3=B6gele?= Date: Wed, 30 Apr 2014 17:28:58 +0200 Subject: [PATCH] Erste Gui Version. Es wird lediglich die Map gezeichnet. Das Backend ist angeschlossen --- DummyBackend.cs | 11 -- ParserTest.cs | 257 --------------------------------------- inf3.csproj | 15 ++- src/Backend.cs | 29 +++-- src/Buffer.cs | 73 +++++++---- src/BufferManuel.cs | 56 --------- src/Buffer_Wafa.cs | 44 ------- src/Entity.cs | 8 +- src/Gui/Gui.cs | 107 ++++++++++++++++ src/Gui/IBackend.cs | 8 ++ src/Gui/IGui.cs | 8 ++ src/Gui/IPositionable.cs | 26 ++++ src/Gui/ITile.cs | 17 +++ src/Gui/Program.cs | 20 +++ src/Map.cs | 4 +- src/Parser.cs | 62 ++++------ src/Receiver.cs | 6 +- src/Sender.cs | 20 ++- src/Tile.cs | 105 +++++++--------- 19 files changed, 363 insertions(+), 513 deletions(-) delete mode 100644 DummyBackend.cs delete mode 100644 ParserTest.cs delete mode 100644 src/BufferManuel.cs delete mode 100644 src/Buffer_Wafa.cs create mode 100644 src/Gui/Gui.cs create mode 100644 src/Gui/IBackend.cs create mode 100644 src/Gui/IGui.cs create mode 100644 src/Gui/IPositionable.cs create mode 100644 src/Gui/ITile.cs create mode 100644 src/Gui/Program.cs diff --git a/DummyBackend.cs b/DummyBackend.cs deleted file mode 100644 index f4dfa1c..0000000 --- a/DummyBackend.cs +++ /dev/null @@ -1,11 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; - -namespace inf3 -{ - class DummyBackend - { - } -} diff --git a/ParserTest.cs b/ParserTest.cs deleted file mode 100644 index 08c08ad..0000000 --- a/ParserTest.cs +++ /dev/null @@ -1,257 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using Frontend; -using WorldOfPeacecraft; -using System.Threading; - -namespace inf3 -{ - public class ParserTest - { - static void Main() - { - Parser p = new Parser(); - - p.AddToBuffer("begin:5"); - //Console.WriteLine(p.getBuffer().Dequeue()); - p.AddToBuffer("begin:upd"); - p.AddToBuffer("begin:player"); - p.AddToBuffer("id:3"); - p.AddToBuffer("typ:Player"); - p.AddToBuffer("busy:false"); - p.AddToBuffer("desc:Player3"); - p.AddToBuffer("x:3"); - p.AddToBuffer("y:15"); - p.AddToBuffer("points:0"); - p.AddToBuffer("end:player"); - p.AddToBuffer("end:upd"); - p.AddToBuffer("end:5"); - - /* - p.AddToBuffer("begin:24"); - p.AddToBuffer("begin:players"); - p.AddToBuffer("begin:player"); - p.AddToBuffer("id:3"); - p.AddToBuffer("typ:Player"); - p.AddToBuffer("busy:false"); - p.AddToBuffer("desc:Player3"); - p.AddToBuffer("x:3"); - p.AddToBuffer("y:15"); - p.AddToBuffer("pnts:0"); - p.AddToBuffer("end:player"); - p.AddToBuffer("begin:player"); - p.AddToBuffer("id:6"); - p.AddToBuffer("typ:Player"); - p.AddToBuffer("busy:false"); - p.AddToBuffer("desc:Player6"); - p.AddToBuffer("x:17"); - p.AddToBuffer("y:13"); - p.AddToBuffer("pnts:0"); - p.AddToBuffer("end:player"); - p.AddToBuffer("end:players"); - p.AddToBuffer("end:24"); - */ - - -/*begin:14 -begin:map -width:5 -height:5 -begin:cells -begin:cell -row:0 -col:0 -begin:props -WALL -end:props -end:cell -begin:cell -row:0 -col:1 -begin:props -WALL -end:props -end:cell -begin:cell -row:0 -col:2 -begin:props -WALL -end:props -end:cell -begin:cell -row:0 -col:3 -begin:props -WALL -end:props -end:cell -begin:cell -row:0 -col:4 -begin:props -WALL -end:props -end:cell -begin:cell -row:1 -col:0 -begin:props -WALL -end:props -end:cell -begin:cell -row:1 -col:1 -begin:props -WALKABLE -end:props -end:cell -begin:cell -row:1 -col:2 -begin:props -FOREST -WALKABLE -end:props -end:cell -begin:cell -row:1 -col:3 -begin:props -FOREST -WALKABLE -end:props -end:cell -begin:cell -row:1 -col:4 -begin:props -FOREST -WALKABLE -end:props -end:cell -begin:cell -row:2 -col:0 -begin:props -WALL -end:props -end:cell -begin:cell -row:2 -col:1 -begin:props -WALKABLE -end:props -end:cell -begin:cell -row:2 -col:2 -begin:props -FOREST -WALKABLE -end:props -end:cell -begin:cell -row:2 -col:3 -begin:props -FOREST -WALKABLE -end:props -end:cell -begin:cell -row:2 -col:4 -begin:props -FOREST -WALKABLE -end:props -end:cell -begin:cell -row:3 -col:0 -begin:props -WALL -end:props -end:cell -begin:cell -row:3 -col:1 -begin:props -WALKABLE -end:props -end:cell -begin:cell -row:3 -col:2 -begin:props -FOREST -WALKABLE -end:props -end:cell -begin:cell -row:3 -col:3 -begin:props -WALL -end:props -end:cell -begin:cell -row:3 -col:4 -begin:props -WALL -end:props -end:cell -begin:cell -row:4 -col:0 -begin:props -WALL -end:props -end:cell -begin:cell -row:4 -col:1 -begin:props -WALKABLE -end:props -end:cell -begin:cell -row:4 -col:2 -begin:props -FOREST -WALKABLE -end:props -end:cell -begin:cell -row:4 -col:3 -begin:props -FOREST -WALKABLE -end:props -end:cell -begin:cell -row:4 -col:4 -begin:props -FOREST -WALKABLE -end:props -end:cell -*/ - - Thread.Sleep(1000); - - Console.WriteLine(p.getDummyPlayer().ToString()); - Console.ReadLine(); - - } - } -} diff --git a/inf3.csproj b/inf3.csproj index 6f41c4a..9f8ef15 100644 --- a/inf3.csproj +++ b/inf3.csproj @@ -39,9 +39,6 @@ - - - @@ -69,10 +66,18 @@ - - + + + + + + + + + + \ No newline at end of file diff --git a/src/Backend.cs b/src/Backend.cs index a098793..aa443e9 100644 --- a/src/Backend.cs +++ b/src/Backend.cs @@ -2,25 +2,32 @@ using System.Net.Sockets; using System.Collections.Generic; using WorldOfPeacecraft; -namespace Frontend +namespace WorldOfPeacecraft { public class Backend : IBackend { + private Sender Send; private Receiver Rec; private Parser Parse; private TcpClient Client; private Dictionary Dragons; private Dictionary Players; private Map Map; - private Buffer Buffer; + private Buffer SenderBuffer; + private IGui Gui; - public Backend () + public Backend (IGui gui) { - Parse = new Parser (Buffer); - Client = new TcpClient ("localhost", 9999); - Rec = new Receiver (Client, Buffer); + Gui = gui; Dragons = new Dictionary (); Players = new Dictionary (); + Client = new TcpClient ("localhost", 9999); + Buffer receiverBuffer = new Buffer(10000); + SenderBuffer = new Buffer(100); + Parse = new Parser (this, receiverBuffer); + Rec = new Receiver (Client, receiverBuffer); + Send = new Sender (Client, SenderBuffer); + SenderBuffer.AddLine("get:map"); } public IEnumerable getDragons () @@ -83,8 +90,11 @@ namespace Frontend this.Map = map; } - public ITile[,] getMap () + public ITile[,] GetMap () { + if (Map == null) { + return null; + } return Map.GetTiles (); } @@ -95,5 +105,10 @@ namespace Frontend public void sendChat (string message) { } + + public void RefreshGui() + { + Gui.PerformRefresh(); + } } } diff --git a/src/Buffer.cs b/src/Buffer.cs index a10d9a7..6bf6612 100644 --- a/src/Buffer.cs +++ b/src/Buffer.cs @@ -1,35 +1,56 @@ -using System; using System.Collections.Generic; -using System.Linq; -using System.Text; using System.Threading; namespace WorldOfPeacecraft { - public class Buffer - { - private Queue RawBuffer = new Queue(); - private AutoResetEvent BufferFilledEvent = new AutoResetEvent (false); - int size; + public class Buffer + { + private Queue Lines = new Queue(); + private int MaxSize; + private AutoResetEvent QueueFullLock = new AutoResetEvent(false); + private AutoResetEvent QueueEmptyLock = new AutoResetEvent(false); - public Buffer(int size) - { - this.size=size; - } - - - public void AddToBuffer (string s) + public Buffer (int maxSize) { - if (RawBuffer.Count >= size){ + this.MaxSize = maxSize; + } - } - else{ - lock (RawBuffer) { - RawBuffer.Enqueue (s); - BufferFilledEvent.Set (); - } - } - - } - } + public void AddLine (string line) + { + bool waitRequired = false; + lock (Lines) { + if (Lines.Count >= MaxSize) { + waitRequired = true; + QueueFullLock.Reset (); + } + } + if (waitRequired) { + QueueFullLock.WaitOne (); + } + lock (Lines) { + Lines.Enqueue (line); + QueueEmptyLock.Set(); + } + } + + public string NextLine () + { + bool waitRequired = false; + string line; + lock (Lines) { + if (Lines.Count == 0) { + waitRequired = true; + QueueEmptyLock.Reset (); + } + } + if (waitRequired) { + QueueEmptyLock.WaitOne (); + } + lock (Lines) { + line = Lines.Dequeue(); + QueueFullLock.Set (); + } + return line; + } + } } diff --git a/src/BufferManuel.cs b/src/BufferManuel.cs deleted file mode 100644 index 45d33f3..0000000 --- a/src/BufferManuel.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System.Collections.Generic; -using System.Threading; - -namespace WorldOfPeacecraft -{ - class BufferManuel - { - private Queue Lines = new Queue(); - private int MaxSize; - private AutoResetEvent QueueFullLock = new AutoResetEvent(false); - private AutoResetEvent QueueEmptyLock = new AutoResetEvent(false); - - public BufferManuel (int maxSize) - { - this.MaxSize = maxSize; - } - - public void AddLine (string line) - { - bool waitRequired = false; - lock (Lines) { - if (Lines.Count >= MaxSize) { - waitRequired = true; - QueueFullLock.Reset (); - } - } - if (waitRequired) { - QueueFullLock.WaitOne (); - } - lock (Lines) { - Lines.Enqueue (line); - QueueEmptyLock.Set(); - } - } - - public string NextLine () - { - bool waitRequired = false; - string line; - lock (Lines) { - if (Lines.Count == 0) { - waitRequired = true; - QueueEmptyLock.Reset (); - } - } - if (waitRequired) { - QueueEmptyLock.WaitOne (); - } - lock (Lines) { - line = Lines.Dequeue(); - QueueFullLock.Set (); - } - return line; - } - } -} diff --git a/src/Buffer_Wafa.cs b/src/Buffer_Wafa.cs deleted file mode 100644 index 3ee9b43..0000000 --- a/src/Buffer_Wafa.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using System.Collections.Generic; - -namespace WorldOfPeacecraft -{ - public class Buffer_Wafa - { - private Queue DotA2 = new Queue (); - private int sizelimit; - - public Buffer_Wafa (int limit) - { - sizelimit = limit; - } - - bool isEmpty(){ - if (DotA2.Count == 0) - return true; - else - return false; - } - - bool isFull(){ - if (DotA2.Count >= sizelimit) - return true; - else - return false; - } - - string popMessage(){ - //TODO - } - - void enqueueMessage (string servermessage){ - bool varIsFull = isFull(); - if (varIsFull == false) { - DotA2.Enqueue (servermessage); - } else { - //this is else - } - } - } -} - diff --git a/src/Entity.cs b/src/Entity.cs index d81589e..a3a6187 100644 --- a/src/Entity.cs +++ b/src/Entity.cs @@ -32,22 +32,22 @@ namespace WorldOfPeacecraft return Id; } - public void SetPosX (int x) + public void SetX (int x) { this.Coord.X = x; } - public int getXPosition () + public int GetX () { return Coord.X; } - public void SetPosY (int y) + public void SetY (int y) { this.Coord.Y = y; } - public int getYPosition () + public int GetY () { return Coord.Y; } diff --git a/src/Gui/Gui.cs b/src/Gui/Gui.cs new file mode 100644 index 0000000..670b643 --- /dev/null +++ b/src/Gui/Gui.cs @@ -0,0 +1,107 @@ +using System; +using System.Drawing; +using System.Windows.Forms; +using System.Runtime.InteropServices; + +namespace WorldOfPeacecraft +{ + class Gui : Form, IGui + { + private const int tileSize = 16; + private const int entitySize = 10; + private IBackend Backend; + + private Panel Board = new Panel(); + + public Gui () + { + AllocConsole(); + InitializeComponents(); + } + + public void SetBackend (IBackend backend) + { + Backend = backend; + } + + public void InitializeComponents () + { + this.SuspendLayout(); + this.Size = new Size(400, 400); + Board.Location = new Point(0,0); + Board.Size = new Size(400, 400); + Board.Paint += DoPaint; + this.DoubleBuffered = true; + this.MaximizeBox = false; + this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle; + this.Name = "WorldOfPeacecraft"; + this.ShowIcon = false; + + this.Controls.Add(Board); + this.ResumeLayout(); + this.PerformLayout(); + } + + public void DoPaint (object source, PaintEventArgs args) + { + BufferedGraphics buffer = BufferedGraphicsManager.Current.Allocate (Board.CreateGraphics (), Board.DisplayRectangle); + Graphics g = buffer.Graphics; + PaintMap(g); + buffer.Render(); + } + + public void PaintMap (Graphics g) + { + ITile[,] Map = Backend.GetMap (); + if (Map != null) { + for (int y = 0; y < Map.GetLength(1); y++) { + for (int x = 0; x < Map.GetLength(0); x++) { + PaintTile (g, Map [x, y], x, y); + } + } + } + else { + g.FillRectangle(new SolidBrush(Color.White), Board.DisplayRectangle); + } + } + + public void PaintTile (Graphics g, ITile tile, int x, int y) + { + int posx = x * tileSize; + int posy = y * tileSize; + Color color; + if (tile.IsForest ()) { + color = Color.Green; + } // Stupid parenthesis + else if (tile.IsHuntable ()) { + color = Color.BurlyWood; + } else if (tile.IsWalkable ()) { + color = Color.Yellow; + } else if (tile.IsWall ()) { + color = Color.DarkGray; + } else if (tile.IsWater ()) { + color = Color.Blue; + } else { + color = Color.Black; + } + g.FillRectangle(new SolidBrush(color), posx, posy, tileSize, tileSize); + } + + public void PerformRefresh () + { + ITile[,] map = Backend.GetMap(); + int mapWidth = (map.GetLength(0)) * tileSize; + int mapHeight = (map.GetLength(1)) * tileSize; + this.SuspendLayout(); + this.ClientSize = new Size(mapWidth, mapHeight); + Board.Size = new Size(mapWidth, mapHeight); + this.ResumeLayout(); + this.PerformLayout(); + this.Refresh(); + } + + [DllImport("kernel32.dll", SetLastError = true)] + [return: MarshalAs(UnmanagedType.Bool)] + static extern bool AllocConsole(); + } +} diff --git a/src/Gui/IBackend.cs b/src/Gui/IBackend.cs new file mode 100644 index 0000000..1ec4fc5 --- /dev/null +++ b/src/Gui/IBackend.cs @@ -0,0 +1,8 @@ + +namespace WorldOfPeacecraft +{ + public interface IBackend + { + ITile[,] GetMap(); + } +} diff --git a/src/Gui/IGui.cs b/src/Gui/IGui.cs new file mode 100644 index 0000000..4a0a446 --- /dev/null +++ b/src/Gui/IGui.cs @@ -0,0 +1,8 @@ +namespace WorldOfPeacecraft +{ + public interface IGui + { + void PerformRefresh(); + void SetBackend(IBackend backend); + } +} diff --git a/src/Gui/IPositionable.cs b/src/Gui/IPositionable.cs new file mode 100644 index 0000000..4f586a4 --- /dev/null +++ b/src/Gui/IPositionable.cs @@ -0,0 +1,26 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WorldOfPeacecraft +{ + /// + /// Interface your positionable objects should implement. Such as the dragons and players. + /// This enables the frontend to determine the current position of said objects to render them at the correct space. + /// + public interface IPositionable + { + /// + /// Getter for the x-position + /// + /// the x-position + int GetX(); + /// + /// Getter for the y-position + /// + /// the y-position + int GetY(); + } +} diff --git a/src/Gui/ITile.cs b/src/Gui/ITile.cs new file mode 100644 index 0000000..cd61a15 --- /dev/null +++ b/src/Gui/ITile.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace WorldOfPeacecraft +{ + public interface ITile : IPositionable + { + bool IsWalkable(); + bool IsWall(); + bool IsForest(); + bool IsHuntable(); + bool IsWater(); + } +} diff --git a/src/Gui/Program.cs b/src/Gui/Program.cs new file mode 100644 index 0000000..014673c --- /dev/null +++ b/src/Gui/Program.cs @@ -0,0 +1,20 @@ +using System; +using System.Windows.Forms; + +namespace WorldOfPeacecraft +{ + public class Program + { + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + + Gui gui = new Gui(); + Backend backend = new Backend(gui); + gui.SetBackend(backend); + Application.Run (gui); + } + } +} + diff --git a/src/Map.cs b/src/Map.cs index 65f368e..f61bf76 100644 --- a/src/Map.cs +++ b/src/Map.cs @@ -13,8 +13,8 @@ namespace WorldOfPeacecraft public void SetTile (Tile t) { - int x = t.getX (); - int y = t.getY (); + int x = t.GetX (); + int y = t.GetY (); map [x, y] = t; } diff --git a/src/Parser.cs b/src/Parser.cs index b470f3f..5524a24 100644 --- a/src/Parser.cs +++ b/src/Parser.cs @@ -49,47 +49,31 @@ namespace WorldOfPeacecraft public const string MessPlayers = "players"; public const string MessDragon = "dragon"; public const string MessMapcell = "cell"; - private Buffer MonsterBuffer; + private Buffer InputBuffer; private Thread ParserThread; private LinkedList Message; private Regex LastLineRegex; - private Backend backend; + private Backend Backend; - public Parser (Buffer b) + public Parser (Backend backend, Buffer buffer) { - MonsterBuffer = b; - ParserThread = new Thread (new ThreadStart (this.RunParser)); - ParserThread.Start(); + InputBuffer = buffer; + Backend = backend; Message = new LinkedList (); LastLineRegex = new Regex ("^end:[0-9]+$"); + ParserThread = new Thread (new ThreadStart (this.RunParser)); + ParserThread.Start(); } private void RunParser () - {/* + { while (true) { - bool waitRequired = false; - lock (MonsterBuffer) { - if (MonsterBuffer.Count == 0) { - waitRequired = true; - BufferFilledEvent.Reset (); - } - } - if (waitRequired) { - BufferFilledEvent.WaitOne (); - } - lock (Buffer) { - Message.AddLast (Buffer.Dequeue ()); - } + Message.AddLast (InputBuffer.NextLine ()); if (IsCompletePackage ()) { Parse (); } - }*/ + } } - - public Player getDummyPlayer() - { - return DummyPlayer; - } private void Parse () { @@ -188,11 +172,11 @@ namespace WorldOfPeacecraft switch (block.GetName ()) { case MessPlayer: Player player = MapPlayer (block); - backend.removePlayer (player); + Backend.removePlayer (player); break; case MessDragon: Dragon dragon = MapDragon (block); - backend.removeDragon (dragon); + Backend.removeDragon (dragon); break; default: ThrowUnknownBlockException(deleteBlock, block); @@ -215,7 +199,8 @@ namespace WorldOfPeacecraft foreach (Block cell in cellsBlock.GetBlocks()) { map.SetTile(MapMapcell(cell)); } - backend.SetMap(map); + Backend.SetMap(map); + Backend.RefreshGui(); } private void ProcessMessage (Block mesBlock) @@ -286,7 +271,6 @@ namespace WorldOfPeacecraft break; default: throw new ParsingException("Invalid type"); // TODO Better message - break; } bool accepted = challengeBlock.GetBoolValue("accepted"); Challenge c = new Challenge(id, type, accepted); @@ -295,12 +279,12 @@ namespace WorldOfPeacecraft private void ProcessPlayer (Block playerBlock) { - backend.SetPlayer(MapPlayer(playerBlock)); + Backend.SetPlayer(MapPlayer(playerBlock)); } private void ProcessMapcell (Block mapcellBlock) { - backend.getMapObject().SetTile(MapMapcell(mapcellBlock)); + Backend.getMapObject().SetTile(MapMapcell(mapcellBlock)); } private void ProcessYourid (Block yourIdBlock) @@ -329,15 +313,15 @@ namespace WorldOfPeacecraft private void ProcessEntities (Block entitiesBlock) { - backend.clearDragons (); - backend.clearPlayers (); + Backend.clearDragons (); + Backend.clearPlayers (); foreach (Block entityBlock in entitiesBlock.GetBlocks ()) { switch (entityBlock.GetName()) { case MessPlayer: - backend.SetPlayer(MapPlayer(entityBlock)); + Backend.SetPlayer(MapPlayer(entityBlock)); break; case MessDragon: - backend.SetDragon(MapDragon(entityBlock)); + Backend.SetDragon(MapDragon(entityBlock)); break; default: ThrowUnknownBlockException(entitiesBlock, entityBlock); @@ -348,15 +332,15 @@ namespace WorldOfPeacecraft private void ProcessPlayers (Block playersBlock) { - backend.clearPlayers (); + Backend.clearPlayers (); foreach (Block playerBlock in playersBlock.GetBlocks ()) { - backend.SetPlayer(MapPlayer(playerBlock)); + Backend.SetPlayer(MapPlayer(playerBlock)); } } private void ProcessDragon (Block dragonBlock) { - backend.SetDragon(MapDragon(dragonBlock)); + Backend.SetDragon(MapDragon(dragonBlock)); } private Dragon MapDragon (Block dragonBlock) diff --git a/src/Receiver.cs b/src/Receiver.cs index f2428ff..a66e957 100644 --- a/src/Receiver.cs +++ b/src/Receiver.cs @@ -9,13 +9,13 @@ namespace WorldOfPeacecraft { private TcpClient Client; private StreamReader Reader; - private Buffer KillerBuffer; + private Buffer ReceiverBuffer; private Thread ReceiverThread; public Receiver (TcpClient client, Buffer buffer) { this.Client = client; - this.KillerBuffer = buffer; + this.ReceiverBuffer = buffer; ReceiverThread = new Thread(new ThreadStart(this.doReceive)); ReceiverThread.Start(); } @@ -29,7 +29,7 @@ namespace WorldOfPeacecraft { this.Reader = new StreamReader (Client.GetStream ()); while (true) { - KillerBuffer.AddToBuffer(Receive()); + ReceiverBuffer.AddLine(Receive()); } } diff --git a/src/Sender.cs b/src/Sender.cs index b61dd1e..93b1ce0 100644 --- a/src/Sender.cs +++ b/src/Sender.cs @@ -2,16 +2,22 @@ using System; using System.IO; using System.Net.Sockets; using System.Text; +using System.Threading; namespace WorldOfPeacecraft { public class Sender { private TcpClient Client; + private Buffer Buffer; + private Thread SenderThread; - public Sender (TcpClient client) + public Sender (TcpClient client, Buffer buffer) { this.Client = client; + this.Buffer = buffer; + this.SenderThread = new Thread(new ThreadStart(this.threadStart)); + SenderThread.Start(); } public void Send (String message) @@ -20,5 +26,17 @@ namespace WorldOfPeacecraft writer.WriteLine (message); writer.Flush (); } + + private void threadStart () + { + while (true) { + Send (Buffer.NextLine()); + } + } + + public void stop() + { + SenderThread.Abort(); + } } } \ No newline at end of file diff --git a/src/Tile.cs b/src/Tile.cs index bfe40db..fcc5697 100644 --- a/src/Tile.cs +++ b/src/Tile.cs @@ -5,115 +5,104 @@ namespace WorldOfPeacecraft { public class Tile : ITile { - public int x; - public int y; - public Entity entity; - public bool walkable; - public bool wall; - public bool forest; - public bool huntable; - public bool water; + public int X; + public int Y; + public Entity Entity; + public bool Walkable; + public bool Wall; + public bool Forest; + public bool Huntable; + public bool Water; public Tile (int posX, int posY, bool walkable, bool wall, bool forest, bool huntable, bool water) { - this.setX (posX); - this.setY (posY); - this.setWalkable (walkable); - this.setWall(wall); - this.setForest (forest); - this.setHuntable (huntable); - this.setWater (water); + this.SetX (posX); + this.SetY (posY); + this.SetWalkable (walkable); + this.SetWall(wall); + this.SetForest (forest); + this.SetHuntable (huntable); + this.SetWater (water); } - public void setX (int x) + public void SetX (int x) { - this.x = x; + this.X = x; } - public int getX () + public int GetX () { - return x; + return X; } - public int getXPosition () + public void SetY (int y) { - return x; + this.Y = y; } - public void setY (int y) + public int GetY () { - this.y = y; + return Y; } - public int getY () + public void SetEntity (Entity entity) { - return y; + this.Entity = entity; } - public int getYPosition () + public Entity GetEntity () { - return y; + return Entity; } - public void setEntity (Entity entity) + public void SetWalkable (bool walkable) { - this.entity = entity; + this.Walkable = walkable; } - public Entity getEntity () + public bool IsWalkable () { - return entity; + return Walkable; } - public void setWalkable (bool walkable) - { - this.walkable = walkable; - } - - public bool isWalkable () - { - return walkable; - } - - public void setWall(bool wall) + public void SetWall(bool wall) { - this.wall = wall; + this.Wall = wall; } - public bool isWall() + public bool IsWall() { - return wall; + return Wall; } - - public void setForest (bool forest) + public void SetForest (bool forest) { - this.forest = forest; + this.Forest = forest; } - public bool isForest () + public bool IsForest () { - return forest; + return Forest; } - public void setHuntable (bool huntable) + public void SetHuntable (bool huntable) { - this.huntable = huntable; + this.Huntable = huntable; } - public bool isHuntable () + public bool IsHuntable () { - return huntable; + return Huntable; } - public void setWater (bool water) + public void SetWater (bool water) { - this.water = water; + this.Water = water; } - public bool isWater () + public bool IsWater () { - return water; + return Water; } } } \ No newline at end of file