Example #1
0
    def __init__(self):
        self.personal_detail_fields = ["real_name", "address", "email", "password", "trusted_ips", "phone_number",
                                       "verified", "pending_messages"]
        self.stats_fields = ["win_streak", "loss_streak", "wins_total", "losses_total", "largest_loss_streak",
                             "largest_win_streak", "perfect_victory", "total_play_time_by_size", "total_moves_by_size",
                             "total_games_by_size", "iiq", "win_loss_ratio"]

        # Identification Information
        self.real_name = ""  # Name of the person associated with this account
        self.address = ""
        self.email = ""
        self.password = ""
        self.trusted_ips = {}
        self.phone_number = ""

        self.pending_messages = {}  # Dictionary containing message ID: message, timestamp
        self.postgame_messages = {}

        self.verified = False

        # Account information
        self.name = UsernameGenerator.generate_isogramic_username()  # Username of the user
        self.catchphrase = ""  # Phrase to show to those starting a game with you.

        # Cosmetic information
        self.theme = Theme()  # Theme the user has equipped
        self.avatar = Avatar()  # Link to avatar object, built from json, of course.

        # Play-stats
        self.last_active = 0
        self.win_streak = 0
        self.loss_streak = 0
        self.wins_total = 0
        self.losses_total = 0
        self.largest_win_streak = 0
        self.largest_loss_streak = 0
        self.perfect_victory = 0
        self.total_play_time_by_size = Profile.by_size(3, 17)
        self.total_moves_by_size = Profile.by_size(3, 17)
        self.total_games_by_size = Profile.by_size(3, 17)

        # Important Stats
        self.iiq = 2500  # Isogram Intelligence Quotient
        self.win_loss_ratio = 0

        self.level = 0  # Level
        self.experience = 0  # Total experience
        self.carousel_pages = "P"  # Order of pages on this player's carousel.
        self.game_pages = "LG"  # Order of pages on this player's game carousel, visible during matches.

        self.grams = 0  # Grams of stardust
        self.scoins = 0  # Star coins
        self.marques = 0  # "Sorry" tickets. Distributed to players upon unfortunate circumstances or at admin discretion.
                          # Redeemable 24 hours after distribution.
        self.pending_marques = {}

        self.rank = 0  # Default rank. 0 - Normal, 1 - Community Helper, 2 - Moderator, 3 - Admin
Example #2
0
 def __init__( self, theme ):
     self.theme = 2
     self.currentImage = -1
     self.nextImage = 0
     self.fadeTime = 2900
     self.lobbyControlAlign = CENTER
     self.lobbyControlFont = 'font'
     self.lobbyControlImgPos = ( .5, .55 )
     self.lobbyControlImgScale = .15
     self.lobbyControlPos = ( .5, .15 )
     self.lobbyControlScale = .0015
     self.lobbyDisabledColor = ( .6, .6, .6 )
     self.lobbyGameModeAlign = CENTER
     self.lobbyGameModeColor = Theme.hexToColor( '#2891a6' )
     self.lobbyGameModeFont = 'font'
     self.lobbyGameModePos = ( .115, .715 )
     self.lobbyGameModeScale = .0015
     self.lobbyHeaderColor = Theme.hexToColor( '#2891a6' )
     self.lobbyKeyboardImgPos = ( .8, .95 )
     self.lobbyKeyboardImgScale = .1
     self.lobbyOptionAlign = CENTER
     self.lobbyOptionColor = Theme.hexToColor( '#2891a6' )
     self.lobbyOptionFont = 'font'
     self.lobbyOptionPos = ( .5, .26 )
     self.lobbyOptionScale = .0015
     self.lobbyOptionSpace = .035
     self.lobbyPanelAvatarDimension = ( 0, 0 )
     self.lobbyPanelNameAlign = LEFT
     self.lobbyPanelNameFont = 'font'
     self.lobbyPanelNamePos = ( 0, 0 )
     self.lobbyPanelNameScale = .1
     self.lobbyPanelPos = ( .1, .24 )
     self.lobbyPanelSize = ( .15, .53 )
     self.lobbyPanelSpacing = .215
     self.lobbyPartPos = ( .5, .84 )
     self.lobbyPartScale = .094
     self.lobbySaveCharAlign = CENTER
     self.lobbySaveCharColor = Theme.hexToColor( '#2891a6' )
     self.lobbySaveCharFont = 'font'
     self.lobbySaveCharScale = .0015
     self.lobbySelectedColor = Theme.hexToColor( '#ffffff' )
     self.lobbySelectLength = 4
     self.lobbySubtitleText = _( 'CHOOSE YOUR CHARACTER' )
     self.lobbySubtitleTextAlign = CENTER
     self.lobbySubtitleTextFont = 'font'
     self.lobbySubtitleTextPos = ( .5, .715 )
     self.lobbySubtitleTextScale = .00098
     self.lobbyTitleText = _( 'LOBBY -' )
     self.lobbyTitleTextAlign = CENTER
     self.lobbyTitleTextFont = 'font'
     self.lobbyTitleTextPos = ( .05, .715 )
     self.lobbyTitleTextScale = .0015
Example #3
0
    def __init__( self, theme ):
        self.theme = theme

        self.partDiffControlAlign = LEFT
        self.partDiffControlFont = 'font'
        self.partDiffControlPos = ( .25, .25 )
        self.partDiffControlScale = .0015

        self.partDiffGameModeAlign = LEFT
        self.partDiffGameModeColor = Theme.hexToColor( '#2891a6' )
        self.partDiffGameModeFont = 'font'
        self.partDiffGameModePos = ( -5, 0 )
        self.partDiffGameModeScale = .0015
        self.partDiffHeaderColor = Theme.hexToColor( '#000000' )

        self.partDiffKeyboardImgPos = ( 0, 0 )
        self.partDiffKeyboardImgScale = .1

        self.partDiffOptionAlign = LEFT
        self.partDiffOptionColor = Theme.hexToColor( '#2891a6' )
        self.partDiffOptionFont = 'font'
        self.partDiffOptionPos = ( 0, 1 )
        self.partDiffOptionScale = .0015
        self.partDiffOptionSpace = 0

        self.partDiffPanelNameAlign = LEFT
        self.partDiffPanelNameFont = 'font'
        self.partDiffPanelNamePos = ( 0, 0 )
        self.partDiffPanelNameScale = .001
        self.partDiffPanelPos = ( .05, .05 )
        self.partDiffPanelSize = ( .05, .1 )
        self.partDiffPanelSpacing = .24

        # PART ICON

        self.partDiffPartPos = ( -0.352, 0 )
        self.partDiffPartScale = .035

        self.partDiffSelectedColor = Theme.hexToColor( '#ffffff' )

        self.partDiffSubtitleText = _( ' ' )
        self.partDiffSubtitleTextAlign = LEFT
        self.partDiffSubtitleTextFont = 'font'
        self.partDiffSubtitleTextPos = ( .5, .15 )
        self.partDiffSubtitleTextScale = .0015

        self.partDiffTitleText = _( 'SELECT PART+DIFFICULTY' )
        self.partDiffTitleTextAlign = LEFT
        self.partDiffTitleTextFont = 'font'
        self.partDiffTitleTextPos = ( .5, .95 )
        self.partDiffTitleTextScale = .002
Example #4
0
    def __init__(self, token: str, url: str):
        self.token = token
        self.url = url

        self.users_list = list()

        self.themes_list = list()
        themes_dict = load_json_data(themes_file)
        for name, data in themes_dict.items():
            new_theme = Theme()
            new_theme.set(name, data)
            self.themes_list.append(new_theme)

        self.edit_theme_users = list()
        self.edit_question_number_users = dict()
        self.edit_right_answers_number_users = list()
        self.users_test_dict = dict()
