-
-
Save ScottLilly/f02d10322a8184f2424a2e601972786c to your computer and use it in GitHub Desktop.
Draw border around current location in world map
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System.Drawing; | |
using System.IO; | |
using System.Reflection; | |
using System.Windows.Forms; | |
using Engine; | |
namespace SuperAdventure | |
{ | |
public partial class WorldMap : Form | |
{ | |
private readonly Assembly _thisAssembly = Assembly.GetExecutingAssembly(); | |
private readonly Player _player; | |
private readonly Bitmap _fogImage; | |
public WorldMap(Player player) | |
{ | |
InitializeComponent(); | |
_player = player; | |
_fogImage = FilenameToBitmap("FogLocation"); | |
DisplayImage(pic_0_2, 5, "HerbalistsGarden"); | |
DisplayImage(pic_1_2, 4, "HerbalistsHut"); | |
DisplayImage(pic_2_0, 7, "FarmFields"); | |
DisplayImage(pic_2_1, 6, "Farmhouse"); | |
DisplayImage(pic_2_2, 2, "TownSquare"); | |
DisplayImage(pic_2_3, 3, "TownGate"); | |
DisplayImage(pic_2_4, 8, "Bridge"); | |
DisplayImage(pic_2_5, 9, "SpiderForest"); | |
DisplayImage(pic_3_2, 1, "Home"); | |
} | |
private void DisplayImage(PictureBox pictureBox, int locationID, string imageName) | |
{ | |
if(_player.LocationsVisited.Contains(locationID)) | |
{ | |
pictureBox.Image = FilenameToBitmap(imageName); | |
// Draw a rectangle over the image, | |
// for the player's current location image | |
if(_player.CurrentLocation.ID == locationID) | |
{ | |
using(Graphics g = Graphics.FromImage(pictureBox.Image)) | |
{ | |
int borderWidth = 3; | |
g.DrawRectangle(new Pen(Brushes.Red, borderWidth), | |
new Rectangle(0, 0, pictureBox.Image.Width - borderWidth, | |
pictureBox.Image.Height - borderWidth)); | |
} | |
} | |
} | |
else | |
{ | |
pictureBox.Image = _fogImage; | |
} | |
} | |
private Bitmap FilenameToBitmap(string imageFileName) | |
{ | |
string fullFileName = | |
$"{_thisAssembly.GetName().Name}.Images.{imageFileName}.png"; | |
using(Stream resourceStream = | |
_thisAssembly.GetManifestResourceStream(fullFileName)) | |
{ | |
if(resourceStream != null) | |
{ | |
return new Bitmap(resourceStream); | |
} | |
} | |
return null; | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment