private bool BuildStartRoad(IPlayer player, bool buildWithDevCard) { int mouseCoorX = 0; int mouseCoorY = 0; if (this.newMouseState.LeftButton == ButtonState.Pressed && this.oldMouseState.LeftButton == ButtonState.Released && Mouse.GetState().X > 0 && Mouse.GetState().Y > 0) { mouseCoorX = Mouse.GetState().X; mouseCoorY = Mouse.GetState().Y; } LineObject roadOrBoat = GameClass.Game.RoadsAndBoats.FirstOrDefault(r => r.Rectangle.Contains(mouseCoorX, mouseCoorY)); if (roadOrBoat != null) { try { var startTempX = roadOrBoat.StartPointX; var startTempY = roadOrBoat.StartPointY; var endTempX = roadOrBoat.EndPointX; var endTempY = roadOrBoat.EndPointY; var tempX = roadOrBoat.ScreenX; var tempY = roadOrBoat.ScreenY; var imageString = DataGenerator.GenerateRoadImageType(roadOrBoat.StartPointX, roadOrBoat.StartPointY, roadOrBoat.EndPointX, roadOrBoat.EndPointY) + player.Id; Road newRoad = new Road(startTempX, startTempY, endTempX, endTempY, 0, Content, imageString, tempX, tempY, 20, 30); newRoad.Build(player, buildWithDevCard); LineObject oldRoad = GameClass.GetRoadByBothEnds(startTempX, startTempY, endTempX, endTempY); GameClass.Game.RoadsAndBoats.Remove(oldRoad); GameClass.Game.RoadsAndBoats.Add(newRoad); player.LineObjects.Add(newRoad); return(true); } catch (Exceptions.IllegalBuildPositionException ib) { this.errorMessage = ib.Message; } catch (Exception e) { this.errorMessage = e.Message; } } return(true); }