Mentions légales du service

Skip to content
Snippets Groups Projects
Commit 5e6898cd authored by DETROYAT Alexis's avatar DETROYAT Alexis
Browse files

Merge branch 'dev/holy_grail' into 'dev/avoid_monster'

Multi character sprite management update

See merge request !23
parents 7fb546ef 33a4c62b
No related branches found
No related tags found
5 merge requests!131Testing merge against main, to verify CI,!97Engines have test and no leak of memory,!95Enhance Makefile,!94auto export python path when running make tests,!23Multi character sprite management update
......@@ -12,12 +12,16 @@ class Level(AbstractLevel):
knights = [self.map.named_objects[f"knight_{i}"] for i in range(1,7)]
self.last_knight_update = False
self.scattered_knights = False
for i in range(6):
if i<3:
knights[i].place_at(11,i+1)
else:
knights[i].place_at(11,i+2)
knights[i].direction = cst.Direction.LEFT
knights[i].visible = True
knights[i].send_update()
cus.debug(f"knights objects: {knights}")
def set_knight_position(i):
......
......@@ -66,6 +66,7 @@ class GameView(EmptyView):
self.wop: NPC
self.objects = None # dictionnary for sprite objects
self.character_list = ['guard', 'cook', 'knight'] # list of potential NPC to load
self.characters = {} # character objects
self.has_started = False # whether the inferior has started or not (
self.executing = (
......@@ -600,39 +601,41 @@ class GameView(EmptyView):
self.wop = spo.SpWop(self.metadata["arcade_skins"]["wop_main"], self.amap)
log.debug(f"created wop {self.wop}")
for char_name in self.character_list:
setattr(self, char_name, None)
if self.metadata['characters']:
log.debug(f"Loading level characters : {self.metadata['characters']}")
for char_name in self.metadata['characters']:
char_number = self.metadata['characters'][char_name]
if char_number == 1:
self.characters[char_name] = None
if not self.metadata['characters']:
return
log.debug(f"Loading level characters : {self.metadata['characters']}")
for char_name in self.metadata['characters']:
char_number = self.metadata['characters'][char_name]
if char_number == 1:
sprite_object = spo.SpNPC(self.metadata["arcade_skins"][char_name], self.amap)
self.characters[char_name] = sprite_object
log.debug(f"created {char_name} : {sprite_object}")
else :
for i in range (1,char_number+1):
sprite_object = spo.SpNPC(self.metadata["arcade_skins"][char_name], self.amap)
setattr(self, char_name, sprite_object)
log.debug(f"created {char_name} : {sprite_object}")
else :
for i in range (1,char_number+1):
sprite_object = spo.SpNPC(self.metadata["arcade_skins"][char_name], self.amap)
setattr(self, f"{char_name}_{i}", sprite_object)
log.debug(f"created {char_name}_{i} : {sprite_object}")
self.characters[f"{char_name}_{i}"] = sprite_object
log.debug(f"created {char_name}_{i} : {sprite_object}")
else:
log.debug("No character to load in this level")
def add_characters_to_map(self):
if self.metadata['characters']:
log.debug(f"Adding characters to map : {self.metadata['characters']}")
for char_name in self.metadata['characters']:
char_number = self.metadata['characters'][char_name]
if char_number == 1:
character = getattr(self,char_name)
if not self.metadata['characters']:
return
log.debug(f"Adding characters to map : {self.metadata['characters']}")
for char_name in self.metadata['characters']:
char_number = self.metadata['characters'][char_name]
if char_number == 1:
character = self.characters[char_name]
self.level_maps['main']['tile_map'].sprite_lists['objects'].append(character)
self.level_maps['main']['objects'][char_name] = character
log.debug(f"character {char_name} added to map")
else :
for i in range (1,char_number+1):
character = self.characters[f"{char_name}_{i}"]
self.level_maps['main']['tile_map'].sprite_lists['objects'].append(character)
self.level_maps['main']['objects'][char_name] = character
log.debug(f"character {char_name} added to map")
else :
for i in range (1,char_number+1):
character = getattr(self,f"{char_name}_{i}")
self.level_maps['main']['tile_map'].sprite_lists['objects'].append(character)
self.level_maps['main']['objects'][f"{char_name}_{i}"] = character
log.debug(f"character {char_name}_{i} added to map")
self.level_maps['main']['objects'][f"{char_name}_{i}"] = character
log.debug(f"character {char_name}_{i} added to map")
def launch_level(self, code_window):
"""
......@@ -760,12 +763,12 @@ class GameView(EmptyView):
for char_name in self.metadata['characters']:
char_number = self.metadata['characters'][char_name]
if char_number == 1:
character = getattr(self,char_name)
character = self.characters[char_name]
character.set_reset()
log.debug(f"character reset : {character}")
else :
for i in range (1,char_number+1):
character = getattr(self,f"{char_name}_{i}")
character = self.characters[f"{char_name}_{i}"]
character.set_reset()
log.debug(f"character reset : {char_name}_{i}")
......@@ -1052,21 +1055,21 @@ class GameView(EmptyView):
self.player.rescale(self.scale)
self.wop.rescale(self.scale)
self.exit.rescale(self.scale)
self.breaklight.rescale(self.scale)
if self.metadata['characters']:
log.debug(f"Rescaling characters : {self.metadata['characters']}")
for char_name in self.metadata['characters']:
char_number = self.metadata['characters'][char_name]
if char_number == 1:
character = getattr(self,char_name)
character = self.characters[char_name]
character.rescale(self.scale)
log.debug(f"character {char_name} rescaled")
else :
for i in range (1,char_number+1):
character = getattr(self,f"{char_name}_{i}")
character = self.characters[f"{char_name}_{i}"]
character.rescale(self.scale)
log.debug(f"character {char_name}_{i} rescaled")
self.exit.rescale(self.scale)
self.breaklight.rescale(self.scale)
self.camera_sprites.resize(
self.window.width, max(1, self.window.height - cst.Win.BUTTON_H)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment