123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599 |
- #!/usr/bin/env python3
- # -*- coding: utf-8 -*-"
- """
- NoINIW 2051 - by psy (epsylon@riseup.net)
- """
- import os, sys, time
- os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
- os.environ['SDL_VIDEO_CENTERED'] = '1'
- import pygame
- import pygameMenu
- from data.levels.level0.level0 import login as level0
- FPS=60.0
- VERSION = "V:0.1(beta)_25072020"
- CAPTION = "cYpher.PunK! { //Shell_Based//m-RPG// }: [ NoINIW_2051 ]"
- TITLE = "[NoINIW-2051]"
- WINDOW_SIZE = (1024, 768)
- COLOR_WHITE = (255, 255, 255)
- COLOR_BLACK = (0, 0, 0)
- COLOR_GRAY = (50, 50, 50)
- COLOR_GREEN = (0, 160, 0)
- COLOR_BLUE = (0, 0, 228)
- COLOR_YELLOW = (255, 255, 0)
- COLOR_ORANGE = (242, 91, 37)
- logo_path = "data/images/logo.png"
- icon_path = "data/images/icon.png"
- play_path = "data/images/play.png"
- options_path = "data/images/options.png"
- exit_path = "data/images/exit.png"
- cheats_path = "data/images/cheats.png"
- howto_path = "data/images/howto.png"
- forum_path= "data/images/forum.png"
- update_path= "data/images/update.png"
- author_path = "data/images/author.png"
- music_path = "data/sounds/menu.ogg"
- menu_cfg = "data/menu.cfg"
- ####### start of: translations section ########
- translations_menu = "data/translations/menu.txt"
- tutorial_EN_path = "data/translations/tutorial_EN.txt"
- tutorial_ES_path = "data/translations/tutorial_ES.txt"
- updates_EN_path = "data/translations/updates_EN.txt"
- updates_ES_path = "data/translations/updates_ES.txt"
- forum_EN_path = "data/translations/forum_EN.txt"
- forum_ES_path = "data/translations/forum_ES.txt"
- credits_EN_path = "data/translations/credits_EN.txt"
- credits_ES_path = "data/translations/credits_ES.txt"
- translations_cheats_path = "data/translations/cheats.txt"
- ####### end of: translations section ########
- pygame.init() # pygame lib init
- pygame.font.init()
- font_type = "data/fonts/Vera.ttf"
- font_type_bold = "data/fonts/VeraBold.ttf"
- font_type_logo = "data/fonts/DejaVuSerif-BoldItalic.ttf"
- font_size = 18
- font_REA_size = 15
- font_version_size = 16
- font_counter_size = 52
- fontObj = pygame.font.Font(font_type, font_size) # create font object for menu
- fontObjBold = pygame.font.Font(font_type_bold, font_size) # create font bold object for menu
- fontVerObj = pygame.font.Font(font_type, font_version_size) # create font object for version
- fontCounterObj = pygame.font.Font(font_type_bold, font_counter_size) # create font object for counter
- fontREAObj = pygame.font.Font(font_type, font_REA_size) # create font object for REA
- sound = pygameMenu.sound.Sound() # load game menu sounds
- sound.load_example_sounds() # load menu sounds
- music = pygame.mixer.music.load(music_path) # load game menu music
- logo = pygame.image.load(logo_path) # load game logo image
- icon = pygame.image.load(icon_path) # load game icon image
- surface = pygame.display.set_icon(icon) # set icon on window
- surface = pygame.display.set_mode(WINDOW_SIZE) # set display mode
- def load_menu_translations(set_language):
- if set_language == "0": # English
- language_translation = "ENGLISH"
- else: # Spanish
- language_translation = "SPANISH"
- f = open(translations_menu, "r")
- translations = f.readlines()
- f.close()
- for lost in translations:
- lost = lost.replace("\n", "")
- if language_translation in str(lost):
- if "MENU_GAME_HOWTO" in lost:
- MENU_GAME_TUTORIAL = str(lost.split(":")[1])
- elif "MENU_GAME_START" in lost:
- MENU_GAME_PLAY = str(lost.split(":")[1])
- elif "MENU_GAME_SETTINGS" in lost:
- MENU_GAME_OPTIONS = str(lost.split(":")[1])
- elif "MENU_GAME_UPGRADE" in lost:
- MENU_GAME_UPDATE = str(lost.split(":")[1])
- elif "MENU_GAME_PUBLIC" in lost:
- MENU_GAME_FORUM = str(lost.split(":")[1])
- elif "MENU_GAME_AUTHOR" in lost:
- MENU_GAME_AUTHOR = str(lost.split(":")[1])
- elif "MENU_GAME_CHEATS" in lost:
- MENU_GAME_CHEATS = str(lost.split(":")[1])
- elif "MENU_GAME_END" in lost:
- MENU_GAME_EXIT = str(lost.split(":")[1])
- elif "MENU_GAME_LANG" in lost:
- MENU_GAME_LANG = str(lost.split(":")[1])
- elif "MENU_GAME_L-EN" in lost:
- MENU_GAME_LANG_EN = str(lost.split(":")[1])
- elif "MENU_GAME_L-ES" in lost:
- MENU_GAME_LANG_ES = str(lost.split(":")[1])
- elif "MENU_GAME_FULLSCREEN" in lost:
- MENU_GAME_FULLSCREEN = str(lost.split(":")[1])
- elif "MENU_GAME_MUSIC" in lost:
- MENU_GAME_MUSIC = str(lost.split(":")[1])
- elif "MENU_GAME_RETURN_SETTINGS" in lost:
- MENU_GAME_RETURN_SETTINGS = str(lost.split(":")[1])
- return MENU_GAME_TUTORIAL, MENU_GAME_PLAY, MENU_GAME_OPTIONS, MENU_GAME_UPDATE, MENU_GAME_FORUM, MENU_GAME_AUTHOR, MENU_GAME_CHEATS, MENU_GAME_EXIT, MENU_GAME_LANG, MENU_GAME_LANG_EN, MENU_GAME_LANG_ES, MENU_GAME_FULLSCREEN, MENU_GAME_MUSIC, MENU_GAME_RETURN_SETTINGS
- def load_stored_settings():
- f = open(menu_cfg, "r")
- stored_config = f.readlines()
- f.close()
- for conf in stored_config:
- if "LANGUAGE" in conf: # language
- set_language = conf.replace("\n","").split(":")[1]
- elif "FULLSCREEN" in conf: # screen size
- set_fullscreen = conf.replace("\n","").split(":")[1]
- if set_fullscreen == "0": # window mode
- surface = pygame.display.set_mode(WINDOW_SIZE)
- else: # fullscreen
- surface = pygame.display.set_mode((0, 0), pygame.FULLSCREEN)
- else: # music
- set_music = conf.replace("\n","").split(":")[1]
- if set_music == "0": # music disabled
- music = pygame.mixer.music.stop()
- else: # music enabled
- music = pygame.mixer.music.play(-1)
- return set_language, set_fullscreen, set_music
- def button(img, coords, surface):
- image = pygame.image.load(img)
- imagerect = image.get_rect()
- imagerect.topright = coords
- surface.blit(image, imagerect)
- return (image, imagerect)
- def main_background():
- surface.fill(COLOR_BLACK) # main menu background color
- MENU_GAME_TUTORIAL, MENU_GAME_PLAY, MENU_GAME_OPTIONS, MENU_GAME_UPDATE, MENU_GAME_FORUM, MENU_GAME_AUTHOR, MENU_GAME_CHEATS, MENU_GAME_EXIT, MENU_GAME_LANG, MENU_GAME_LANG_EN, MENU_GAME_LANG_ES, MENU_GAME_FULLSCREEN, MENU_GAME_MUSIC, MENU_GAME_RETURN_SETTINGS = load_menu_translations(set_language)
- pygame.draw.rect(surface,COLOR_WHITE,(0,260,WINDOW_SIZE[0],475))
- surface.blit(logo, (WINDOW_SIZE[0]/4+25, WINDOW_SIZE[1]/2-85)) # load logo
- text_surface = fontVerObj.render(VERSION, True, COLOR_WHITE) # load version text with antialiasing
- surface.blit(text_surface, dest=(WINDOW_SIZE[0]/2-500, WINDOW_SIZE[1]/2+360)) # set version number
- pygame.draw.rect(surface,COLOR_WHITE,(0,70,WINDOW_SIZE[0],160))
- howto_rect = pygame.draw.rect(surface,COLOR_WHITE,(160,85,180,60))
- button_howto = button(howto_path,(WINDOW_SIZE[0]/10+120, WINDOW_SIZE[1]/3-170), surface)
- howto_surface = fontObjBold.render(str(MENU_GAME_TUTORIAL), True, COLOR_BLACK)
- surface.blit(howto_surface, dest=(WINDOW_SIZE[0]/10+125, WINDOW_SIZE[1]/3-150))
- play_rect = pygame.draw.rect(surface,COLOR_WHITE,(160,155,180,60))
- button_play = button(play_path,(WINDOW_SIZE[0]/10+120, WINDOW_SIZE[1]/3-100), surface)
- play_surface = fontObjBold.render(str(MENU_GAME_PLAY)+"!", True, COLOR_BLACK)
- surface.blit(play_surface, dest=(WINDOW_SIZE[0]/10+125, WINDOW_SIZE[1]/3-80))
- options_rect = pygame.draw.rect(surface,COLOR_WHITE,(340,85,180,60))
- button_options = button(options_path,(WINDOW_SIZE[0]/10+300, WINDOW_SIZE[1]/3-170), surface)
- options_surface = fontObjBold.render(str(MENU_GAME_OPTIONS), True, COLOR_BLACK)
- surface.blit(options_surface, dest=(WINDOW_SIZE[0]/10+305, WINDOW_SIZE[1]/3-150))
- update_rect = pygame.draw.rect(surface,COLOR_WHITE,(340,155,180,60))
- button_update = button(update_path,(WINDOW_SIZE[0]/10+300, WINDOW_SIZE[1]/3-100), surface)
- update_surface = fontObjBold.render(str(MENU_GAME_UPDATE), True, COLOR_BLACK)
- surface.blit(update_surface, dest=(WINDOW_SIZE[0]/10+305, WINDOW_SIZE[1]/3-80))
- forum_rect = pygame.draw.rect(surface,COLOR_WHITE,(520,85,180,60))
- button_forum = button(forum_path,(WINDOW_SIZE[0]/10+480, WINDOW_SIZE[1]/3-170), surface)
- forum_surface = fontObjBold.render(str(MENU_GAME_FORUM), True, COLOR_BLACK)
- surface.blit(forum_surface, dest=(WINDOW_SIZE[0]/10+485, WINDOW_SIZE[1]/3-150))
- author_rect = pygame.draw.rect(surface,COLOR_WHITE,(520,155,180,60))
- button_author = button(author_path,(WINDOW_SIZE[0]/10+480, WINDOW_SIZE[1]/3-100), surface)
- author_surface = fontObjBold.render(str(MENU_GAME_AUTHOR), True, COLOR_BLACK)
- surface.blit(author_surface, dest=(WINDOW_SIZE[0]/10+485, WINDOW_SIZE[1]/3-80))
- cheats_rect = pygame.draw.rect(surface,COLOR_WHITE,(700,85,200,60))
- button_cheats = button(cheats_path,(760, WINDOW_SIZE[1]/3-170), surface)
- cheats_surface = fontObjBold.render(str(MENU_GAME_CHEATS)+"!", True, COLOR_BLACK)
- surface.blit(cheats_surface, dest=(765, WINDOW_SIZE[1]/3-150))
- exit_rect = pygame.draw.rect(surface,COLOR_WHITE,(700,155,200,60))
- button_exit = button(exit_path,(760, WINDOW_SIZE[1]/3-100), surface)
- exit_surface = fontObjBold.render(str(MENU_GAME_EXIT), True, COLOR_BLACK)
- surface.blit(exit_surface, dest=(765, WINDOW_SIZE[1]/3-80))
- check_menu_events(howto_rect, play_rect, options_rect, update_rect, forum_rect, author_rect, cheats_rect, exit_rect, MENU_GAME_OPTIONS, MENU_GAME_LANG, MENU_GAME_LANG_EN, MENU_GAME_LANG_ES, MENU_GAME_FULLSCREEN, MENU_GAME_MUSIC, MENU_GAME_RETURN_SETTINGS)
- def settings_background():
- pygame.draw.rect(surface,COLOR_WHITE,(0,0,0,0))
- def display_text_animation(rect, string, l):
- text = ''
- for i in range(len(string)):
- text += string[i]
- text_surface = fontREAObj.render(text, True, COLOR_ORANGE)
- text_rect = rect
- text_rect.center = (WINDOW_SIZE[0]/2+10, WINDOW_SIZE[0]/2-10+l)
- surface.blit(text_surface, text_rect)
- pygame.display.update()
- pygame.time.wait(100)
- def show_tutorial():
- tutorial_menu = pygameMenu.Menu(surface, # main menu menu
- bgfun=settings_background,
- color_selected=COLOR_YELLOW,
- font=font_type_bold,
- font_color=COLOR_WHITE,
- font_size=16,
- font_size_title=28,
- menu_alpha=100,
- menu_color=COLOR_BLACK,
- menu_height=40,
- menu_width=int(WINDOW_SIZE[0]),
- onclose=pygameMenu.events.EXIT,
- option_shadow=False,
- title="",
- menu_color_title=COLOR_ORANGE,
- widget_alignment=pygameMenu.locals.ALIGN_LEFT,
- window_height=40,
- window_width=WINDOW_SIZE[0]
- )
- topA = "data/images/topA.png"
- topB = "data/images/topB.png"
- top_menu_A = pygame.image.load(topA) # load game top front A
- top_menu_B = pygame.image.load(topB) # load game top front B (exit)
- surface.blit(top_menu_A, (WINDOW_SIZE[0]-1025, WINDOW_SIZE[1]-770)) # load top main image
- surface.blit(top_menu_B, (WINDOW_SIZE[0]-25, WINDOW_SIZE[1]-769)) # load top exit image
- tutorial_rect = pygame.draw.rect(surface,COLOR_BLACK,(WINDOW_SIZE[0]/9+95,WINDOW_SIZE[1]/2-100,600,400)) # tutorial back box
- if set_language == "0": # English
- f = open(tutorial_EN_path, "r")
- else: # Spanish
- f = open(tutorial_ES_path, "r")
- tutorial = f.readlines()
- f.close()
- l = 0
- for line in tutorial:
- l = l+20 # used to create spaces between lines
- line = line.replace("\n", "")
- display_text_animation(tutorial_rect, line, l)
- for event in pygame.event.get():
- if event.type == 5: # "5" = click DOWN event
- main() # whatever click goes to main menu
- create_counter(10) # create visual ETA counter for return to main menu
- def update_menu():
- update_m = pygameMenu.Menu(surface, # main menu menu
- bgfun=settings_background,
- color_selected=COLOR_YELLOW,
- font=font_type_bold,
- font_color=COLOR_WHITE,
- font_size=16,
- font_size_title=28,
- menu_alpha=100,
- menu_color=COLOR_BLACK,
- menu_height=40,
- menu_width=int(WINDOW_SIZE[0]),
- onclose=pygameMenu.events.EXIT,
- option_shadow=False,
- title="",
- menu_color_title=COLOR_ORANGE,
- widget_alignment=pygameMenu.locals.ALIGN_LEFT,
- window_height=40,
- window_width=WINDOW_SIZE[0]
- )
- topA = "data/images/topA.png"
- topB = "data/images/topB.png"
- top_menu_A = pygame.image.load(topA) # load game top front A
- top_menu_B = pygame.image.load(topB) # load game top front B (exit)
- surface.blit(top_menu_A, (WINDOW_SIZE[0]-1025, WINDOW_SIZE[1]-770)) # load top main image
- surface.blit(top_menu_B, (WINDOW_SIZE[0]-25, WINDOW_SIZE[1]-769)) # load top exit image
- update_rect = pygame.draw.rect(surface,COLOR_BLACK,(WINDOW_SIZE[0]/9+95,WINDOW_SIZE[1]/2-100,600,400)) # update back box
- if set_language == "0": # English
- f = open(updates_EN_path, "r")
- else: # Spanish
- f = open(updates_ES_path, "r")
- updates = f.readlines()
- f.close()
- l = 0
- for line in updates:
- l = l+35 # used to create spaces between lines
- line = line.replace("\n", "")
- display_text_animation(update_rect, line, l)
- for event in pygame.event.get():
- if event.type == 5: # "5" = click DOWN event
- main() # whatever click goes to main menu
- l = 150
- r = 9
- create_counter(10) # create visual ETA counter for return to main menu
- def forum_menu():
- forum_m = pygameMenu.Menu(surface, # main menu menu
- bgfun=settings_background,
- color_selected=COLOR_YELLOW,
- font=font_type_bold,
- font_color=COLOR_WHITE,
- font_size=16,
- font_size_title=28,
- menu_alpha=100,
- menu_color=COLOR_BLACK,
- menu_height=40,
- menu_width=int(WINDOW_SIZE[0]),
- onclose=pygameMenu.events.EXIT,
- option_shadow=False,
- title="",
- menu_color_title=COLOR_ORANGE,
- widget_alignment=pygameMenu.locals.ALIGN_LEFT,
- window_height=40,
- window_width=WINDOW_SIZE[0]
- )
- topA = "data/images/topA.png"
- topB = "data/images/topB.png"
- top_menu_A = pygame.image.load(topA) # load game top front A
- top_menu_B = pygame.image.load(topB) # load game top front B (exit)
- surface.blit(top_menu_A, (WINDOW_SIZE[0]-1025, WINDOW_SIZE[1]-770)) # load top main image
- surface.blit(top_menu_B, (WINDOW_SIZE[0]-25, WINDOW_SIZE[1]-769)) # load top exit image
- forum_rect = pygame.draw.rect(surface,COLOR_BLACK,(WINDOW_SIZE[0]/9+95,WINDOW_SIZE[1]/2-100,600,400)) # update back box
- if set_language == "0": # English
- f = open(forum_EN_path, "r")
- else: # Spanish
- f = open(forum_ES_path, "r")
- forums = f.readlines()
- f.close()
- l = 0
- for line in forums:
- l = l+35 # used to create spaces between lines
- line = line.replace("\n", "")
- display_text_animation(forum_rect, line, l)
- for event in pygame.event.get():
- if event.type == 5: # "5" = click DOWN event
- main() # whatever click goes to main menu
- create_counter(10) # create visual ETA counter for return to main menu
- def author_menu():
- credits_m = pygameMenu.Menu(surface, # main menu menu
- bgfun=settings_background,
- color_selected=COLOR_YELLOW,
- font=font_type_bold,
- font_color=COLOR_WHITE,
- font_size=16,
- font_size_title=28,
- menu_alpha=100,
- menu_color=COLOR_BLACK,
- menu_height=40,
- menu_width=int(WINDOW_SIZE[0]),
- onclose=pygameMenu.events.EXIT,
- option_shadow=False,
- title="",
- menu_color_title=COLOR_ORANGE,
- widget_alignment=pygameMenu.locals.ALIGN_LEFT,
- window_height=40,
- window_width=WINDOW_SIZE[0]
- )
- topA = "data/images/topA.png"
- topB = "data/images/topB.png"
- top_menu_A = pygame.image.load(topA) # load game top front A
- top_menu_B = pygame.image.load(topB) # load game top front B (exit)
- surface.blit(top_menu_A, (WINDOW_SIZE[0]-1025, WINDOW_SIZE[1]-770)) # load top main image
- surface.blit(top_menu_B, (WINDOW_SIZE[0]-25, WINDOW_SIZE[1]-769)) # load top exit image
- author_rect = pygame.draw.rect(surface,COLOR_BLACK,(WINDOW_SIZE[0]/9+95,WINDOW_SIZE[1]/2-100,600,400)) # update back box
- if set_language == "0": # English
- f = open(credits_EN_path, "r")
- else: # Spanish
- f = open(credits_ES_path, "r")
- credits = f.readlines()
- f.close()
- l = 0
- for line in credits:
- l = l+35 # used to create spaces between lines
- line = line.replace("\n", "")
- display_text_animation(author_rect, line, l)
- for event in pygame.event.get():
- if event.type == 5: # "5" = click DOWN event
- main() # whatever click goes to main menu
- create_counter(10) # create visual ETA counter for return to main menu
- def cheats_menu():
- cheats_m = pygameMenu.Menu(surface, # cheats menu menu
- bgfun=settings_background,
- color_selected=COLOR_YELLOW,
- font=font_type_bold,
- font_color=COLOR_WHITE,
- font_size=16,
- font_size_title=28,
- menu_alpha=100,
- menu_color=COLOR_BLACK,
- menu_height=40,
- menu_width=int(WINDOW_SIZE[0]),
- onclose=pygameMenu.events.EXIT,
- option_shadow=False,
- title="",
- menu_color_title=COLOR_ORANGE,
- widget_alignment=pygameMenu.locals.ALIGN_LEFT,
- window_height=40,
- window_width=WINDOW_SIZE[0]
- )
- topA = "data/images/topA.png"
- topB = "data/images/topB.png"
- top_menu_A = pygame.image.load(topA) # load game top front A
- top_menu_B = pygame.image.load(topB) # load game top front B (exit)
- surface.blit(top_menu_A, (WINDOW_SIZE[0]-1025, WINDOW_SIZE[1]-770)) # load top main image
- surface.blit(top_menu_B, (WINDOW_SIZE[0]-25, WINDOW_SIZE[1]-769)) # load top exit image
- if set_language == "0": # English
- language_translation = "ENGLISH"
- else: # Spanish
- language_translation = "SPANISH"
- f = open(translations_cheats_path, "r")
- translations_cheats = f.readlines()
- f.close()
- for lost in translations_cheats:
- lost = lost.replace("\n", "")
- if language_translation in str(lost):
- if "MENU_CHEATS_ENTER" in lost:
- MENU_CHEATS_ENTER = str(lost.split(":")[1])
- elif "MENU_CHEATS_TRY" in lost:
- MENU_CHEATS_TRY = str(lost.split(":")[1])
- cheats_menu = pygameMenu.Menu(surface, # cheats menu
- bgfun=settings_background,
- color_selected=COLOR_YELLOW,
- font=font_type_bold,
- font_color=COLOR_WHITE,
- font_size=14,
- font_size_title=35,
- menu_alpha=100,
- menu_color=COLOR_BLACK,
- menu_height=220,
- menu_width=int(WINDOW_SIZE[0]),
- onclose=main,
- option_shadow=False,
- title="",
- menu_color_title=COLOR_ORANGE,
- widget_alignment=pygameMenu.locals.ALIGN_LEFT,
- window_height=220,
- window_width=WINDOW_SIZE[0]
- )
- cheats_menu.add_text_input("* "+str(MENU_CHEATS_ENTER)+": ",
- default='',
- maxchar=16,
- textinput_id='cheat_code',
- input_underline='')
- def try_cheat(): # add some code cheats: free shell upgrade, etc. (leaked during videogame unboxing!)
- #data = cheats_menu.get_input_data()
- main() # (btm) returning to main menu
- cheats_menu.add_option("-> "+str(MENU_CHEATS_TRY)+" <-", try_cheat)
- while True:
- cheats_menu.mainloop()
- def create_counter(counter):
- l = 150
- r = counter
- for i in range(0,counter): # create counter for reset
- text = str(r)
- text_surface = fontCounterObj.render(text, True, COLOR_BLACK)
- text_rect = pygame.draw.rect(surface,COLOR_WHITE,(WINDOW_SIZE[0]/2-480,WINDOW_SIZE[1]/2-170,100,100)) # counter back box
- text_rect.center = (WINDOW_SIZE[0]/2-420, WINDOW_SIZE[0]/2-250)
- surface.blit(text_surface, text_rect)
- r = r - 1
- time.sleep(1)
- pygame.display.flip()
- if r < 0:
- main()
- def check_menu_events(howto_rect, play_rect, options_rect, update_rect, forum_rect, author_rect, cheats_rect, exit_rect, MENU_GAME_OPTIONS, MENU_GAME_LANG, MENU_GAME_LANG_EN, MENU_GAME_LANG_ES, MENU_GAME_FULLSCREEN, MENU_GAME_MUSIC, MENU_GAME_RETURN_SETTINGS):
- for event in pygame.event.get():
- if event.type == 5: # "5" = click DOWN event
- mouse = pygame.mouse.get_pos()
- m1 = mouse[0]
- m2 = mouse[1]
- mouse_rect = pygame.draw.rect(surface,COLOR_ORANGE,(m1,m2,1,1)) # locate cursor position!
- howto_event_zone = pygame.Rect.colliderect(howto_rect, mouse_rect) # tutorial
- play_event_zone = pygame.Rect.colliderect(play_rect, mouse_rect) # play
- options_event_zone = pygame.Rect.colliderect(options_rect, mouse_rect) # options
- update_event_zone = pygame.Rect.colliderect(update_rect, mouse_rect) # update
- forum_event_zone = pygame.Rect.colliderect(forum_rect, mouse_rect) # forum
- author_event_zone = pygame.Rect.colliderect(author_rect, mouse_rect) # credits
- cheats_event_zone = pygame.Rect.colliderect(cheats_rect, mouse_rect) # cheats
- exit_event_zone = pygame.Rect.colliderect(exit_rect, mouse_rect) # exit
- if howto_event_zone == 1:
- show_tutorial()
- elif play_event_zone == 1:
- start_game()
- elif options_event_zone == 1:
- config_menu(MENU_GAME_OPTIONS, MENU_GAME_LANG, MENU_GAME_LANG_EN, MENU_GAME_LANG_ES, MENU_GAME_FULLSCREEN, MENU_GAME_MUSIC, MENU_GAME_RETURN_SETTINGS)
- elif update_event_zone == 1:
- update_menu()
- elif forum_event_zone == 1:
- forum_menu()
- elif author_event_zone == 1:
- author_menu()
- elif cheats_event_zone == 1:
- cheats_menu()
- elif exit_event_zone == 1:
- sys.exit()
- def config_menu(MENU_GAME_OPTIONS, MENU_GAME_LANG, MENU_GAME_LANG_EN, MENU_GAME_LANG_ES, MENU_GAME_FULLSCREEN, MENU_GAME_MUSIC, MENU_GAME_RETURN_SETTINGS):
- global settings_menu
- settings_menu = pygameMenu.Menu(surface, # settings menu
- bgfun=settings_background,
- color_selected=COLOR_YELLOW,
- font=font_type_bold,
- font_color=COLOR_WHITE,
- font_size=14,
- font_size_title=35,
- menu_alpha=100,
- menu_color=COLOR_BLACK,
- menu_height=220,
- menu_width=int(WINDOW_SIZE[0]),
- onclose=main,
- option_shadow=False,
- title="",
- menu_color_title=COLOR_ORANGE,
- widget_alignment=pygameMenu.locals.ALIGN_LEFT,
- window_height=220,
- window_width=WINDOW_SIZE[0]
- )
- settings_menu.add_selector(MENU_GAME_LANG+":",
- [(MENU_GAME_LANG_EN, 'EN'),
- (MENU_GAME_LANG_ES, 'ES')],
- selector_id='language',
- default=int(set_language))
- settings_menu.add_selector(MENU_GAME_FULLSCREEN+":",
- [('OFF', 'OFF'),
- ('ON', 'ON')],
- selector_id='fullscreen',
- default=int(set_fullscreen))
- settings_menu.add_selector(MENU_GAME_MUSIC+":",
- [('OFF', 'OFF'),
- ('ON', 'ON')],
- selector_id='music',
- default=int(set_music))
- settings_menu.add_option(MENU_GAME_RETURN_SETTINGS, check_form_settings, align=pygameMenu.locals.ALIGN_CENTER)
- while True:
- settings_menu.mainloop()
- def check_form_settings():
- data = settings_menu.get_input_data()
- for k in data.keys():
- if k == "language": # set language
- set_language = data[k][1]
- elif k == "fullscreen": # set fullscreen
- set_fullscreen = data[k][1]
- else: # set music
- set_music = data[k][1]
- save_stored_settings(set_language, set_fullscreen, set_music) # store settings to menu.cfg
- main() # return back to main menu
- def save_stored_settings(set_language, set_fullscreen, set_music):
- f = open(menu_cfg, "r")
- menu_config = f.readlines()
- f.close()
- menuc = open(menu_cfg, "w")
- for conf in menu_config:
- if "LANGUAGE" in conf: # language
- menuc.write("LANGUAGE:"+str(set_language)+os.linesep)
- elif "FULLSCREEN" in conf: # screen size
- menuc.write("FULLSCREEN:"+str(set_fullscreen)+os.linesep)
- else: # music
- menuc.write("MUSIC:"+str(set_music))
- menuc.close()
- def main(test=False):
- global set_fullscreen
- global set_language
- global set_music
- global main_menu
- pygame.display.set_caption(CAPTION)
- clock = pygame.time.Clock()
- set_language, set_fullscreen, set_music = load_stored_settings()
- main_menu = pygameMenu.Menu(surface, # main menu
- bgfun=main_background,
- color_selected=COLOR_YELLOW,
- font=font_type,
- font_color=COLOR_BLACK,
- font_size=14,
- font_size_title=35,
- menu_alpha=100,
- menu_color=COLOR_GRAY,
- menu_height=1,
- menu_width=int(WINDOW_SIZE[0]),
- onclose=pygameMenu.events.EXIT,
- option_shadow=False,
- title=TITLE+":",
- menu_color_title=COLOR_ORANGE,
- window_height=1,
- window_width=WINDOW_SIZE[0]
- )
- main_menu.set_sound(sound, recursive=True) # set menu sounds
- while True:
- clock.tick(FPS)
- main_menu.mainloop(disable_loop=test)
- pygame.display.flip()
- if test == True:
- break
- def start_game():
- level0(surface, COLOR_WHITE, COLOR_BLACK, COLOR_BLUE, COLOR_GRAY, COLOR_YELLOW, COLOR_ORANGE, WINDOW_SIZE, set_language)
- def level0_login_background():
- None
- if __name__ == '__main__':
- main()
|