Overlays
This commit is contained in:
parent
c2be21dacb
commit
aab7f8a6fa
5 changed files with 62 additions and 5 deletions
2
MyGame/.vscode/launch.json
vendored
2
MyGame/.vscode/launch.json
vendored
|
@ -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
|
||||
|
|
6
MyGame/.vscode/tasks.json
vendored
6
MyGame/.vscode/tasks.json
vendored
|
@ -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"
|
||||
],
|
||||
|
|
|
@ -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);
|
||||
|
|
BIN
MyGame/Icon.bmp
BIN
MyGame/Icon.bmp
Binary file not shown.
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 20 KiB |
BIN
MyGame/Icon.ico
BIN
MyGame/Icon.ico
Binary file not shown.
Before Width: | Height: | Size: 91 KiB After Width: | Height: | Size: 21 KiB |
Loading…
Add table
Add a link
Reference in a new issue