Affichage des tiles
This commit is contained in:
parent
78f015a082
commit
fe507b304a
@ -14,7 +14,7 @@
|
||||
"gridCellHeight": 16,
|
||||
"gridCellsX": 20,
|
||||
"gridCellsY": 15,
|
||||
"tileset": "Base",
|
||||
"tileset": "base.png",
|
||||
"dataCoords2D": [
|
||||
[
|
||||
[-1],
|
||||
@ -368,4 +368,4 @@
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
@ -10,27 +10,41 @@ class TilesetRenderer(BaseObject):
|
||||
self.tileh = 64
|
||||
|
||||
self.level = game.levels_lib[mapfoldername]
|
||||
self.reinit_rects(self.level)
|
||||
|
||||
self.reinit(self.level)
|
||||
|
||||
def draw(self):
|
||||
for i in self.rects:
|
||||
self.game.pygame.draw.rect(self.game.window,[255,0,0],(i[0:4]))
|
||||
for layer in self.layers:
|
||||
self.game.window.blit(layer["surface"],(layer["offsets"]))
|
||||
|
||||
def reinit_rects(self,level):
|
||||
def reinit(self,level):
|
||||
json = level["data"]
|
||||
name = level["name"]
|
||||
self.rects = []
|
||||
if "layers" in json.keys():
|
||||
self.layers = []
|
||||
if "layers" in json.keys() and type(json["layers"]).__name__=="list":
|
||||
solidlayer = False
|
||||
for layer in json["layers"]:
|
||||
try:
|
||||
if layer["name"] == "Solids" and "entities" in layer.keys() :
|
||||
if layer["name"] == "Solids" and "entities" in layer.keys() : # Je trouve les collisions
|
||||
solidlayer = layer
|
||||
break
|
||||
else: # J'ajoute un layer de tiles
|
||||
tileset = level["tilesets"][layer["tileset"]]
|
||||
tilew,tileh = layer["gridCellWidth"],layer["gridCellHeight"]
|
||||
tileoffx,tileoffy = layer["offsetX"],layer["offsetY"]
|
||||
nbtilesx,nbtilesy = layer["gridCellsX"],layer["gridCellsY"]
|
||||
storedlayer = {"offsets":[tileoffx,tileoffy]}
|
||||
surface = self.game.pygame.Surface((tilew*nbtilesx,tileh*nbtilesy),flags=self.game.pygame.SRCALPHA)
|
||||
for y in range(len(layer["dataCoords2D"])):
|
||||
for x in range(len(layer["dataCoords2D"][y])):
|
||||
coords = layer["dataCoords2D"][y][x]
|
||||
if len(coords)>1:
|
||||
areatocopy = [coords[0]*tilew,coords[1]*tileh,tilew,tileh]
|
||||
surface.blit(tileset,(x*tilew,y*tileh),area=areatocopy)
|
||||
storedlayer["surface"] = surface
|
||||
self.layers.append(storedlayer)
|
||||
except:
|
||||
self.game.log("Erreur",name,"Les layers sont invalides")
|
||||
if solidlayer:
|
||||
if solidlayer: # Je crée les collisions
|
||||
if "gridCellWidth" in solidlayer.keys() and "gridCellHeight" in solidlayer.keys():
|
||||
self.solidtilew = solidlayer["gridCellWidth"]
|
||||
self.solidtileh = solidlayer["gridCellHeight"]
|
||||
|
Loading…
x
Reference in New Issue
Block a user