This commit is contained in:
Michele 2020-11-02 17:40:04 +00:00
parent c2be21dacb
commit aab7f8a6fa
5 changed files with 62 additions and 5 deletions

View file

@ -10,7 +10,7 @@
"request": "launch",
"preLaunchTask": "build",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/bin/Debug/net5.0/MyGame.dll",
"program": "${workspaceFolder}/bin/Debug/net5.0/sledgemapper.dll",
"args": [],
"cwd": "${workspaceFolder}",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console

View file

@ -7,7 +7,7 @@
"type": "process",
"args": [
"build",
"${workspaceFolder}/MyGame.csproj",
"${workspaceFolder}/Sledgemapper.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
@ -19,7 +19,7 @@
"type": "process",
"args": [
"publish",
"${workspaceFolder}/MyGame.csproj",
"${workspaceFolder}/Sledgemapper.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
@ -32,7 +32,7 @@
"args": [
"watch",
"run",
"${workspaceFolder}/MyGame.csproj",
"${workspaceFolder}/Sledgemapper.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],

View file

@ -30,6 +30,7 @@ namespace MyGame
private readonly Desktop _desktop;
private int _currentTileId = 1;
private int _currentWallId = 1;
private int _currentOverlayId = 1;
private InsertMode _insertMode;
private string _session;
private KeyboardState oldState;
@ -343,7 +344,7 @@ namespace MyGame
var overlayButton = new ImageButton { Image = new TextureRegion(item.Value), GridColumn = indexY, GridRow = indexX, Id = item.Key, Width = 40, Height = 40 };
overlayButton.Click += (s, e) =>
{
_currentWallId = int.Parse(((ImageButton)s).Id.Replace("overlay", ""));
_currentOverlayId = int.Parse(((ImageButton)s).Id.Replace("overlay", ""));
ClearSelection(wallGrid);
ClearSelection(tileGrid);
ClearSelection(overlayGrid);
@ -415,6 +416,9 @@ namespace MyGame
SetWall(_currentWallId);
break;
case InsertMode.Overlay:
SetOverlay(_currentOverlayId);
break;
}
@ -579,6 +583,34 @@ namespace MyGame
}
foreach (var tile in _overlays)
{
var content = Content.Load<Texture2D>($"overlays/overlay{tile.ID.ToString().PadLeft(2, '0')}");
if (tile.Intersection)
{
var posX = tile.X * _tileSize ;
var posY = tile.Y * _tileSize ;
_spriteBatch.Draw(content, new Vector2(posX, posY),
null, Color.White, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_tileSize - 10) / content.Width, SpriteEffects.None, 0);
}
else
{
var posX = tile.X * _tileSize + _tileSize / 2f;
var posY = tile.Y * _tileSize + _tileSize / 2f;
_spriteBatch.Draw(content, new Vector2(posX, posY),
null, Color.White, MathHelper.ToRadians(90 * tile.Rotation), new Vector2(content.Width / 2, content.Height / 2), ((float)_tileSize - 10) / content.Width, SpriteEffects.None, 0);
}
}
_spriteBatch.DrawRectangle(new Rectangle(_selectedTile.X * _tileSize, _selectedTile.Y * _tileSize, _tileSize, _tileSize), Color.Blue, 3);
@ -702,6 +734,31 @@ namespace MyGame
}
}
private void SetOverlay(int tileId)
{
var overlayExist = _overlays.Any(m => m.X == _selectedOverlay.X && m.Y == _selectedOverlay.Y && m.Intersection == _selectedOverlay.Intersection);
if (overlayExist)
{
var overlay = _overlays.First(m => m.X == _selectedOverlay.X && m.Y == _selectedOverlay.Y && m.Intersection == _selectedOverlay.Intersection);
var index = _overlays.IndexOf(overlay);
_overlays.RemoveAt(index);
if (overlay.ID == tileId)
{
var newOverlay = new Overlay { X = _selectedOverlay.X, Y = _selectedOverlay.Y, ID = tileId, Intersection = _selectedOverlay.Intersection, Rotation = (_selectedOverlay.Rotation + 1) % 4 };
_overlays.Add(newOverlay);
}
else
{
_overlays.Add(new Overlay { X = _selectedOverlay.X, Y = _selectedOverlay.Y, ID = tileId, Intersection = _selectedOverlay.Intersection });
}
}
else
{
_overlays.Add(new Overlay { X = _selectedOverlay.X, Y = _selectedOverlay.Y, ID = tileId, Intersection = _selectedOverlay.Intersection });
//connection?.InvokeAsync("SendMessage", $"{_selectedTile.X}:{_selectedTile.Y}", tileId.ToString(), _session);
}
}
private void DeleteWall()
{
var tileExist = _mapWalls.Any(m => m.X == _selectedWall.X && m.Y == _selectedWall.Y && m.Rotation == _selectedWall.Rotation);

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

After

Width:  |  Height:  |  Size: 21 KiB

Before After
Before After