-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathSpriteCache.java
44 lines (39 loc) · 1.21 KB
/
SpriteCache.java
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
/* e-LEMON-ators */
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsEnvironment;
import java.awt.Image;
import java.awt.Transparency;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.net.URL;
import java.util.HashMap;
import javax.imageio.ImageIO;
import java.io.File;
public class SpriteCache
{
private static SpriteCache single = new SpriteCache();
public static SpriteCache get()
{
return single;
}
private HashMap sprites = new HashMap();
public Sprite getSprite(String ref)
{
if (sprites.get(ref) != null) {
return (Sprite) sprites.get(ref);
}
BufferedImage sourceImage = null;
try {
sourceImage = ImageIO.read(new File(ref));
}
catch (IOException e) {
e.printStackTrace();
}
GraphicsConfiguration gc = GraphicsEnvironment.getLocalGraphicsEnvironment().getDefaultScreenDevice().getDefaultConfiguration();
Image image = gc.createCompatibleImage(sourceImage.getWidth(),sourceImage.getHeight(),Transparency.BITMASK);
image.getGraphics().drawImage(sourceImage,0,0,null);
Sprite sprite = new Sprite(image);
sprites.put(ref,sprite);
return sprite;
}
}