-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
Copy pathSprites.py
92 lines (88 loc) · 3.6 KB
/
Sprites.py
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
87
88
89
90
91
92
import json
from classes.Animation import Animation
from classes.Sprite import Sprite
from classes.Spritesheet import Spritesheet
class Sprites:
def __init__(self):
self.spriteCollection = self.loadSprites(
[
"./sprites/Mario.json",
"./sprites/Goomba.json",
"./sprites/Koopa.json",
"./sprites/Animations.json",
"./sprites/BackgroundSprites.json",
"./sprites/ItemAnimations.json",
"./sprites/RedMushroom.json"
]
)
def loadSprites(self, urlList):
resDict = {}
for url in urlList:
with open(url) as jsonData:
data = json.load(jsonData)
mySpritesheet = Spritesheet(data["spriteSheetURL"])
dic = {}
if data["type"] == "background":
for sprite in data["sprites"]:
try:
colorkey = sprite["colorKey"]
except KeyError:
colorkey = None
dic[sprite["name"]] = Sprite(
mySpritesheet.image_at(
sprite["x"],
sprite["y"],
sprite["scalefactor"],
colorkey,
),
sprite["collision"],
None,
sprite["redrawBg"],
)
resDict.update(dic)
continue
elif data["type"] == "animation":
for sprite in data["sprites"]:
images = []
for image in sprite["images"]:
images.append(
mySpritesheet.image_at(
image["x"],
image["y"],
image["scale"],
colorkey=sprite["colorKey"],
)
)
dic[sprite["name"]] = Sprite(
None,
None,
animation=Animation(images, deltaTime=sprite["deltaTime"]),
)
resDict.update(dic)
continue
elif data["type"] == "character" or data["type"] == "item":
for sprite in data["sprites"]:
try:
colorkey = sprite["colorKey"]
except KeyError:
colorkey = None
try:
xSize = sprite['xsize']
ySize = sprite['ysize']
except KeyError:
xSize, ySize = data['size']
dic[sprite["name"]] = Sprite(
mySpritesheet.image_at(
sprite["x"],
sprite["y"],
sprite["scalefactor"],
colorkey,
True,
xTileSize=xSize,
yTileSize=ySize,
),
sprite["collision"],
)
resDict.update(dic)
continue
return resDict