Example #5
0
 def from_json(self, json_text):
     self.real_name = json_text["real_name"]
     self.address = json_text["address"]
     self.email = json_text["email"]
     self.name = json_text["name"]
     self.catchphrase = json_text["catchphrase"]
     temp_theme = Theme()
     temp_theme.from_json(json_text["theme"])
     self.theme = temp_theme
     temp_avatar = Avatar()
     temp_avatar.from_json(json_text["avatar"])
     self.avatar = temp_avatar
     self.win_streak = json_text["win_streak"]
     self.loss_streak = json_text["loss_streak"]
     self.wins_total = json_text["wins_total"]
     self.losses_total = json_text["losses_total"]
     self.perfect_victory = json_text["perfect_victory"]
     self.total_play_time_by_size = json_text["total_play_time_by_size"]
     self.total_moves_by_size = json_text["total_moves_by_size"]
     self.total_games_by_size = json_text["total_games_by_size"]
     self.largest_loss_streak = json_text["largest_loss_streak"]
     self.largest_win_streak = json_text["largest_win_streak"]
     self.iiq = json_text["iiq"]
     self.win_loss_ratio = json_text["win_loss_ratio"]
     self.password = json_text["password"]
     self.trusted_ips = json_text["trusted_ips"]
     self.phone_number = json_text["phone_number"]
     self.last_active = json_text["last_active"]
     self.verified = json_text["verified"]
     self.level = json_text["level"]
     self.carousel_pages = json_text["carousel_pages"]
     self.game_pages = json_text["game_pages"]
     self.scoins = json_text["scoins"]
     self.grams = json_text["grams"]
     self.marques = json_text["marques"]
     self.pending_marques = json_text["pending_marques"]
     self.experience = json_text["experience"]
     self.rank = json_text["rank"]
Example #6
0
    def story(self,
              playerSprite_no,
              story,
              BGCOLOR=(0, 170, 255),
              speed=250,
              waitKey=True):

        self.DISPLAYSURF.fill(BGCOLOR)
        playerSprite = list(Player.CharacterSprites.values())[playerSprite_no]

        playerSprite = pygame.transform.scale(playerSprite, (150, 150))

        playerSprite1 = playerSprite.get_rect()
        playerSprite1.centerx = int(self.WINWIDTH / 2)
        playerSprite1.centery = int(self.WINHEIGHT / 2)

        self.DISPLAYSURF.blit(playerSprite, playerSprite1)

        boxImg = pygame.image.load('Images/dialogue/box150.png')
        boxImg1 = boxImg.get_rect()
        boxImg1.bottomleft = (0, self.WINHEIGHT)
        #self.DISPLAYSURF.blit(boxImg,boxImg1)
        pygame.display.update()

        Font = Theme.getStoryFont()
        for i in story:
            Sentence = ""
            for j in i.split(' '):
                Sentence = Sentence + ' ' + j
                self.DISPLAYSURF.blit(boxImg, boxImg1)
                line = Font.render(Sentence, 1, (255, 255, 0))
                lineRect = line.get_rect()
                lineRect.center = (int(self.WINWIDTH / 2), self.WINHEIGHT - 75)
                self.DISPLAYSURF.blit(line, lineRect)
                pygame.time.wait(speed)
                pygame.display.update()
            if waitKey:
                _ = self.waitKeyPressed()
Example #7
0
 def ingame(self, value):
     Theme.setvariable(self.id_member, "cust_ingame", value)
Example #8
0
 def ingame(self):
     return Theme.getvariable(self.id_member, "cust_ingame")
Example #9
0
    def __init__( 
        self,
        path,
        name,
        iniFile = False,
        ):

        Theme.__init__( self, path, name )

        #new
        self.menuPos = [0.5, 0.070000000000000007]
        self.povTarget = ( 0.0, 1.0, 3.0 )
        self.povOrigin = ( 0.0, 2.0, -3.5 )
        self.countdownPosX = 0.5
        self.countdownPosY = 0.30
        self.boardFade = 2

        artist_selected_color = '#ffffff'
        artist_text_color = '#2891a6'
        background_color = '#000000'
        bars_color = '#2891a6'
        base_color = '#2891a6'
        career_title_color = '#2891a6'
        character_create_font_color = '#2891a6'
        character_create_help_color = '#2891a6'
        character_create_select_color = '#ffffff'
        fail_completed_color = '#2891a6'
        fail_selected_color = '#ffffff'
        fail_text_color = '#2891a6'
        fret0_color = '#ffe788'
        fret1_color = '#ffe788'
        fret2_color = '#ffe788'
        fret3_color = '#ffe788'
        fret4_color = '#ffe788'
        fret5_color = '#2891a6'
        fretK_color = '#2891a6'
        fretS_color = '#2891a6'
        glow_color = '#2891a6'
        hopo_color = '#2891a6'
        hopo_indicator_active_color = '#2891a6'
        hopo_indicator_inactive_color = '#2891a6'
        ingame_stats_color = '#2891a6'
        key2_color = '#2891a6'
        key_color = '#2891a6'
        library_selected_color = '#ffffff'
        library_text_color = '#2891a6'
        loading_text_color = '#2891a6'
        menu_tip_text_color = '#2891a6'
        mesh_color = '#2891a6'
        opt_selected_color = '#ffffff'
        opt_text_color = '#2891a6'
        pause_selected_color = '#ffffff'
        pause_text_color = '#2891a6'
        rockmeter_score_color = '#2891a6'
        selected_color = '#ffffff'
        songlistcd_score_color = '#2891a6'
        songlist_score_color = '#2891a6'
        song_name_selected_color = '#ffffff'
        song_name_text_color = '#2891a6'
        song_rb2_diff_color = '#2891a6'
        spot_color = '#2891a6'
        star_fillup_color = '#2891a6'
        tracks_color = '#2891a6'
        vocal_glow_color = '#2891a6'
        vocal_glow_color_star = '#2891a6'
        vocal_lane_color = '#2891a6'
        vocal_lane_color_star = '#2891a6'
        vocal_shadow_color = '#2891a6'
        vocal_shadow_color_star = '#2891a6'

        self.shaderSolocolor = ( 1, 0.90588235294118, 0.53333333333333, 0.6 )
        self.fail_bkg_pos = [1, 1, .00035]
        self.fail_text_xPos = .5
        self.fail_text_yPos = .5
        self.fail_songname_xPos = .5
        self.fail_songname_yPos = .6

        self.result_score = [1, 1, .00035]
        self.result_star = [1, 1, .00035]
        self.result_song = [1, 1, .00035]
        self.result_song_form = .5
        self.result_song_text = "result_song_text"
        self.result_stats_part = [1, 1, .00035]
        self.result_stats_part_text = "result_stats_part_text"
        self.result_stats_name = [1, 1, .00035]
        self.result_stats_diff = [1, 1, .00035]
        self.result_stats_diff_text = "result_stats_diff_text"
        self.result_stats_accuracy = [1, 1, .00035]
        self.result_stats_accuracy_text = "result_stats_accuracy_text"
        self.result_stats_streak = [1, 1, .00035]
        self.result_stats_streak_text = "result_stats_streak_text"
        self.result_stats_notes = [1, 1, .00035]
        self.result_stats_notes_text = "result_stats_notes_text"
        self.result_cheats_info = [1, 1, .00035]
        self.result_cheats_numbers = [1, 1, .00035]
        self.result_cheats_percent = [1, 1, .00035]
        self.result_cheats_score = [1, 1, .00035]
        self.result_cheats_color = ( 1, 1, 1 )
        self.result_cheats_font = 'font'
        self.result_high_score_font = 'font'
        self.result_menu_x = 'font'
        self.result_menu_y = 'font'
        self.result_star_type = 1

        self.artist_selected_colorVar = \
            self.hexToColor( artist_selected_color )
        self.artist_text_colorVar = self.hexToColor( artist_text_color )
        self.avatarSelectAvX = .75
        self.avatarSelectAvY = .35
        self.avatarSelectWheelY = 0.0
        self.backgroundColor = self.hexToColor( background_color )
        self.barsColor = self.hexToColor( bars_color )
        self.baseColor = self.hexToColor( base_color )
        self.career_title_colorVar = self.hexToColor( career_title_color )
        self.characterCreateFontColor = \
            self.hexToColor( character_create_font_color )
        self.characterCreateHelpColor = \
            self.hexToColor( character_create_help_color )
        self.characterCreateHelpScale = 0.0009
        self.characterCreateHelpX = 0.5
        self.characterCreateHelpY = 0.72
        self.characterCreateOptionX = .75
        self.characterCreateScale = .0018
        self.characterCreateSelectColor = \
            self.hexToColor( character_create_select_color )
        self.characterCreateSpace = .045
        self.characterCreateX = .25
        self.characterCreateY = 0.15
        self.controlActivateFont = 'loadingFont'
        self.controlActivatePartSize = 22.000
        self.controlActivatePartX = .41
        self.controlActivateScale = .0018
        self.controlActivateSelectX = 0.5
        self.controlActivateSpace = .045
        self.controlActivateX = .645
        self.controlActivateY = .18
        self.controlCheckFont = 'loadingFont'
        self.controlCheckPartMult = 2.8
        self.controlCheckSpace = .23
        self.controlCheckTextY = .61
        self.controlCheckX = .16
        self.controlCheckY = .26
        self.controlDescriptionFont = 'font'
        self.controlDescriptionScale = .002
        self.controlDescriptionX = 0.5
        self.controlDescriptionY = .617
        self.displayAllGreyStars = False
        self.fail_bkg_pos = [0.5, 0.5, 1.000, 1.000]
        self.fail_completed_colorVar = \
            self.hexToColor( fail_completed_color )
        self.fail_selected_colorVar = \
            self.hexToColor( fail_selected_color )
        self.fail_songname_xPos = 0.5
        self.fail_songname_yPos = .35
        self.fail_text_colorVar = self.hexToColor( fail_text_color )
        self.fail_text_xPos = None
        self.fail_text_yPos = 0.40000000000000002
        self.fret_press = True
        self.glowColor = self.hexToColor( glow_color )
        self.hopoColor = self.hexToColor( hopo_color )
        self.hopoIndicatorActiveColor = \
            self.hexToColor( hopo_indicator_active_color )
        self.hopoIndicatorInactiveColor = \
            self.hexToColor( hopo_indicator_inactive_color )
        self.hopoIndicatorX = None
        self.hopoIndicatorY = None
        self.ingame_stats_colorVar = \
            self.hexToColorResults( ingame_stats_color )
        self.jurgTextPos = [1, 1, .00035]
        self.key2Color = self.hexToColor( key2_color )
        self.keyColor = self.hexToColor( key_color )
        self.keypos = [-0.09, -0.09, -0.09, -0.09, -0.09]
        self.killNoteColor = self.hexToColor( fretK_color )
        self.library_selected_colorVar = \
            self.hexToColor( library_selected_color )
        self.library_text_colorVar = self.hexToColor( library_text_color )
        self.loadingColor = self.hexToColor( loading_text_color )
        self.loadingFScale = 0.0015
        self.loadingLSpacing = 1
        self.loadingRMargin = 1.000
        self.loadingX = .5
        self.loadingY = .070000000000000007
        self.lobbyPanelAvatarDimension = ( 100.00, 55.00 )
        self.lobbyPreviewX = 0.69999999999999996
        self.lobbySelectFont = 'loadingFont'
        self.lobbySelectImageX = 0.255
        self.lobbySelectImageY = 0.335
        self.lobbySelectLength = 4
        self.lobbySelectScale = .0018
        self.lobbySelectSpace = 0.040000000000000001
        self.lobbySelectX = 0.40000000000000002
        self.lobbySelectY = 0.32
        self.lobbyTitleCharacterX = .26
        self.lobbyTitleCharacterY = 0.24
        self.lobbyTitleFont = 'font'
        self.lobbyTitleScale = 0.0024
        self.lobbyTitleX = 0.40000000000000002
        self.lobbyTitleY = 0.59999999999999998
        self.main_menu_scaleVar = 1
        self.main_menu_vspacingVar = 0.000000
        self.menuRB = True
        self.menuTipTextColor = \
            self.hexToColorResults( menu_tip_text_color )
        self.menuTipTextDisplay = True
        self.menuTipTextFont = 'font'
        self.menuTipTextScale = 0.001
        self.menuTipTextScrollMode = 0
        self.menuTipTextScrollSpace = .25
        self.menuTipTextY = .715
        self.menuX = 0.5
        self.menuY = 0.070000000000000007
        self.meshColor = self.hexToColor( mesh_color )
        self.oBarHScale = 0.69999999999999996
        self.opt_bkg_size = [0.5, 0.5, 1.000, 1.000]
        self.opt_selected_colorVar = self.hexToColor( opt_selected_color )
        self.opt_text_colorVar = self.hexToColor( opt_text_color )
        self.opt_text_xPos = None
        self.opt_text_yPos = None
        self.pause_bkg_pos = [0.5, 0.5, 1.000, 1.000]
        self.pause_selected_colorVar = \
            self.hexToColor( pause_selected_color )
        self.pause_text_colorVar = self.hexToColor( pause_text_color )
        self.pause_text_xPos = None
        self.pause_text_yPos = None
        self.povOriginX = 0
        self.povOriginY = 2
        self.povOriginZ = -3.5
        self.povTargetX = 0
        self.povTargetY = 1
        self.povTargetZ = 3
        self.power_up_name = None
        self.rbmenu = True

        self.result_menu_x = 0.40000000000000002
        self.result_menu_y = .2

        self.result_cheats_color = ( 1, 1, 1 )
        self.result_cheats_font = 'font'
        self.result_high_score_font = 'font'
        self.result_song_text = '- %s -'
        self.result_stats_accuracy_text = '%.1f%%'
        self.result_stats_diff_text = '  %s'
        self.result_stats_notes_text = '%s Hit'
        self.result_stats_part_text = '%s'
        self.result_stats_streak_text = '%d Streak'

        self.result_song = ( .35, .2, .0008, None )

        self.result_score = ( .35, .26, 0.0004 )
        self.result_stats_diff = ( 0.5, .26, 0.0016, None )
        self.result_stats_part = ( .65, .26, 0.0016, None )
        self.result_stats_notes = ( .35, .34, .0018, None )
        self.result_stats_accuracy = ( 0.5, .34, .0018, None )
        self.result_stats_streak = ( .65, .34, .0018, None )
        self.result_stats_name = ( 0.5, .42, 0.0025, None, None )
        self.result_star = ( 0.5, .30, 0.070000000000000007, 1.000 )

        self.result_cheats_info = ( .64, .26, .0013 )
        self.result_cheats_numbers = ( .64, .28, .0013 )
        self.result_cheats_percent = ( .64, 0.29999999999999999, .0013 )

        self.result_song_form = 3
        self.rockmeter_score_colorVar = \
            self.hexToColorResults( rockmeter_score_color )
        self.selectedColor = self.hexToColor( selected_color )
        self.shadowoffsetx = 0.0
        self.shadowoffsety = 0.0
        self.songInfoDisplayScale = .0008
        self.songInfoDisplayX = .05
        self.songInfoDisplayY = .05
        self.songlistcd_score_colorVar = \
            self.hexToColor( songlistcd_score_color )
        self.songListDisplay = 3
        self.songlist_score_colorVar = \
            self.hexToColor( songlist_score_color )
        self.songSelectSubmenuOffsetLines = 4
        self.songSelectSubmenuOffsetSpaces = 3
        self.songSelectSubmenuX = 0.10000000000000001
        self.songSelectSubmenuY = 0.075
        self.song_cdscore_Xpos = 0.59999999999999998
        self.song_cd_Xpos = 0.0
        self.song_listcd_cd_Xpos = .25
        self.song_listcd_cd_Ypos = 0.59999999999999998
        self.song_listcd_list_Xpos = 0.5
        self.song_listcd_score_xpos = 0.10000000000000001
        self.song_listcd_score_ypos = 0.59999999999999998
        self.song_listscore_Xpos = 0.69999999999999996
        self.song_list_Xpos = 0.29999999999999999
        self.song_name_selected_colorVar = \
            self.hexToColor( song_name_selected_color )
        self.song_name_text_colorVar = \
            self.hexToColor( song_name_text_color )
        self.song_rb2_diff_colorVar = \
            self.hexToColor( song_rb2_diff_color )
        self.noteColors = [self.hexToColor( fret0_color ), self.hexToColor( fret1_color ), self.hexToColor( fret2_color ), self.hexToColor( fret3_color ), self.hexToColor( fret4_color ), self.hexToColor( fret5_color )]
        self.spNoteColor = self.hexToColor( fretS_color )
        self.spotColor = self.hexToColor( spot_color )
        self.starFillupCenterX = 139
        self.starFillupCenterY = 151
        self.starFillupColor = self.hexToColor( star_fillup_color )
        self.starFillupInRadius = 121
        self.starFillupOutRadius = 138
        self.submenuScale['advsettingstext10'] = 1
        self.submenuScale['careerfailtext4'] = 0.60
        self.submenuScale['careerpausetext5'] = 0.9
        self.submenuScale['careerpausetext6'] = 1
        self.submenuScale['failtext3'] = 0.55
        self.submenuScale['gameresulttext3'] = 0.55
        self.submenuScale['multiplayertext3'] = 0.55
        self.submenuScale['multiplayertext4'] = 0.60
        self.submenuScale['multiplayertext7'] = 1
        self.submenuScale['pausetext5'] = 0.80
        self.submenuScale['pausetext6'] = 1
        self.submenuScale['setlisttext8'] = 1
        self.submenuScale['settingstext9'] = 1
        self.submenuScale['solotext2'] = 0.5
        self.submenuScale['trainingtext2'] = 0.5
        self.submenuVSpace['advsettingstext10'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['careerfailtext4'] = 0.00000000000000000000000000000000000000
        self.submenuVSpace['careerpausetext5'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['careerpausetext6'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['failtext3'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['gameresulttext3'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['multiplayertext3'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['multiplayertext4'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['multiplayertext7'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['pausetext5'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['pausetext6'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['setlisttext8'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['settingstext9'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['solotext2'] = 0.0000000000000000000000000000000000000
        self.submenuVSpace['trainingtext2'] = 0.0000000000000000000000000000000000000
        self.submenuX['advsettingstext10'] = 0.5
        self.submenuX['careerfailtext4'] = 0.5
        self.submenuX['careerpausetext5'] = 0.5
        self.submenuX['careerpausetext6'] = 0.5
        self.submenuX['failtext3'] = 0.5
        self.submenuX['gameresulttext3'] = 0.5
        self.submenuX['multiplayertext3'] = 0.5
        self.submenuX['multiplayertext4'] = 0.5
        self.submenuX['multiplayertext7'] = 0.5
        self.submenuX['pausetext5'] = 0.5
        self.submenuX['pausetext6'] = 0.5
        self.submenuX['setlisttext8'] = 0.5
        self.submenuX['settingstext9'] = 0.5
        self.submenuX['solotext2'] = 0.5
        self.submenuX['trainingtext2'] = 0.5
        self.submenuY['advsettingstext10'] = 0.070000000000000007
        self.submenuY['careerfailtext4'] = 0.070000000000000007
        self.submenuY['careerpausetext5'] = 0.070000000000000007
        self.submenuY['careerpausetext6'] = 0.070000000000000007
        self.submenuY['failtext3'] = 0.070000000000000007
        self.submenuY['gameresulttext3'] = 0.070000000000000007
        self.submenuY['multiplayertext3'] = 0.070000000000000007
        self.submenuY['multiplayertext4'] = 0.070000000000000007
        self.submenuY['multiplayertext7'] = 0.070000000000000007
        self.submenuY['pausetext5'] = 0.070000000000000007
        self.submenuY['pausetext6'] = 0.070000000000000007
        self.submenuY['setlisttext8'] = 0.070000000000000007
        self.submenuY['settingstext9'] = 0.070000000000000007
        self.submenuY['solotext2'] = 0.070000000000000007
        self.submenuY['trainingtext2'] = 0.070000000000000007
        self.sub_menu_xVar = 0.5
        self.sub_menu_yVar = 0.070000000000000007
        self.threeDspin = True
        self.tracksColor = self.hexToColor( tracks_color )
        self.twoDkeys = False
        self.twoDnote = False
        self.use_fret_colors = False
        self.use_solo_submenu = True
        self.versiontag = False
        self.versiontagposX = 0.93
        self.versiontagScale = 0.08
        self.versiontagposY = 0.15
        self.vocalCircularFillup = True
        self.vocalFillupCenterX = 139
        self.vocalFillupCenterY = 151
        self.vocalFillupColor = self.hexToColorResults( '#2891a6' )
        self.vocalFillupFactor = 300.000
        self.vocalFillupInRadius = 25
        self.vocalFillupOutRadius = 139
        self.vocalGlowColor = self.hexToColorResults( vocal_glow_color )
        self.vocalGlowColorStar = \
            self.hexToColorResults( vocal_glow_color_star )
        self.vocalGlowFade = 0.59999999999999998
        self.vocalGlowSize = .008
        self.vocalLaneColor = self.hexToColorResults( vocal_lane_color )
        self.vocalLaneColorStar = \
            self.hexToColorResults( vocal_lane_color_star )
        self.vocalLaneSize = .0008
        self.vocalMeterSize = 45.000
        self.vocalMeterX = 0.5
        self.vocalMeterY = .75
        self.vocalMultX = 0.5
        self.vocalMultY = .8
        self.vocalPowerX = 0.5
        self.vocalPowerY = .8
        self.vocalShadowColor = \
            self.hexToColorResults( vocal_shadow_color )
        self.vocalShadowColorStar = \
            self.hexToColorResults( vocal_shadow_color_star )

        self.loadingPhrase = [
            '',
            "I'm an instant star. Just add water and stir. - David Bowie"
                ,
            '',
            'Forget all that macho shit, and learn how to play guitar. - John Mellencamp'
                ,
            'Time you enjoy wasting, was not wasted. - John Lennon',
            'Turn off your cheats already!',
            "I don't know anything about music, In my line you don't have to. - Elvis Presley"
                ,
            '',
            'Onstage, I make love to 25,000 people, then I go home alone. - Janis Joplin'
                ,
            "I've been imitated so well I've heard people copy my mistakes. - Jimi Hendrix"
                ,
            "I'm just a musical prostitute, my dear. - Freddie Mercury"
                ,
            '',
            'The worst crime is faking it. - Kurt Cobain',
            '',
            ]

        self.themeLobby = self.loadThemeModule( 'CustomLobby' )
        self.setlist = self.loadThemeModule( 'CustomSetlist' )
        self.partDiff = self.loadThemeModule( 'CustomParts' )
Example #10
0
    def Selection(self, theme_no=0, playerSprite_no=0, themeSelect=True):
        themelevel = Level("level/themeLevel.txt")
        BGCOLOR = (0, 170, 255)
        self.DISPLAYSURF.fill(BGCOLOR)
        mapSurf = self.drawMap(themelevel.getCurLevelObj(),
                               Theme.Themes[theme_no])
        mapSurf = self.drawCharacter(
            mapSurf,
            list(Player.CharacterSprites.values())[playerSprite_no],
            themelevel.getCurLevelObj()['Start'])
        Font = Theme.getTitleFont()

        if themeSelect:
            themeText = Font.render('Select Theme', 1, (25, 25, 25))
        else:
            themeText = Font.render('Select Character', 1, (25, 25, 25))
        themeTextRect = themeText.get_rect()
        themeTextRect.center = (self.WINWIDTH / 2, 90)
        self.DISPLAYSURF.blit(themeText, themeTextRect)

        Font2 = Theme.getInfoFont()
        #text below selection
        belowText = Font2.render('<<- use Arrow keys to change ->>', 1,
                                 (0, 0, 0))
        belowTextRect = belowText.get_rect()
        belowTextRect.center = (self.WINWIDTH / 2, self.WINHEIGHT - 150)
        self.DISPLAYSURF.blit(belowText, belowTextRect)

        belowText2 = Font2.render('[Press Enter to select]', 1, (0, 0, 0))
        belowTextRect2 = belowText2.get_rect()
        belowTextRect2.center = (self.WINWIDTH / 2, self.WINHEIGHT - 120)
        self.DISPLAYSURF.blit(belowText2, belowTextRect2)

        mapSurfRect = mapSurf.get_rect()
        mapSurfRect.center = (self.WINWIDTH / 2, self.WINHEIGHT / 2)
        self.DISPLAYSURF.blit(mapSurf, mapSurfRect)

        pygame.display.update()

        while True:
            Move = None
            for event in pygame.event.get():
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
                elif event.type == KEYDOWN:
                    KeyPressed = True
                    if event.key == K_LEFT or event.key == K_DOWN:
                        if themeSelect:
                            theme_no = (theme_no + 1) % len(Theme.Themes)
                        playerSprite_no = (playerSprite_no + 1) % len(
                            Player.CharacterSprites)
                    elif event.key == K_RIGHT or event.key == K_UP:
                        if themeSelect:
                            theme_no = (theme_no + 1) % len(Theme.Themes)
                        playerSprite_no = (playerSprite_no + 1) % len(
                            Player.CharacterSprites)
                    elif event.key == K_ESCAPE:
                        pygame.quit()
                        sys.exit()
                    elif event.key == K_RETURN:
                        return theme_no, playerSprite_no

                    mapSurf = self.drawMap(themelevel.getCurLevelObj(),
                                           Theme.Themes[theme_no])
                    mapSurf = self.drawCharacter(
                        mapSurf,
                        list(
                            Player.CharacterSprites.values())[playerSprite_no],
                        themelevel.getCurLevelObj()['Start'])

                    mapSurfRect = mapSurf.get_rect()
                    mapSurfRect.center = (self.WINWIDTH / 2,
                                          self.WINHEIGHT / 2)
                    self.DISPLAYSURF.blit(mapSurf, mapSurfRect)
                    pygame.display.update()
Example #11
0
 def __init__(self, path, name, iniFile = False):
   Theme.__init__(self, path, name)
   self.songListDisplay = 3
   self.doNecksRender = False
   self.loadingPhrase = ["Loading"]
Example #12
0
opts.ncolors = int(sys.argv[2])
opts.themeGtk2 = (sys.argv[3])
opts.themeGtk3 = (sys.argv[4])

userhome = os.path.expanduser("~")
nscdetheme = "NsCDE"
# nscdetheme="NsCDE-" + palettefile

if os.path.exists(userhome + "/.NsCDE/palettes/" + palettefile + ".dp"):
    opts.currentpalettefile = (userhome + "/.NsCDE/palettes/" + palettefile +
                               ".dp")
elif os.path.exists(nscde_root + "/share/palettes/" + palettefile + ".dp"):
    opts.currentpalettefile = (nscde_root + "/share/palettes/" + palettefile +
                               ".dp")
elif os.path.exists(palettefile):
    opts.currentpalettefile = palettefile
    # nscdetheme="NsCDE-" + os.path.basename(nscdetheme.replace(".dp", ""))
else:
    print('Palette not found: ' + palettefile)
    sys.exit()

Globals.themedir = nscde_root + "/share/templates/integration/gtk2_gtk3_qt"
Globals.userthemedir = os.path.join(userhome, '.themes', nscdetheme)
Globals.themesrcdir = Globals.themedir
Globals.palettedir = os.path.join(Globals.themedir, 'palettes')

theme = Theme(opts)
Globals.colorshash = readMotifColors2(opts.ncolors, opts.currentpalettefile)
theme.initTheme()
theme.updateThemeNow()
Example #13
0
class Profile:

    def __init__(self):
        self.personal_detail_fields = ["real_name", "address", "email", "password", "trusted_ips", "phone_number",
                                       "verified", "pending_messages"]
        self.stats_fields = ["win_streak", "loss_streak", "wins_total", "losses_total", "largest_loss_streak",
                             "largest_win_streak", "perfect_victory", "total_play_time_by_size", "total_moves_by_size",
                             "total_games_by_size", "iiq", "win_loss_ratio"]

        # Identification Information
        self.real_name = ""  # Name of the person associated with this account
        self.address = ""
        self.email = ""
        self.password = ""
        self.trusted_ips = {}
        self.phone_number = ""

        self.pending_messages = {}  # Dictionary containing message ID: message, timestamp
        self.postgame_messages = {}

        self.verified = False

        # Account information
        self.name = UsernameGenerator.generate_isogramic_username()  # Username of the user
        self.catchphrase = ""  # Phrase to show to those starting a game with you.

        # Cosmetic information
        self.theme = Theme()  # Theme the user has equipped
        self.avatar = Avatar()  # Link to avatar object, built from json, of course.

        # Play-stats
        self.last_active = 0
        self.win_streak = 0
        self.loss_streak = 0
        self.wins_total = 0
        self.losses_total = 0
        self.largest_win_streak = 0
        self.largest_loss_streak = 0
        self.perfect_victory = 0
        self.total_play_time_by_size = Profile.by_size(3, 17)
        self.total_moves_by_size = Profile.by_size(3, 17)
        self.total_games_by_size = Profile.by_size(3, 17)

        # Important Stats
        self.iiq = 2500  # Isogram Intelligence Quotient
        self.win_loss_ratio = 0

        self.level = 0  # Level
        self.experience = 0  # Total experience
        self.carousel_pages = "P"  # Order of pages on this player's carousel.
        self.game_pages = "LG"  # Order of pages on this player's game carousel, visible during matches.

        self.grams = 0  # Grams of stardust
        self.scoins = 0  # Star coins
        self.marques = 0  # "Sorry" tickets. Distributed to players upon unfortunate circumstances or at admin discretion.
                          # Redeemable 24 hours after distribution.
        self.pending_marques = {}

        self.rank = 0  # Default rank. 0 - Normal, 1 - Community Helper, 2 - Moderator, 3 - Admin

    def to_json(self, hide_personal_details=False, just_stats=False):
        return_json = {
            'verified': self.verified,
            'last_active': self.last_active,
            'real_name': self.real_name,
            'phone_number': self.phone_number,
            'address': self.address,
            'email': self.email,
            'name': self.name,
            'catchphrase': self.catchphrase,
            'theme': self.theme.to_json(),
            'avatar': self.avatar.to_json(),
            'win_streak': self.win_streak,
            'loss_streak': self.loss_streak,
            'wins_total': self.wins_total,
            'losses_total': self.losses_total,
            'largest_loss_streak': self.largest_loss_streak,
            'largest_win_streak': self.largest_win_streak,
            'perfect_victory': self.perfect_victory,
            'total_play_time_by_size': self.total_play_time_by_size,
            'total_moves_by_size': self.total_moves_by_size,
            'total_games_by_size': self.total_games_by_size,
            'iiq': self.iiq,
            'win_loss_ratio': self.win_loss_ratio,
            'password': self.password,
            'trusted_ips': self.trusted_ips,
            'level': self.level,
            'carousel_pages': self.carousel_pages,
            'game_pages': self.game_pages,
            'grams': self.grams,
            'scoins': self.scoins,
            'marques': self.marques,
            'pending_marques': self.pending_marques,
            'experience': self.experience,
            'rank': self.rank
        }
        if hide_personal_details:
            for entry in self.personal_detail_fields:
                return_json.pop(entry, None)
        if just_stats:
            for entry in return_json.keys():
                if entry not in self.stats_fields:
                    return_json.pop(entry, None)

        return return_json

    @staticmethod
    def by_size(start, end):
        return_dict = {}
        for x in xrange(start, end+1):
            return_dict[x] = 0
        return return_dict

    def from_json(self, json_text):
        self.real_name = json_text["real_name"]
        self.address = json_text["address"]
        self.email = json_text["email"]
        self.name = json_text["name"]
        self.catchphrase = json_text["catchphrase"]
        temp_theme = Theme()
        temp_theme.from_json(json_text["theme"])
        self.theme = temp_theme
        temp_avatar = Avatar()
        temp_avatar.from_json(json_text["avatar"])
        self.avatar = temp_avatar
        self.win_streak = json_text["win_streak"]
        self.loss_streak = json_text["loss_streak"]
        self.wins_total = json_text["wins_total"]
        self.losses_total = json_text["losses_total"]
        self.perfect_victory = json_text["perfect_victory"]
        self.total_play_time_by_size = json_text["total_play_time_by_size"]
        self.total_moves_by_size = json_text["total_moves_by_size"]
        self.total_games_by_size = json_text["total_games_by_size"]
        self.largest_loss_streak = json_text["largest_loss_streak"]
        self.largest_win_streak = json_text["largest_win_streak"]
        self.iiq = json_text["iiq"]
        self.win_loss_ratio = json_text["win_loss_ratio"]
        self.password = json_text["password"]
        self.trusted_ips = json_text["trusted_ips"]
        self.phone_number = json_text["phone_number"]
        self.last_active = json_text["last_active"]
        self.verified = json_text["verified"]
        self.level = json_text["level"]
        self.carousel_pages = json_text["carousel_pages"]
        self.game_pages = json_text["game_pages"]
        self.scoins = json_text["scoins"]
        self.grams = json_text["grams"]
        self.marques = json_text["marques"]
        self.pending_marques = json_text["pending_marques"]
        self.experience = json_text["experience"]
        self.rank = json_text["rank"]

    def set_real_name(self, newname):
        self.real_name = newname

    def get_real_name(self):
        return self.real_name

    def set_address(self, naddress):
        self.address = naddress

    def get_address(self):
        return self.address

    def set_email(self, nemail):
        self.email = nemail

    def get_email(self):
        return self.email

    def set_account_name(self, naname):
        self.name = naname

    def get_account_name(self):
        return self.name

    def set_catchphrase(self, ncatchphrase):
        self.catchphrase = ncatchphrase

    def get_catchphrase(self):
        return self.catchphrase

    def set_theme(self, ntheme):
        self.theme = ntheme

    def get_theme(self):
        return self.theme

    def set_avatar(self, navatar):
        self.avatar = navatar

    def get_avatar(self):
        return self.avatar

    def set_win_streak(self, nwin):
        self.win_streak = nwin

    def get_win_streak(self):
        return self.win_streak

    def set_loss_streak(self, nloss):
        self.loss_streak = nloss

    def get_loss_streak(self):
        return self.loss_streak

    def set_wins_total(self, nwins):
        self.wins_total = nwins

    def get_wins_total(self):
        return self.wins_total

    def set_losses_total(self, nlosses):
        self.losses_total = nlosses

    def get_losses_total(self):
        return self.losses_total

    def set_perfect_victories(self, npvict):
        self.perfect_victory = npvict

    def get_perfect_victories(self):
        return self.perfect_victory

    def set_iiq(self, niiq):
        self.iiq = niiq

    def get_iiq(self):
        return self.iiq

    def set_win_loss_ratio(self, nwlr):
        self.win_loss_ratio = nwlr

    def get_win_loss_ratio(self):
        return self.win_loss_ratio

    def get_total_play_time_by_size(self):
        return self.total_play_time_by_size

    def set_total_play_time_by_size(self, dict):
        self.total_play_time_by_size = dict

    def get_total_games_by_size(self):
        return self.total_games_by_size

    def set_total_games_by_size(self, dict):
        self.total_games_by_size = dict

    def set_total_moves_by_size(self, dict):
        self.total_moves_by_size = dict

    def get_total_moves_by_size(self):
        return self.total_moves_by_size

    def set_password(self, passw):
        self.password = passw

    def get_password(self):
        return self.password

    def get_trusted_ips(self):
        return self.trusted_ips

    def set_trusted_ips(self, tips):
        self.trusted_ips = tips

    def get_phone_number(self):
        return self.phone_number

    def set_phone_number(self, phone):
        self.phone_number = phone

    def set_last_active(self, time):
        self.last_active = time

    def get_last_active(self):
        return self.last_active

    def get_verified(self):
        return self.verified

    def set_verified(self, bool):
        self.verified = bool

    def get_pending_messages(self):
        return self.pending_messages

    def get_postgame_messages(self):
        return self.postgame_messages

    def set_largest_loss_streak(self, nll):
        self.largest_loss_streak = nll

    def get_largest_loss_streak(self):
        return self.largest_loss_streak

    def set_largest_win_streak(self, nww):
        self.largest_win_streak = nww

    def get_largest_win_streak(self):
        return self.largest_win_streak

    def clear_pending_messages(self):
        self.pending_messages.clear()

    def add_server_message(self, string_message, is_json=False):
        largest_key = 0
        for key in self.pending_messages.keys():
            if key > largest_key:
                largest_key = key
        self.pending_messages[largest_key + 1] = {
            "message": string_message,
            "timestamp": time.time(),
            "is_json": is_json
        }

    def clear_postgame_messages(self):
        self.postgame_messages.clear()

    def add_postgame_message(self, string_message, is_json=False):
        largest_key = 0
        for key in self.postgame_messages.keys():
            if key > largest_key:
                largest_key = key
        self.postgame_messages[largest_key + 1] = {
            "message": string_message,
            "timestamp": time.time(),
            "is_json": is_json
        }

    def get_level(self):
        return self.level

    def set_level(self, level):
        self.level = level

    def get_carousel_pages(self):
        return self.carousel_pages

    def set_carousel_pages(self, target):
        self.carousel_pages = target

    def get_game_pages(self):
        return self.game_pages

    def set_game_pages(self, target):
        self.game_pages = target

    def set_scoins(self, scoins):
        self.scoins = scoins

    def get_scoins(self):
        return self.scoins

    def set_grams(self, gram):
        self.grams = gram

    def get_grams(self):
        return self.grams

    def get_marques(self):
        return self.marques

    def set_marques(self, newmarques):
        self.marques = newmarques

    def get_pending_marques(self):
        return self.pending_marques

    def set_pending_marques(self, newpend):
        self.pending_marques = newpend

    def distribute_marques(self, amount=1):
        self.pending_marques[time.time()] = amount

    def get_experience(self):
        return self.experience

    def set_experience(self, amount):
        self.experience = amount

    def get_rank(self):
        return self.rank

    def set_rank(self, newrank):
        self.rank = newrank
Example #14
0
 def private_auth_key(self):
     return Theme.getvariable(self.id_member, "cust_privat")
Example #15
0
 def public_auth_key(self):
     return Theme.getvariable(self.id_member, "cust_public")
Example #16
0
    def __init__(
        self,
        path,
        name,
        iniFile=False,
    ):

        Theme.__init__(self, path, name)

        #main menu
        self.menuPos = [0.235, 0.75]
        self.main_menu_vspacingVar = 0.065
        self.main_menu_scaleVar = 0.6
        self.use_solo_submenu = False

        #pov
        self.neckLength = 6.5
        self.neckWidth = 3.23
        self.povTarget = [0.0, 1.0, 2.35]
        self.povOrigin = [0.0, 3.4, -3.9]
        # self.povTargetX = 0.0
        # self.povTargetY = 1
        # self.povTargetZ = 2.35
        # self.povOriginX = 0.0
        # self.povOriginY = 3.4
        # self.povOriginZ = -3.9

        self.povIntroAnimation = "rockband"

        #3d fret settings
        # self.keyrot = [4.00, 2.00, 0.00, -2.00, -4.00]
        # self.keypos = [0.04, 0.01, 0.00, 0.01, 0.04]
        self.twoDkeys = True
        self.twoDnote = True

        self.noteTailSpeedMulti = 2.5

        #hitglows/hit images
        self.hitFlameBlackRemove = False
        self.hitFlameSize = .19
        self.holdFlameSize = .19
        self.hitFlamePos = (0, 1.15)
        self.holdFlamePos = (0, .4)
        self.HitFlameFrameLimit = 26
        self.hitFlameRotation = (180, 0, 1, 0)
        self.hitGlowsRotation = (180, 0, 1, 0)
        self.hitGlowOffset = (.095, .025, .02, .025, .095)
        self.hitFlameOffset = (.075, .05, .025, .05, .075)

        #loading
        self.loadingY = 20
        self.loadingX = 20
        self.loadingPhrase = ["hi"]

        self.fpsRenderPos = (0.15, .055)

        #setlist
        self.songListDisplay = 3
        self.songSelectSubmenuX = 0.5
        self.songSelectSubmenuY = 0.075

        self.setlist = self.loadThemeModule('CustomSetlist')
Example #17
0
    def runLevel(self, levelObj, theme_no=0, playerSprite_no=0):

        #set font and theme
        DisplayFont = Theme.getInfoFont()
        selectedTheme, selectedPlayer = Theme.Themes[theme_no], list(
            Player.CharacterSprites.values())[playerSprite_no]

        #get level no and total levels in level_no tuple
        level_no = self.level.levelInfo()
        MapRefresh = True
        LevelCompleted = False

        #initialize all current level ghosts with speeds
        cur_ghosts = []

        for i in levelObj['Ghosts']:
            if i['type'] == 'V':
                tmpGhost = Ghost(i, 1.0, len(levelObj['map']))
            else:
                tmpGhost = Ghost(i, 1.0, len(levelObj['map'][0]))
            cur_ghosts.append(tmpGhost)
            tmpGhost.getinfo()

        self.DISPLAYSURF.fill(Theme.Colors['LIGHTBLUE'])

        levelSurf = DisplayFont.render('Level %s of %s' % level_no, 1,
                                       Theme.Colors['BLACK'])
        levelRect = levelSurf.get_rect()
        levelRect.bottomleft = (20, self.WINHEIGHT - 35)
        self.DISPLAYSURF.blit(levelSurf, levelRect)

        mapSurf = self.drawMap(levelObj, selectedTheme)
        mapSurf = self.drawCharacter(mapSurf, selectedPlayer,
                                     levelObj['Start'])
        mapSurfRect = mapSurf.get_rect()
        mapSurfRect.center = (self.WINWIDTH / 2, self.WINHEIGHT / 2)
        self.DISPLAYSURF.blit(mapSurf, mapSurfRect)
        pygame.display.update()
        self.Clock.tick()
        time_passed = 0.0
        levelPass = True
        #main game loop for level
        while not LevelCompleted:
            Move = None
            KeyPressed = True

            for event in pygame.event.get():
                if event.type == QUIT:
                    pygame.quit()
                    sys.exit()
                elif event.type == KEYDOWN:
                    KeyPressed = True
                    if event.key == K_LEFT:
                        Move = 'left'
                    elif event.key == K_RIGHT:
                        Move = 'right'
                    elif event.key == K_UP:
                        Move = 'up'
                    elif event.key == K_DOWN:
                        Move = 'down'
                    elif event.key == K_ESCAPE:
                        pygame.quit()
                        sys.exit()
            self.DISPLAYSURF.fill(Theme.Colors['LIGHTBLUE'])
            timeSec = time_passed / 1000.0
            if Move != None and not LevelCompleted:
                moved, levelObj, LevelCompleted = self.level.makeMove(Move)
            #print(moved,levelObj,LevelCompleted)
            mapSurf = self.drawMap(levelObj, selectedTheme)
            mapSurf = self.drawCharacter(mapSurf, selectedPlayer,
                                         levelObj['Start'])

            #check each ghost if moved and get new position
            for ghst in cur_ghosts:
                mvd, pos = ghst.Haunt(timeSec)
                ghstSprite = ghst.getSprite()
                mapSurf = self.drawCharacter(mapSurf, ghstSprite, pos)
                if pos == list(levelObj['Start']):
                    LevelCompleted = True
                    levelPass = False
                    self.GameOver.play()

            levelSurf = DisplayFont.render('Level %s of %s' % level_no, 1,
                                           Theme.Colors['BLACK'])
            levelRect = levelSurf.get_rect()
            levelRect.bottomleft = (20, self.WINHEIGHT - 35)
            self.DISPLAYSURF.blit(levelSurf, levelRect)

            timeText = DisplayFont.render('Time %s' % int(timeSec), 1,
                                          Theme.Colors['BLACK'])
            timeRect = timeText.get_rect()
            timeRect.topright = (self.WINWIDTH - 20, 35)
            self.DISPLAYSURF.blit(timeText, timeRect)

            #mapSurf = pygame.transform.scale(mapSurf,(400,500))
            mapSurfRect = mapSurf.get_rect()
            mapSurfRect.center = (self.WINWIDTH / 2, self.WINHEIGHT / 2)
            self.DISPLAYSURF.blit(mapSurf, mapSurfRect)
            pygame.display.update()

            time_passed += self.Clock.tick()
        return levelPass
Example #18
0
 def public_auth_key(self, value):
     Theme.setvariable(self.id_member, "cust_public", value)
Example #19
0
    def __init__(self, config=None):

        Log.debug("GameEngine class init (GameEngine.py)...")
        self.mainMenu = None  #placeholder for main menu object - to prevent reinstantiation

        self.currentScene = None

        self.versionString = version  #stump: other version stuff moved to allow full version string to be retrieved without instantiating GameEngine
        self.uploadVersion = "%s-4.0" % Version.PROGRAM_NAME  #akedrou - the version passed to the upload site.

        self.dataPath = Version.dataPath()
        Log.debug(self.versionString + " starting up...")
        Log.debug("Python version: " + sys.version.split(' ')[0])
        Log.debug("Pygame version: " + str(pygame.version.ver))
        Log.debug("PyOpenGL version: " + OpenGL.__version__)
        Log.debug("Numpy version: " + np.__version__)
        Log.debug("PIL version: " + Image.VERSION)
        Log.debug("sys.argv: " + repr(sys.argv))
        Log.debug("os.name: " + os.name)
        Log.debug("sys.platform: " + sys.platform)
        if os.name == 'nt':
            import win32api
            Log.debug("win32api.GetVersionEx(1): " +
                      repr(win32api.GetVersionEx(1)))
        elif os.name == 'posix':
            Log.debug("os.uname(): " + repr(os.uname()))
        """
        Constructor.
        @param config:  L{Config} instance for settings
        """

        self.tutorialFolder = "tutorials"

        if not config:
            config = Config.load()

        self.config = config

        fps = self.config.get("video", "fps")

        self.tasks = []
        self.frameTasks = []
        self.fps = fps
        self.currentTask = None
        self.paused = []
        self.running = True
        self.clock = pygame.time.Clock()

        self.title = self.versionString
        self.restartRequested = False

        # evilynux - Check if theme icon exists first, then fallback on FoFiX icon.
        themename = self.config.get("coffee", "themename")
        themeicon = os.path.join(Version.dataPath(), "themes", themename,
                                 "icon.png")
        fofixicon = os.path.join(Version.dataPath(), "fofix_icon.png")
        icon = None
        if os.path.exists(themeicon):
            icon = themeicon
        elif os.path.exists(fofixicon):
            icon = fofixicon

        self.video = Video(self.title, icon)
        if self.config.get("video", "disable_screensaver"):
            self.video.disableScreensaver()

        self.audio = Audio()
        self.frames = 0
        self.fpsEstimate = 0
        self.priority = self.config.get("engine", "highpriority")
        self.show_fps = self.config.get("video", "show_fps")
        self.advSettings = self.config.get("game", "adv_settings")
        self.restartRequired = False
        self.quicksetRestart = False
        self.quicksetPerf = self.config.get("quickset", "performance")
        self.scrollRate = self.config.get("game", "scroll_rate")
        self.scrollDelay = self.config.get("game", "scroll_delay")

        Log.debug("Initializing audio.")
        frequency = self.config.get("audio", "frequency")
        bits = self.config.get("audio", "bits")
        stereo = self.config.get("audio", "stereo")
        bufferSize = self.config.get("audio", "buffersize")
        self.audio.open(frequency=frequency,
                        bits=bits,
                        stereo=stereo,
                        bufferSize=bufferSize)

        self.cmdPlay = 0
        self.cmdMode = None
        self.cmdDiff = None
        self.cmdPart = None

        self.gameStarted = False
        self.world = None

        self.audioSpeedFactor = 1.0

        Log.debug("Initializing video.")
        #myfingershurt: ensuring windowed mode starts up in center of the screen instead of cascading positions:
        os.environ['SDL_VIDEO_WINDOW_POS'] = 'center'

        width, height = [
            int(s) for s in self.config.get("video", "resolution").split("x")
        ]
        fullscreen = self.config.get("video", "fullscreen")
        multisamples = self.config.get("video", "multisamples")
        self.video.setMode((width, height),
                           fullscreen=fullscreen,
                           multisamples=multisamples)
        Log.debug("OpenGL version: " + glGetString(GL_VERSION))
        Log.debug("OpenGL vendor: " + glGetString(GL_VENDOR))
        Log.debug("OpenGL renderer: " + glGetString(GL_RENDERER))
        Log.debug("OpenGL extensions: " +
                  ' '.join(sorted(glGetString(GL_EXTENSIONS).split())))

        if self.video.default:
            self.config.set("video", "fullscreen", False)
            self.config.set("video", "resolution", "800x600")

        if self.config.get("video", "shader_use"):
            shaders.set(os.path.join(Version.dataPath(), "shaders"))

        # Enable the high priority timer if configured
        if self.priority:
            Log.debug("Enabling high priority timer.")
            self.fps = 0  # High priority

        # evilynux - This was generating an error on the first pass (at least under
        #            GNU/Linux) as the Viewport was not set yet.
        try:
            viewport = glGetIntegerv(GL_VIEWPORT)
        except:
            viewport = [0, 0, width, height]
        h = viewport[3] - viewport[1]
        w = viewport[2] - viewport[0]
        geometry = (0, 0, w, h)
        self.svg = SvgContext(geometry)
        glViewport(int(viewport[0]), int(viewport[1]), int(viewport[2]),
                   int(viewport[3]))

        self.startupMessages = self.video.error
        self.input = Input()
        self.view = View(self, geometry)
        self.resizeScreen(w, h)

        self.resource = Resource(Version.dataPath())
        self.mainloop = self.loading
        self.menuMusic = False

        self.setlistMsg = None

        # Load game modifications
        Mod.init(self)
        self.addTask(self.input, synchronized=False)

        self.addTask(self.view, synchronized=False)

        self.addTask(self.resource, synchronized=False)

        self.data = Data(self.resource, self.svg)

        ##MFH: Animated stage folder selection option
        #<themename>\Stages still contains the backgrounds for when stage rotation is off, and practice.png
        #subfolders under Stages\ will each be treated as a separate animated stage set

        self.stageFolders = []
        currentTheme = themename

        stagespath = os.path.join(Version.dataPath(), "themes", currentTheme,
                                  "backgrounds")
        themepath = os.path.join(Version.dataPath(), "themes", currentTheme)
        if os.path.exists(stagespath):
            self.stageFolders = []
            allFolders = os.listdir(
                stagespath
            )  #this also includes all the stage files - so check to see if there is at least one .png file inside each folder to be sure it's an animated stage folder
            for name in allFolders:
                aniStageFolderListing = []
                thisIsAnAnimatedStageFolder = False
                try:
                    aniStageFolderListing = os.listdir(
                        os.path.join(stagespath, name))
                except Exception:
                    thisIsAnAnimatedStageFolder = False
                for aniFile in aniStageFolderListing:
                    if os.path.splitext(
                            aniFile
                    )[1] == ".png" or os.path.splitext(
                            aniFile
                    )[1] == ".jpg" or os.path.splitext(
                            aniFile
                    )[1] == ".jpeg":  #we've found at least one .png file here, chances are this is a valid animated stage folder
                        thisIsAnAnimatedStageFolder = True
                if thisIsAnAnimatedStageFolder:
                    self.stageFolders.append(name)

            i = len(self.stageFolders)
            if i > 0:  #only set default to first animated subfolder if one exists - otherwise use Normal!
                defaultAniStage = str(self.stageFolders[0])
            else:
                defaultAniStage = "Normal"
            Log.debug("Default animated stage for " + currentTheme +
                      " theme = " + defaultAniStage)
            aniStageOptions = dict([(str(self.stageFolders[n]),
                                     self.stageFolders[n])
                                    for n in range(0, i)])
            aniStageOptions.update({"Normal": _("Slideshow")})
            if i > 1:  #only add Random setting if more than one animated stage exists
                aniStageOptions.update({"Random": _("Random")})
            Config.define("game",
                          "animated_stage_folder",
                          str,
                          defaultAniStage,
                          text=_("Animated Stage"),
                          options=aniStageOptions)

            #MFH: here, need to track and check a new ini entry for last theme - so when theme changes we can re-default animated stage to first found
            lastTheme = self.config.get("game", "last_theme")
            if lastTheme == "" or lastTheme != currentTheme:  #MFH - no last theme, and theme just changed:
                self.config.set("game", "animated_stage_folder",
                                defaultAniStage)  #force defaultAniStage
            self.config.set("game", "last_theme", currentTheme)

            selectedAnimatedStage = self.config.get("game",
                                                    "animated_stage_folder")
            if selectedAnimatedStage != "Normal" and selectedAnimatedStage != "Random":
                if not os.path.exists(
                        os.path.join(stagespath, selectedAnimatedStage)):
                    Log.warn("Selected animated stage folder " +
                             selectedAnimatedStage +
                             " does not exist, forcing Normal.")
                    self.config.set(
                        "game", "animated_stage_folder", "Normal"
                    )  #MFH: force "Standard" currently selected animated stage folder is invalid
        else:
            Config.define("game",
                          "animated_stage_folder",
                          str,
                          "None",
                          text=_("Animated Stage"),
                          options=["None", _("None")])
            Log.warn(
                "No stages\ folder found, forcing None setting for Animated Stage."
            )
            self.config.set(
                "game", "animated_stage_folder",
                "None")  #MFH: force "None" when Stages folder can't be found

        try:
            fp, pathname, description = imp.find_module(
                "CustomTheme", [themepath])
            theme = imp.load_module("CustomTheme", fp, pathname, description)
            self.theme = theme.CustomTheme(themepath, themename)
        except ImportError:
            self.theme = Theme(themepath, themename)

        self.addTask(self.theme)

        self.input.addKeyListener(FullScreenSwitcher(self), priority=True)
        self.input.addSystemEventListener(SystemEventHandler(self))

        self.debugLayer = None
        self.startupLayer = None
        self.loadingScreenShown = False
        self.graphicMenuShown = False

        Log.debug("Ready.")
Example #20
0
 def private_auth_key(self, value):
     Theme.setvariable(self.id_member, "cust_privat", value)
Example #21
0
#    emesene is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with emesene; if not, write to the Free Software
#    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

import MarkupParser

from Theme import Theme
from Handler import *
from Message import Message
from ContactList import ContactList
from Conversation import Conversation
from LoginBase import LoginBase
from ConversationManager import ConversationManager
from AvatarManager  import AvatarManager
from PictureHandler import PictureHandler
from ContactInformation import ContactInformation
from BaseTray import BaseTray
from MainWindowBase import MainWindowBase
from Hotmail import Hotmail

theme = Theme()

import stock
import extension
import e3