-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathSavedImages.cs
More file actions
86 lines (65 loc) · 2.66 KB
/
SavedImages.cs
File metadata and controls
86 lines (65 loc) · 2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
using Svg;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
namespace BMG
{
public class SavedImages
{
private readonly Dictionary<string, TileImage> tileImages = new Dictionary<string, TileImage>();
private Random rnd = new Random();
private readonly Options1 optionsObject;
private readonly int sizeMultiplier;
public SavedImages(Options1 optionsObject, int sizeMultiplier)
{
this.optionsObject = optionsObject;
this.sizeMultiplier = sizeMultiplier;
}
public void SetRandomSeed(int seed)
{
rnd = new Random(seed);
}
public TileImage GetTileImage(Tiledata.TileType tile)
{
string asset = tile.asset;
Tiledata.TileTypeBase final = tile;
if (tile.randomizer != null && optionsObject.randomizers.enabled)
{
final = tile.randomizer[rnd.Next(tile.randomizer.Length)];
asset = final.asset;
if (final.tileParts == null)
final.tileParts = tile.tileParts;
}
if (tileImages.ContainsKey(asset))
return tileImages[asset];
var instance = new TileImage(optionsObject, sizeMultiplier, final);
tileImages.Add(asset, instance);
return instance;
}
public class TileImage
{
public Bitmap renderedImage;
public string imageName;
public int imageWidth;
public int imageHeight;
public TileImage(Options1 optionsObject, int sizeMultiplier, Tiledata.TileTypeBase tile)
{
string path = string.Format("./assets/tiles/{0}/{1}", optionsObject.preset, tile.asset);
if (!File.Exists(path))
throw new FileNotFoundException("File " + path + " does not exist.");
imageName = tile.asset;
Logger.LogAAL(Logger.AALDirection.In, "./assets/tiles/" + optionsObject.preset + "/" + tile.asset);
var document = SvgDocument.Open(path);
imageWidth = (int)Math.Round((double)document.Width * sizeMultiplier);
imageHeight = (int)Math.Round((double)document.Height * sizeMultiplier);
renderedImage = new Bitmap(imageWidth, imageHeight, PixelFormat.Format32bppArgb);
var renderer = SvgRenderer.FromImage(renderedImage);
renderer.ScaleTransform(sizeMultiplier, sizeMultiplier);
document.Draw(renderer);
}
}
}
}