-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathEngineContext.cs
More file actions
67 lines (48 loc) · 1.84 KB
/
Copy pathEngineContext.cs
File metadata and controls
67 lines (48 loc) · 1.84 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
using Silk.NET.OpenGL;
using System.Numerics;
using SixLabors.ImageSharp;
using SixLabors.ImageSharp.Formats.Jpeg;
using SixLabors.ImageSharp.PixelFormats;
namespace OpenSC
{
using OpenSC.Audio;
using OpenSC.Game;
using OpenSC.Graphics;
using OpenSC.Game.Proxy;
public sealed class EngineContext
{
public float TRANSITION_DURATION { get; } = 0.4f;
public required GL GL { get; set; }
public required Cursor Cursor { get; set; }
public required Camera Camera { get; set; }
public required LuaProxy Proxy { get; set; }
public required AudioManager AudioManager { get; set; }
public required StateManager StateManager { get; set; }
public required Vector2 Viewport { get; set; }
public Font? GameFont { get; set; }
public Font? MenuFont { get; set; }
public Texture2D LoadTexture(string name)
{
var resources = ResourceFile.GetInstance(SCEnvironment.ResourcePath);
var textureData = resources.GetResourceBuffer(name);
if (name == "inv-gold_key.tga") // TODO: Investigate bad TGA headers
{
textureData[7] = 0;
}
// File.WriteAllBytes("./images/" + name, textureData);
return new Texture2D(GL, textureData);
}
public Image GetBlackImage()
{
return GetImage(new Rgba32(0, 0, 0, 1));
}
private Image GetImage(Rgba32 color)
{
using var imageSharp = SixLabors.ImageSharp.Image.LoadPixelData<Rgba32>(new[] { color }, 1, 1);
using var memoryStream = new MemoryStream();
imageSharp.Save(memoryStream, new JpegEncoder());
var texture2d = new Texture2D(GL, memoryStream.ToArray());
return new Image(GL, texture2d);
}
}
}