Added parallax to backgrounds
BIN
gamedata/assets/backgroundsep.png
Normal file
After Width: | Height: | Size: 7.2 KiB |
BIN
gamedata/assets/backgroundseparator.png
Normal file
After Width: | Height: | Size: 144 KiB |
@ -36,8 +36,9 @@ class Game():
|
|||||||
mapdico = {}
|
mapdico = {}
|
||||||
mapdico["name"] = mapfolder.split(os.sep)[-1]
|
mapdico["name"] = mapfolder.split(os.sep)[-1]
|
||||||
mapdico["cover"] = None
|
mapdico["cover"] = None
|
||||||
mapdico["background"] = None
|
mapdico["backgrounds"] = []
|
||||||
mapdico["data"] = None
|
mapdico["data"] = None
|
||||||
|
mapdico["filler"] = None
|
||||||
mapdico["tilesets"] = {}
|
mapdico["tilesets"] = {}
|
||||||
scanner = os.scandir(path=mapfolder)
|
scanner = os.scandir(path=mapfolder)
|
||||||
for i in scanner: # Je check tout les fichiers du dossier
|
for i in scanner: # Je check tout les fichiers du dossier
|
||||||
@ -46,10 +47,12 @@ class Game():
|
|||||||
if name.endswith(".png"):
|
if name.endswith(".png"):
|
||||||
if name=="cover.png":
|
if name=="cover.png":
|
||||||
mapdico["cover"] = pygame.image.load(i.path)
|
mapdico["cover"] = pygame.image.load(i.path)
|
||||||
elif name=="background.png":
|
elif name.startswith("background"):
|
||||||
mapdico["background"] = pygame.image.load(i.path)
|
mapdico["backgrounds"].append({"sprite":pygame.image.load(i.path).convert_alpha(),"name":i.path})
|
||||||
|
elif name=="filler.png":
|
||||||
|
mapdico["filler"] = pygame.image.load(i.path).convert_alpha()
|
||||||
else:
|
else:
|
||||||
mapdico["tilesets"][i.name] = pygame.image.load(i.path)
|
mapdico["tilesets"][i.name] = pygame.image.load(i.path).convert_alpha()
|
||||||
except:
|
except:
|
||||||
self.log("Erreur",mapfolder,name,"Fichier invalide")
|
self.log("Erreur",mapfolder,name,"Fichier invalide")
|
||||||
if name=="map.json":
|
if name=="map.json":
|
||||||
@ -59,6 +62,7 @@ class Game():
|
|||||||
except:
|
except:
|
||||||
self.log("Erreur",mapfolder,name)
|
self.log("Erreur",mapfolder,name)
|
||||||
if mapdico["data"]:
|
if mapdico["data"]:
|
||||||
|
mapdico["backgrounds"].sort(key=lambda x: x["name"])
|
||||||
return mapdico
|
return mapdico
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 24 KiB |
BIN
gamedata/maps/TulipFields/background0.png
Normal file
After Width: | Height: | Size: 9.1 KiB |
BIN
gamedata/maps/TulipFields/background1.png
Normal file
After Width: | Height: | Size: 17 KiB |
BIN
gamedata/maps/TulipFields/background2.png
Normal file
After Width: | Height: | Size: 24 KiB |
BIN
gamedata/maps/TulipFields/background3.png
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
gamedata/maps/TulipFields/filler.png
Normal file
After Width: | Height: | Size: 11 KiB |
@ -16,9 +16,11 @@ class TilesetRenderer(BaseObject):
|
|||||||
self.level = game.levels_lib[mapfoldername]
|
self.level = game.levels_lib[mapfoldername]
|
||||||
self.reinit(self.level)
|
self.reinit(self.level)
|
||||||
|
|
||||||
self.bg = game.sprite_lib["fallbackground.png"]
|
self.bgs = [game.sprite_lib["fallbackground.png"]]
|
||||||
if self.level["background"]:
|
if len(self.level["backgrounds"]):
|
||||||
self.bg = self.level["background"]
|
self.bgs = self.level["backgrounds"]
|
||||||
|
|
||||||
|
self.bgoffset = self.layers[0]["surface"].get_height()/2-self.game.globals["camerah"]
|
||||||
|
|
||||||
def step(self):
|
def step(self):
|
||||||
# Spawning ennemies
|
# Spawning ennemies
|
||||||
@ -28,7 +30,25 @@ class TilesetRenderer(BaseObject):
|
|||||||
self.game.gameloop.summon(e)
|
self.game.gameloop.summon(e)
|
||||||
|
|
||||||
def draw(self):
|
def draw(self):
|
||||||
self.game.window.blit(self.game.pygame.transform.scale(self.bg,(self.game.globals["cameraw"],self.game.globals["camerah"])),[0,0])
|
wratio = self.game.globals["cameraw"]/self.game.DISPLAY_WIDTH
|
||||||
|
hratio = self.game.globals["camerah"]/self.game.DISPLAY_HEIGHT
|
||||||
|
lastoffset = 0
|
||||||
|
for i,bg in enumerate(self.bgs):
|
||||||
|
ratio = 1-(len(self.bgs)-i)/len(self.bgs)
|
||||||
|
width, height = round(bg["sprite"].get_width()*wratio),round(bg["sprite"].get_height()*hratio)
|
||||||
|
sprite = self.game.pygame.transform.scale(bg["sprite"],(width,height))
|
||||||
|
nbs = self.game.globals["cameraw"]/width
|
||||||
|
lastoffset = self.rect[1]+(self.bgoffset-self.game.globals["cameray"])*ratio
|
||||||
|
for i in range(round(nbs+0.5)):
|
||||||
|
self.game.window.blit(sprite,[(-self.game.globals["camerax"]*ratio)%width+(i-1)*width,lastoffset])
|
||||||
|
# Draw filler
|
||||||
|
if self.level["filler"]:
|
||||||
|
filleroffset = lastoffset+height
|
||||||
|
self.game.window.blit(self.level["filler"],[0,filleroffset])
|
||||||
|
# Separator
|
||||||
|
sep = self.game.pygame.transform.scale(self.game.sprite_lib["backgroundseparator.png"],[self.game.globals["cameraw"],self.game.globals["camerah"]])
|
||||||
|
self.game.window.blit(sep,[0,0])
|
||||||
|
# Layers
|
||||||
for layer in self.layers:
|
for layer in self.layers:
|
||||||
self.game.window.blit(layer["surface"],(layer["offsets"][0]-self.game.globals["camerax"],layer["offsets"][1]-self.game.globals["cameray"]))
|
self.game.window.blit(layer["surface"],(layer["offsets"][0]-self.game.globals["camerax"],layer["offsets"][1]-self.game.globals["cameray"]))
|
||||||
|
|
||||||
|