diff --git a/source/state/level.py b/source/state/level.py index 9ae85e5..25df602 100644 --- a/source/state/level.py +++ b/source/state/level.py @@ -353,9 +353,48 @@ class Level(tool.State): self.head_group.update(self.game_info) self.sun_group.update(self.game_info) + if self.produce_sun: + # 原版阳光掉落机制:(已掉落阳光数*100 ms + 4250 ms) 与 9500 ms的最小值,再加 0 ~ 2750 ms 之间的一个数 + if (self.current_time - self.sun_timer) > min(c.PRODUCE_SUN_INTERVAL + 100*self.fallenSun, 9500) + randint(0, 2750): + self.sun_timer = self.current_time + map_x, map_y = self.map.getRandomMapIndex() + x, y = self.map.getMapGridPos(map_x, map_y) + self.sun_group.add(plant.Sun(x, 0, x, y)) + self.fallenSun += 1 + # wcb 添加 + # 检查有没有捡到阳光 + clickedSun = False + clickedCardsOrMap = False + if not self.drag_plant and not self.drag_shovel and mouse_pos and mouse_click[0]: + for sun in self.sun_group: + if sun.checkCollision(mouse_pos[0], mouse_pos[1]): + self.menubar.increaseSunValue(sun.sun_value) + clickedSun = True + + # 拖动植物或者铲子 + if not self.drag_plant and mouse_pos and mouse_click[0] and not clickedSun: + result = self.menubar.checkCardClick(mouse_pos) + if result: + self.setupMouseImage(result[0], result[1]) + clickedCardsOrMap = True + elif self.drag_plant: + if mouse_click[1]: + self.removeMouseImage() + clickedCardsOrMap = True + elif mouse_click[0]: + if self.menubar.checkMenuBarClick(mouse_pos): + self.removeMouseImage() + else: + self.addPlant() + elif mouse_pos is None: + self.setupHintImage() + elif self.drag_shovel: + if mouse_click[1]: + self.removeMouseImagePlus() + # 检查是否点击菜单 - if mouse_click[0]: + if mouse_click[0] and (not clickedSun) and (not clickedCardsOrMap): if self.checkLittleMenuClick(mouse_pos): # 暂停 显示菜单 self.showLittleMenu = True @@ -369,40 +408,6 @@ class Level(tool.State): elif self.drag_shovel: # 移出这地方的植物 self.shovelRemovePlant(mouse_pos) - - # 拖动植物或者铲子 - if not self.drag_plant and mouse_pos and mouse_click[0]: - result = self.menubar.checkCardClick(mouse_pos) - if result: - self.setupMouseImage(result[0], result[1]) - elif self.drag_plant: - if mouse_click[1]: - self.removeMouseImage() - elif mouse_click[0]: - if self.menubar.checkMenuBarClick(mouse_pos): - self.removeMouseImage() - else: - self.addPlant() - elif mouse_pos is None: - self.setupHintImage() - elif self.drag_shovel: - if mouse_click[1]: - self.removeMouseImagePlus() - - if self.produce_sun: - # 原版阳光掉落机制:(已掉落阳光数*100 ms + 4250 ms) 与 9500 ms的最小值,再加 0 ~ 2750 ms 之间的一个数 - if (self.current_time - self.sun_timer) > min(c.PRODUCE_SUN_INTERVAL + 100*self.fallenSun, 9500) + randint(0, 2750): - self.sun_timer = self.current_time - map_x, map_y = self.map.getRandomMapIndex() - x, y = self.map.getMapGridPos(map_x, map_y) - self.sun_group.add(plant.Sun(x, 0, x, y)) - self.fallenSun += 1 - - # 检查有没有捡到阳光 - if not self.drag_plant and not self.drag_shovel and mouse_pos and mouse_click[0]: - for sun in self.sun_group: - if sun.checkCollision(mouse_pos[0], mouse_pos[1]): - self.menubar.increaseSunValue(sun.sun_value) for car in self.cars: car.update(self.game_info) diff --git a/source/state/mainmenu.py b/source/state/mainmenu.py index 4ab2002..9daf551 100644 --- a/source/state/mainmenu.py +++ b/source/state/mainmenu.py @@ -58,7 +58,7 @@ class Menu(tool.State): self.option_timer = 0 self.option_clicked = False - def checkOptionClick(self, mouse_pos): + def checkAdventureClick(self, mouse_pos): x, y = mouse_pos if(x >= self.option_rect.x and x <= self.option_rect.right and y >= self.option_rect.y and y <= self.option_rect.bottom): @@ -89,7 +89,7 @@ class Menu(tool.State): # 没有选到选项时,检查有没有点到选项 if not self.option_clicked: if mouse_pos: - self.checkOptionClick(mouse_pos) + self.checkAdventureClick(mouse_pos) self.checkExitClick(mouse_pos) self.checkLittleGameClick(mouse_pos) else: diff --git a/source/tool.py b/source/tool.py index 19675b9..957e22a 100755 --- a/source/tool.py +++ b/source/tool.py @@ -53,7 +53,7 @@ class Control(): self.state.startup(self.current_time, self.game_info) def update(self): - # 返回自 pygame_init() 调用以来的毫秒数 + # 返回自 pygame_init() 调用以来的毫秒数 * 游戏速度倍率 self.current_time = pg.time.get_ticks() * c.GAME_RATE if self.state.done: