''' Recipes are combinations of three monsters. When a player fills a recipe they get an updgrade ''' import arcade class Recipe: ''' A class of different recipes ''' GHOSTS = ['ghost', 'ghost', 'ghost'] FROGS = ['frog', 'frog', 'frog'] GHOST_FROG = ['ghost', 'ghost', 'frog'] FROG_GHOST = ['ghost', 'frog', 'frog'] class ActiveRecipe(arcade.SpriteList): ''' Keeps track of the active recipe and draws it. ''' def __init__(self): super().__init__() self.active = Recipe.GHOSTS self.cycle_recipes = [self.set_ghosts, self.set_frogs, self.set_ggf] self.ghost = arcade.Sprite(filename="resources/images/monsters/ghost/ghost1.png") self.frog = arcade.Sprite(filename="resources/images/monsters/frog/frog1.png") self.pos = 0 self.kill_list = [] def render(self) -> None: x = 0 for sprite in self.sprite_list: screen_right = arcade.get_viewport()[1] - 100 screen_top = arcade.get_viewport()[3] - 80 sprite.scale = 4 sprite.center_x = screen_right - x sprite.center_y = screen_top x += 70 sprite.draw() x = 0 for kill in self.kill_list: sprite = getattr(self, kill) screen_right = arcade.get_viewport()[1] - 240 screen_top = arcade.get_viewport()[3] - 150 sprite.scale = 4 sprite.center_x = screen_right + x sprite.center_y = screen_top x += 70 sprite.draw() def next_recipe(self): self.pos += 1 if self.pos == len(self.cycle_recipes): self.pos = 0 self.cycle_recipes[self.pos]() def add_kill(self, monster_type) -> int: # Adds a kill to kill_list. If 3 or more check the recipe then give a power up if it matches. self.kill_list.append(monster_type) ret_val = -1 if len(self.kill_list) >= 3: if self.active == self.kill_list: self.kill_list = [] ret_val = self.pos self.kill_list = [] return ret_val def set_ghosts(self) -> None: self.active = Recipe.GHOSTS self.sprite_list = [] self.sprite_list.append(self.ghost) self.sprite_list.append(self.ghost) self.sprite_list.append(self.ghost) def set_frogs(self) -> None: self.active = Recipe.FROGS self.sprite_list = [] self.sprite_list.append(self.frog) self.sprite_list.append(self.frog) self.sprite_list.append(self.frog) def set_ggf(self) -> None: self.active = Recipe.GHOST_FROG self.sprite_list = [] self.sprite_list.append(self.frog) self.sprite_list.append(self.ghost) self.sprite_list.append(self.ghost)