显示当前关卡不推荐选择的卡片提示
This commit is contained in:
parent
2235f687dc
commit
37d8b29f60
@ -27,26 +27,35 @@ def getCardPool(data):
|
|||||||
return card_pool
|
return card_pool
|
||||||
|
|
||||||
class Card():
|
class Card():
|
||||||
def __init__(self, x, y, index, scale=0.5):
|
def __init__(self, x:int, y:int, index:int, scale:float=0.5, not_recommend=0):
|
||||||
self.loadFrame(c.PLANT_CARD_INFO[index][c.CARD_INDEX], scale)
|
self.info = c.PLANT_CARD_INFO[index]
|
||||||
|
self.loadFrame(self.info[c.CARD_INDEX], scale)
|
||||||
self.rect = self.orig_image.get_rect()
|
self.rect = self.orig_image.get_rect()
|
||||||
self.rect.x = x
|
self.rect.x = x
|
||||||
self.rect.y = y
|
self.rect.y = y
|
||||||
# 绘制植物阳光消耗大小
|
# 绘制植物阳光消耗大小
|
||||||
font = pg.font.Font(c.FONT_PATH, 12)
|
font = pg.font.Font(c.FONT_PATH, 12)
|
||||||
self.sun_cost_img = font.render(str(c.PLANT_CARD_INFO[index][c.SUN_INDEX]), True, c.BLACK)
|
self.sun_cost_img = font.render(str(self.info[c.SUN_INDEX]), True, c.BLACK)
|
||||||
self.sun_cost_img_rect = self.sun_cost_img.get_rect()
|
self.sun_cost_img_rect = self.sun_cost_img.get_rect()
|
||||||
sun_cost_img_x = 32 - self.sun_cost_img_rect.w
|
sun_cost_img_x = 32 - self.sun_cost_img_rect.w
|
||||||
self.orig_image.blit(self.sun_cost_img,
|
self.orig_image.blit(self.sun_cost_img,
|
||||||
(sun_cost_img_x, 52, self.sun_cost_img_rect.w, self.sun_cost_img_rect.h))
|
(sun_cost_img_x, 52, self.sun_cost_img_rect.w, self.sun_cost_img_rect.h))
|
||||||
|
|
||||||
self.index = index
|
self.index = index
|
||||||
self.sun_cost = c.PLANT_CARD_INFO[index][c.SUN_INDEX]
|
self.sun_cost = self.info[c.SUN_INDEX]
|
||||||
self.frozen_time = c.PLANT_CARD_INFO[index][c.FROZEN_TIME_INDEX]
|
self.frozen_time = self.info[c.FROZEN_TIME_INDEX]
|
||||||
self.frozen_timer = -self.frozen_time
|
self.frozen_timer = -self.frozen_time
|
||||||
self.refresh_timer = 0
|
self.refresh_timer = 0
|
||||||
self.select = True
|
self.select = True
|
||||||
self.clicked = False
|
self.clicked = False
|
||||||
|
self.not_recommend = not_recommend
|
||||||
|
if self.not_recommend:
|
||||||
|
self.orig_image.set_alpha(128)
|
||||||
|
self.image = pg.Surface((self.rect.w, self.rect.h)) # 黑底
|
||||||
|
self.image.blit(self.orig_image, (0,0), (0, 0, self.rect.w, self.rect.h))
|
||||||
|
else:
|
||||||
|
self.image = self.orig_image
|
||||||
|
self.image.set_alpha(255)
|
||||||
|
|
||||||
def loadFrame(self, name, scale):
|
def loadFrame(self, name, scale):
|
||||||
frame = tool.GFX[name]
|
frame = tool.GFX[name]
|
||||||
@ -74,8 +83,13 @@ class Card():
|
|||||||
def setSelect(self, can_select):
|
def setSelect(self, can_select):
|
||||||
self.select = can_select
|
self.select = can_select
|
||||||
if can_select:
|
if can_select:
|
||||||
self.image = self.orig_image
|
if self.not_recommend:
|
||||||
self.image.set_alpha(255)
|
self.orig_image.set_alpha(128)
|
||||||
|
self.image = pg.Surface((self.rect.w, self.rect.h)) # 黑底
|
||||||
|
self.image.blit(self.orig_image, (0,0), (0, 0, self.rect.w, self.rect.h))
|
||||||
|
else:
|
||||||
|
self.image = self.orig_image
|
||||||
|
self.image.set_alpha(255)
|
||||||
else:
|
else:
|
||||||
self.orig_image.set_alpha(64)
|
self.orig_image.set_alpha(64)
|
||||||
self.image = pg.Surface((self.rect.w, self.rect.h)) # 黑底
|
self.image = pg.Surface((self.rect.w, self.rect.h)) # 黑底
|
||||||
@ -217,10 +231,11 @@ class MenuBar():
|
|||||||
|
|
||||||
# 关卡模式选植物的界面
|
# 关卡模式选植物的界面
|
||||||
class Panel():
|
class Panel():
|
||||||
def __init__(self, card_list, sun_value):
|
def __init__(self, card_list, sun_value, background_type=c.BACKGROUND_DAY):
|
||||||
self.loadImages(sun_value)
|
self.loadImages(sun_value)
|
||||||
self.selected_cards = []
|
self.selected_cards = []
|
||||||
self.selected_num = 0
|
self.selected_num = 0
|
||||||
|
self.background_type = background_type
|
||||||
self.setupCards(card_list)
|
self.setupCards(card_list)
|
||||||
|
|
||||||
def loadFrame(self, name):
|
def loadFrame(self, name):
|
||||||
@ -261,7 +276,20 @@ class Panel():
|
|||||||
x = c.PANEL_X_START - c.PANEL_X_INTERNAL
|
x = c.PANEL_X_START - c.PANEL_X_INTERNAL
|
||||||
y += c.PANEL_Y_INTERNAL
|
y += c.PANEL_Y_INTERNAL
|
||||||
x += c.PANEL_X_INTERNAL
|
x += c.PANEL_X_INTERNAL
|
||||||
self.card_list.append(Card(x, y, index, 0.5))
|
plant_name = c.PLANT_CARD_INFO[index][c.PLANT_NAME_INDEX]
|
||||||
|
if (plant_name in c.CAN_SLEEP_PLANTS
|
||||||
|
and self.background_type in c.DAYTIME_BACKGROUNDS):
|
||||||
|
not_recommend = c.REASON_WILL_SLEEP
|
||||||
|
elif (plant_name == c.GRAVEBUSTER
|
||||||
|
and self.background_type != c.BACKGROUND_NIGHT):
|
||||||
|
not_recommend = c.REASON_OTHER
|
||||||
|
elif (plant_name in c.WATER_PLANTS
|
||||||
|
and self.background_type not in c.POOL_EQUIPPED_BACKGROUNDS):
|
||||||
|
not_recommend = c.REASON_OTHER
|
||||||
|
# 还有屋顶场景,以及其他植物没有实现的植物没有写进来
|
||||||
|
else:
|
||||||
|
not_recommend = 0
|
||||||
|
self.card_list.append(Card(x, y, index, 0.5, not_recommend))
|
||||||
|
|
||||||
def checkCardClick(self, mouse_pos):
|
def checkCardClick(self, mouse_pos):
|
||||||
delete_card = None
|
delete_card = None
|
||||||
@ -277,6 +305,13 @@ class Panel():
|
|||||||
self.selected_num -= 1
|
self.selected_num -= 1
|
||||||
# 播放点击音效
|
# 播放点击音效
|
||||||
c.SOUND_TAPPING_CARD.play()
|
c.SOUND_TAPPING_CARD.play()
|
||||||
|
if delete_card.info[c.PLANT_NAME_INDEX] == c.COFFEEBEAN:
|
||||||
|
for i in self.card_list:
|
||||||
|
if i.info[c.PLANT_NAME_INDEX] in c.CAN_SLEEP_PLANTS:
|
||||||
|
i.not_recommend = 1
|
||||||
|
i.orig_image.set_alpha(128)
|
||||||
|
i.image = pg.Surface((i.rect.w, i.rect.h)) # 黑底
|
||||||
|
i.image.blit(i.orig_image, (0,0), (0, 0, i.rect.w, i.rect.h))
|
||||||
|
|
||||||
if self.selected_num >= c.CARD_MAX_NUM:
|
if self.selected_num >= c.CARD_MAX_NUM:
|
||||||
return
|
return
|
||||||
@ -287,6 +322,12 @@ class Panel():
|
|||||||
self.addCard(card)
|
self.addCard(card)
|
||||||
# 播放点击音效
|
# 播放点击音效
|
||||||
c.SOUND_TAPPING_CARD.play()
|
c.SOUND_TAPPING_CARD.play()
|
||||||
|
if card.info[c.PLANT_NAME_INDEX] == c.COFFEEBEAN:
|
||||||
|
for i in self.card_list:
|
||||||
|
if i.not_recommend == c.REASON_WILL_SLEEP:
|
||||||
|
i.not_recommend = 0
|
||||||
|
i.image = i.orig_image
|
||||||
|
i.image.set_alpha(255)
|
||||||
break
|
break
|
||||||
|
|
||||||
def addCard(self, card:Card):
|
def addCard(self, card:Card):
|
||||||
|
|||||||
@ -443,6 +443,17 @@ ASH_PLANTS_AND_ICESHROOM = {
|
|||||||
ICESHROOM,
|
ICESHROOM,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# 白天要睡觉的植物
|
||||||
|
CAN_SLEEP_PLANTS = {
|
||||||
|
PUFFSHROOM, SUNSHROOM,
|
||||||
|
FUMESHROOM, HYPNOSHROOM,
|
||||||
|
SCAREDYSHROOM, ICESHROOM,
|
||||||
|
DOOMSHROOM, SEASHROOM,
|
||||||
|
}
|
||||||
|
|
||||||
|
# 选卡不推荐选择理由
|
||||||
|
REASON_WILL_SLEEP = 1
|
||||||
|
REASON_OTHER = 3
|
||||||
|
|
||||||
# 植物生命值
|
# 植物生命值
|
||||||
PLANT_HEALTH = 300
|
PLANT_HEALTH = 300
|
||||||
|
|||||||
@ -355,7 +355,7 @@ class Level(tool.State):
|
|||||||
|
|
||||||
def initChoose(self):
|
def initChoose(self):
|
||||||
self.state = c.CHOOSE
|
self.state = c.CHOOSE
|
||||||
self.panel = menubar.Panel(c.CARDS_TO_CHOOSE, self.map_data[c.INIT_SUN_NAME])
|
self.panel = menubar.Panel(c.CARDS_TO_CHOOSE, self.map_data[c.INIT_SUN_NAME], self.background_type)
|
||||||
|
|
||||||
# 播放选卡音乐
|
# 播放选卡音乐
|
||||||
pg.mixer.music.stop()
|
pg.mixer.music.stop()
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user