You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
2.4 KiB
69 lines
2.4 KiB
__author__ = 'marble_xu'
|
|
|
|
import pygame as pg
|
|
from .. import tool
|
|
from .. import constants as c
|
|
|
|
class Menu(tool.State):
|
|
def __init__(self):
|
|
tool.State.__init__(self)
|
|
|
|
def startup(self, current_time, persist):
|
|
self.next = c.LEVEL
|
|
self.persist = persist
|
|
self.game_info = persist
|
|
|
|
self.setupBackground()
|
|
self.setupOption()
|
|
|
|
def setupBackground(self):
|
|
frame_rect = [80, 0, 800, 600]
|
|
self.bg_image = tool.get_image(tool.GFX[c.MAIN_MENU_IMAGE], *frame_rect)
|
|
self.bg_rect = self.bg_image.get_rect()
|
|
self.bg_rect.x = 0
|
|
self.bg_rect.y = 0
|
|
|
|
def setupOption(self):
|
|
self.option_frames = []
|
|
frame_names = [c.OPTION_ADVENTURE + '_0', c.OPTION_ADVENTURE + '_1']
|
|
frame_rect = [0, 0, 165, 77]
|
|
|
|
for name in frame_names:
|
|
self.option_frames.append(tool.get_image(tool.GFX[name], *frame_rect, c.BLACK, 1.7))
|
|
|
|
self.option_frame_index = 0
|
|
self.option_image = self.option_frames[self.option_frame_index]
|
|
self.option_rect = self.option_image.get_rect()
|
|
self.option_rect.x = 435
|
|
self.option_rect.y = 75
|
|
|
|
self.option_start = 0
|
|
self.option_timer = 0
|
|
self.option_clicked = False
|
|
|
|
def checkOptionClick(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):
|
|
self.option_clicked = True
|
|
self.option_timer = self.option_start = self.current_time
|
|
return False
|
|
|
|
def update(self, surface, current_time, mouse_pos, mouse_click):
|
|
self.current_time = self.game_info[c.CURRENT_TIME] = current_time
|
|
|
|
if not self.option_clicked:
|
|
if mouse_pos:
|
|
self.checkOptionClick(mouse_pos)
|
|
else:
|
|
if(self.current_time - self.option_timer) > 200:
|
|
self.option_frame_index += 1
|
|
if self.option_frame_index >= 2:
|
|
self.option_frame_index = 0
|
|
self.option_timer = self.current_time
|
|
self.option_image = self.option_frames[self.option_frame_index]
|
|
if(self.current_time - self.option_start) > 1300:
|
|
self.done = True
|
|
|
|
surface.blit(self.bg_image, self.bg_rect)
|
|
surface.blit(self.option_image, self.option_rect) |