diff --git a/source/constants.py b/source/constants.py index 9395c8b..ae4ff13 100755 --- a/source/constants.py +++ b/source/constants.py @@ -105,7 +105,7 @@ BACKGROUND_SINGLE = 7 BACKGROUND_TRIPLE = 8 # 地图类型集合 -# 白天场地 +# 白天场地(泛指蘑菇睡觉的场地) DAYTIME_BACKGROUNDS = { BACKGROUND_DAY, BACKGROUND_POOL, BACKGROUND_ROOF, BACKGROUND_WALLNUTBOWLING, BACKGROUND_SINGLE, BACKGROUND_TRIPLE, @@ -116,6 +116,10 @@ POOL_EQUIPPED_BACKGROUNDS = { BACKGROUND_POOL, BACKGROUND_FOG, # 屋顶上的场地 ON_ROOF_BACKGROUNDS = { BACKGROUND_ROOF, BACKGROUND_ROOFNIGHT, } +# BACKGROUND_DAY场地的变体 +BACKGROUND_DAY_LIKE_BACKGROUNDS = { BACKGROUND_DAY, BACKGROUND_SINGLE, + BACKGROUND_TRIPLE, + } # 夜晚地图的墓碑数量等级 GRADE_GRAVES = 'grade_graves' diff --git a/source/state/level.py b/source/state/level.py index bd64fc6..7a73e6d 100644 --- a/source/state/level.py +++ b/source/state/level.py @@ -66,16 +66,16 @@ class Level(tool.State): self.bgm = 'battle.opus' else: # 一般选卡关,非传送带 # 白天类 - if self.map_data[c.BACKGROUND_TYPE] in {c.BACKGROUND_DAY, c.BACKGROUND_SINGLE, c.BACKGROUND_TRIPLE}: + if self.map_data[c.BACKGROUND_TYPE] in c.BACKGROUND_DAY_LIKE_BACKGROUNDS: self.bgm = 'dayLevel.opus' # 夜晚 - elif self.map_data[c.BACKGROUND_TYPE] in {c.BACKGROUND_NIGHT}: + elif self.map_data[c.BACKGROUND_TYPE] == c.BACKGROUND_NIGHT: self.bgm = 'nightLevel.opus' # 泳池 - elif self.map_data[c.BACKGROUND_TYPE] in {c.BACKGROUND_POOL}: + elif self.map_data[c.BACKGROUND_TYPE] == c.BACKGROUND_POOL: self.bgm = 'poolLevel.opus' # 浓雾 - elif self.map_data[c.BACKGROUND_TYPE] in {c.BACKGROUND_FOG}: + elif self.map_data[c.BACKGROUND_TYPE] == c.BACKGROUND_FOG: self.bgm = 'fogLevel.opus' def setupBackground(self): @@ -185,12 +185,14 @@ class Level(tool.State): if len(self.graveSet) < 12: unoccupied = [] occupied = [] + # 毁灭菇坑与冰道应当特殊化 + exceptionObjects = {c.HOLE, c.ICE_FROZEN_PLOT} # 遍历能生成墓碑的区域 for mapY in range(0, 4): for mapX in range(4, 8): # 为空、为毁灭菇坑、为冰道时看作未被植物占据 if ((not self.map.map[mapY][mapX][c.MAP_PLANT]) or - (all((i in {c.HOLE, c.ICE_FROZEN_PLOT}) for i in self.map.map[mapY][mapX][c.MAP_PLANT]))): + (all((i in exceptionObjects) for i in self.map.map[mapY][mapX][c.MAP_PLANT]))): unoccupied.append((mapX, mapY)) # 已有墓碑的格子不应该放到任何列表中 elif c.GRAVE not in self.map.map[mapY][mapX][c.MAP_PLANT]: @@ -209,7 +211,8 @@ class Level(tool.State): for i in self.plant_groups[mapY]: checkMapX, _ = self.map.getMapIndex(i.rect.centerx, i.rect.bottom) if mapX == checkMapX: - if i.name not in {c.HOLE, c.ICE_FROZEN_PLOT}: + # 不能杀死毁灭菇坑和冰道 + if i.name not in exceptionObjects: i.health = 0 self.plant_groups[mapY].add(plant.Grave(posX, posY)) self.map.map[mapY][mapX][c.MAP_PLANT].add(c.GRAVE) @@ -403,9 +406,7 @@ class Level(tool.State): # 种植植物后应当刷新僵尸的攻击对象,当然,默认初始时不用刷新 self.newPlantAndPositon = None - # 0:白天 1:夜晚 2:泳池 3:浓雾 4:屋顶 5:月夜 6:坚果保龄球 - # 还准备加入 7:单行草皮 8:三行草皮 但是目前没有找到图( - if self.background_type in {0, 2, 4, 7, 8} and self.bar_type == c.CHOOSEBAR_STATIC: + if self.background_type in c.DAYTIME_BACKGROUNDS and self.bar_type == c.CHOOSEBAR_STATIC: self.produce_sun = True else: self.produce_sun = False