Exemple #1
0
    def __init__(self):
        gui.gui_state.__init__(self)

        self.btn_width = 180
        self.btn_height = 35

        self.btn_offset = 15

        self.title = gui.label()
        self.btn_new_game = gui.button(self.btn_width, self.btn_height)
        self.btn_deck_view = gui.button(self.btn_width, self.btn_height)
        self.btn_quit = gui.button(self.btn_width, self.btn_height)
Exemple #2
0
    def __init__(self):
        gui.gui_state.__init__(self)

        self.btn_width = 180
        self.btn_height = 35

        self.btn_offset = 15

        self.title = gui.label()
        self.btn_new_game = gui.button(self.btn_width, self.btn_height)
        self.btn_deck_view = gui.button(self.btn_width, self.btn_height)
        self.btn_quit = gui.button(self.btn_width, self.btn_height)
Exemple #3
0
    def __init__(self, cards, choice, width=0, height=0):
        gui.widget.__init__(self, "card_selector", width, height)

        self.font = gui.get_big_font()

        card_result = ""

        if choice.destination == player_choice.DiscardCard:
            card_result = "discard"
        elif choice.destination == player_choice.DestroyCard:
            card_result = "destroy"
        elif choice.destination == player_choice.PlayerDeckBottom:
            card_result = "deck bottom"
        elif choice.destination == player_choice.PlayerDeckTop:
            card_result = "deck top"

        if not choice.count == -1:
            self.title = "Choose %d card(s) to %s" % (choice.count, card_result)
        else:
            self.title = "Choose cards to %s" % card_result

        self.cards = cards

        self.possible_choice = self.cards

        self.choice = choice

        self.selected_cards = []

        self.cards_image = {}

        self.card_width = 310
        self.card_height = 440

        self.card_y_offset = 10
        self.card_x_offset = 100

        self.load_images()

        self.card_position = 0

        self.closing = None

        self.btn_accept = gui.button(100, 30)
        self.btn_accept.caption = "Accept"
        self.btn_accept.add_receivers(self.accept)

        self.btn_reset = gui.button(100, 30)
        self.btn_reset.caption = "Reset"
        self.btn_reset.add_receivers(self.reset)

        self.choice_done = None
Exemple #4
0
    def display(self):
        assets = self.assets
        sw,sh = self.sw,self.sh
        settings_menu.firstpane = "display"
        self.base()
        res_box = gui.scrollpane([10,20])
        res_box.width = 200
        res_box.height = 120
        self.res_box = res_box
        self.children.append(res_box)
        
        res_box.add_child(gui.button(self,"Change resolution (%sx%s)"%(assets.swidth,assets.sheight)))
        res = res_box.pane.children[-1]

        res.checked = True
        res.click_down_over = self.popup_resolution
        
        res_box.add_child(gui.checkbox("smoothscale"))
        self.smoothscale = res_box.pane.children[-1]
        
        res_box.add_child(gui.checkbox("fullscreen"))
        self.fs = res_box.pane.children[-1]
        res_box.add_child(gui.checkbox("dualscreen"))
        ds = self.ds = res_box.pane.children[-1]
        
        res_box.add_child(gui.checkbox("virtual dualscreen"))
        self.vds = res_box.pane.children[-1]
        self.vds.visible = 0
        
        res_box.add_child(gui.checkbox("show fps"))
        self.show_fps = res_box.pane.children[-1]
        s_c = self.show_fps.set_checked
        def set_checked(val):
            s_c(val)
            assets.show_fps = val
            wini(assets)
        self.show_fps.set_checked = set_checked

        #self.reses = gui.radiobutton.groups["resopt"]
        if assets.fullscreen:
            self.fs.checked = True
        if assets.num_screens==2:
            self.ds.checked = True
        if not assets.screen_compress:
            self.vds.checked = True
        if assets.show_fps:
            self.show_fps.checked = True
        if assets.smoothscale:
            self.smoothscale.checked = True
                
        self.children.append(gui.button(self,"apply",[10,140]))
Exemple #5
0
    def players_categorie_selection(
            self, player_nb, adj_num
    ):  # rendre fonctionnel l'écran des sélections de caractères
        text(f"Le {adj_num} joueur peut choisir son type de personnage.",
             self.medium_font_2,
             self.surface, (self.surface_size[0] // 2, 80),
             shadow=True,
             shadow_offset=2)
        buttons_size = (220, 70)
        button_y_pos = reset_button_y_pos = 200  # où sera le premier bouton (en y)
        button_x_pos = self.surface_size[0] // 2 - buttons_size[0] // 2 - 25
        for button_number in range(len(self.characters_categorie)):
            if button_number == (len(self.characters_categorie) + 1) // 2:
                button_y_pos = reset_button_y_pos
                button_x_pos = self.surface_size[0] // 2 + buttons_size[
                    0] // 2 + 25

            button_out = button(self.characters_categorie[button_number],
                                self.big_font,
                                self.surface,
                                pos=(button_x_pos, button_y_pos),
                                size=buttons_size,
                                user_click=self.user_click)

            # vérifier si l'utilisateur appuie sur le bouton
            if button_out[0] is not False:
                self.players_categorie[player_nb] = button_out[1]
                self.characters_categorie.remove(button_out[1])
                break
            # changer la position y
            button_y_pos += buttons_size[1] + 50
Exemple #6
0
    def __init__(self, library=None):
        gui.gui_state.__init__(self)

        if library is None:
            library = cards.library("../dc-deck/pack1")

        self.library = library
        self.handle_quit = False
        self.pic_cards = []
        self.current_index = 0
        self.key_downs = []

        self.deck_start_x = 0

        self.card_offset = 15

        self.lbl_current_card = gui.label()
        self.lbl_cards_count = gui.label()
        self.lbl_deck_name = gui.label()

        self.deck_combo = gui.combobox(120, 20)
        self.deck_combo.items.append("Pack1")
        self.deck_combo.items.append("Pack2")
        self.deck_combo.items.append("Pack3")
        self.deck_combo.items.append("Pack4")

        self.btn_back = gui.button()
        self.btn_back.width = 120
        self.btn_back.height = 35
        self.btn_back.caption = "Back"
        self.btn_back.add_receivers(self.back)
        self.tick_id = 0
Exemple #7
0
 def update(self, *args):
     assets = self.assets
     self.rpos = [0, 0]
     self.pos = self.rpos
     self.children[:] = [
         x for x in self.children if not getattr(x, "kill", 0)
     ]
     for x in self.children:
         x.update()
     if getattr(self, "giffile", ""):
         sys.path.append("tools")
         import gif2strip
         try:
             path = gif2strip.go(self.giffile)
             m = msg("Converted " + path.rsplit("/", 1)[1] + ".png",
                     self.assets)
             self.children.append(m)
             graphic = pygame.transform.rotozoom(
                 pygame.image.load(path + ".png"), 0, 0.25)
             m.children.append(gui.button(None, "x"))
             m.children[-1].graphic = graphic
             setattr(m.children[-1], "x", m.click_down_over)
         except Exception:
             import traceback
             traceback.print_exc()
             self.children.append(
                 msg("File could not be converted.", self.assets))
         self.giffile = ""
     return True
Exemple #8
0
    def __init__(self, library=None):
        gui.gui_state.__init__(self)

        if library is None:
            library = cards.library("../dc-deck/pack1")

        self.library = library
        self.handle_quit = False
        self.pic_cards = []
        self.current_index = 0
        self.key_downs = []

        self.deck_start_x = 0

        self.card_offset = 15

        self.lbl_current_card = gui.label()
        self.lbl_cards_count = gui.label()
        self.lbl_deck_name = gui.label()

        self.deck_combo = gui.combobox(120, 20)
        self.deck_combo.items.append("Pack1")
        self.deck_combo.items.append("Pack2")
        self.deck_combo.items.append("Pack3")
        self.deck_combo.items.append("Pack4")

        self.btn_back = gui.button()
        self.btn_back.width = 120
        self.btn_back.height = 35
        self.btn_back.caption = "Back"
        self.btn_back.add_receivers(self.back)
        self.tick_id = 0
Exemple #9
0
def drawPlanet(screen, inGame, planetsData, itemsData, inventoryManager):
	#title
	font = pygame.font.Font('freesansbold.ttf', 25) 
	text = font.render("IMT - Interplanetary Market Terminal", True, (255,255,255)) 
	textRect = text.get_rect()  
	textRect.topleft = (20, 20)
	screen.blit(text, textRect)
	planetData = planetsData[inGame.planetName]
	#slot 1
	drawItemCard(screen, planetData[0], (100, 200), itemsData, inventoryManager)
	#slot 2
	drawItemCard(screen, planetData[1], (280, 200), itemsData, inventoryManager)
	#slot 3
	drawItemCard(screen, planetData[2], (460, 200), itemsData, inventoryManager)
	#balance
	gui.button(screen, "$"+str(inventoryManager.bankBalance), (640 - 80, 30))
Exemple #10
0
 def __init__(self, modeNameList):
     self.buttonList = []
     self.modeList = modeNameList
     for i in range(0, len(modeNameList)):
         butt = gui.button(modeNameList[i], 0, 30*i, doNothing)
         butt.setAction(butt.getName)
         self.buttonList.append(butt)
     self.selectedToolText = gui.justText("This is a piece of text", 0, 30*(i+1))
Exemple #11
0
 def make_button(self,text,pos):
     b = gui.button(self,text,pos)
     if settings_menu.firstpane == text:
         b.bgcolor = [50,50,50]
         b.highlightcolor = [50,50,50]
         b.textcolor = [255,255,255]
         print "changed settings for",text
     self.children.append(b)
     return b
Exemple #12
0
def drawPlanets(screen, inGame, invMan):
	#title
	font = pygame.font.Font('freesansbold.ttf', 25) 
	text = font.render("IMT - Interplanetary Market Terminal", True, (255,255,255)) 
	textRect = text.get_rect()  
	textRect.topleft = (20, 20)
	screen.blit(text, textRect)
	#slot 1
	drawPlanetCardWithImage(screen, "Earth", earthImage, (100, 200), inGame)
	#slot 2
	drawPlanetCardWithImage(screen, "Mars", marsImage, (280, 200), inGame)
	#slot 3
	drawPlanetCardWithImage(screen, "Venus", venusImage, (460, 200), inGame)
	#balance
	gui.button(screen, "$"+str(invMan.bankBalance), (640 - 80, 30))
	#space station
	if(gui.button(screen, "Space Station", (120, 440))):
		inGame.setInSpaceStation(True)
 def drawTitleScreen(self, screen, font, inGame):
     if self.textAnimationPosition != 50:
         self.textAnimationPosition = self.textAnimationPosition + 2
     text = font.render('Commercium', True, (255, 255, 255))
     textRect = text.get_rect()
     textRect.center = (640 / 2, (480 / 2) - self.textAnimationPosition)
     screen.blit(text, textRect)
     if (gui.button(screen, "Start", (640 / 2, (480 / 2) + 50))):
         inGame.setInGame(True)
Exemple #14
0
 def make_button(self, text, pos):
     b = gui.button(self, text, pos)
     if settings_menu.firstpane == text:
         b.bgcolor = [50, 50, 50]
         b.highlightcolor = [50, 50, 50]
         b.textcolor = [255, 255, 255]
         print "changed settings for", text
     self.children.append(b)
     return b
Exemple #15
0
def drawSpaceStation(screen, inGame, inventoryManager):
	itemsData = {
		"Market Speed+": 1000.0,
		"Market Speed-": 1000.0,
		"I AM RICH": 100000.0
	}
	#title
	font = pygame.font.Font('freesansbold.ttf', 25) 
	text = font.render("Space Station Kiosk", True, (255,255,255)) 
	textRect = text.get_rect()  
	textRect.topleft = (20, 20)
	screen.blit(text, textRect)
	#slot 1
	drawItemCardCustom(screen, "Market Speed+", (100, 200), itemsData, inventoryManager, inGame)
	#slot 2
	drawItemCardCustom(screen, "Market Speed-", (280, 200), itemsData, inventoryManager, inGame)
	#slot 3
	drawItemCard(screen, "I AM RICH", (460, 200), itemsData, inventoryManager)
	#balance
	gui.button(screen, "$"+str(inventoryManager.bankBalance), (640 - 80, 30))
Exemple #16
0
    def project_data(self):
        t = gui.toplevel(self, _('project_data'))

        f_data = gui.lf_param(t, 1, 1, '')

        gui.e_general(self, f_data, 1, 1, None, _('project_name'), 'project', 'None')
        gui.e_general(self, f_data, 2, 1, None, _('further_info'), 'info', 'None')
        gui.e_general(self, f_data, 3, 1, 56, _('engineer'), 'engineer', project_data['engineer'])
        gui.e_general(self, f_data, 3, 2, 7, _('signature'), 'signature', 'mr')

        def ok():
            project_data['project'] = self.var_project.get()
            project_data['info'] = self.var_info.get()
            project_data['engineer'] = self.var_engineer.get()
            project_data['signature'] = self.var_signature.get()
            t.destroy()

        def cancel():
            t.destroy()

        f2 = gui.frame(t, 2, 1, E)

        gui.button(f2, 'Cancel', cancel)
        gui.button(f2, 'OK', ok)
Exemple #17
0
    def draw_words(self):  # dessiner tous les mots triés par catégorie
        buttons_size = (262, 32)
        space = 10  # espace entre les boutons
        button_x_pos = buttons_size[0] // 2 + space
        button_y_pos = reset_button_y_pos = 350  # où sera le premier bouton (en y)

        to_return = None, None

        for words_group in ("Sujet", "Verbe", "Complément", "Liaison"):
            text(words_group,
                 self.medium_font_2,
                 self.surface, (button_x_pos, button_y_pos - 40),
                 color=(164, 61, 227),
                 shadow=True,
                 shadow_offset=2)  # dessiner le nom de la catégorie
            for word in self.sentences["all"][words_group]:
                if len(word) > 24:
                    split_number = 2
                else:
                    split_number = 1

                button_out = button(word,
                                    self.small_font,
                                    self.surface,
                                    pos=(button_x_pos, button_y_pos),
                                    size=buttons_size,
                                    user_click=self.user_click,
                                    split=split_number)

                if button_out[
                        0] is not False:  # lorsque l'utilisateur clique sur un bouton
                    to_return = (
                        words_group, button_out[1]
                    )  # renverra le groupe de mots et le texte du bouton

                button_y_pos += buttons_size[1] + space
            button_x_pos += buttons_size[0] + space
            button_y_pos = reset_button_y_pos

        return to_return
Exemple #18
0
 def apply(self):
     assets = self.assets
     sw, sh = self.sw, self.sh
     for r in self.screens:
         if r.checked:
             assets.screen_mode = r.text
     for r in self.reses:
         if r.checked:
             self.oldwidth, self.oldheight = assets.swidth, assets.sheight
             self.timer = 5.0
             self.really_applyb = gui.pane()
             self.really_applyb.is_applyb = True
             self.really_applyb.width = 1000
             self.really_applyb.height = 1000
             self.really_applyb.pri = -1002
             self.really_applyb.z = 11002
             #self.really_applyb.align = False
             e = gui.editbox(None, "")
             e.draw_back = False
             self.really_applyb.children.append(e)
             self.really_applyb.timer = e
             b = gui.button(self, "save_resolution", [0, 0])
             self.really_applyb.children.append(b)
             assets.cur_script.obs.append(self.really_applyb)
             assets.swidth, assets.sheight = [
                 int(x) for x in (r.text[r.text.find("(") +
                                         1:r.text.find(")")]).split("x")
             ]
     self.old_fullscreen = assets.fullscreen
     assets.fullscreen = 0
     if self.fs.checked:
         assets.fullscreen = 1
     self.old_num_screens = assets.num_screens
     assets.smoothscale = 0
     if self.smoothscale.checked:
         assets.smoothscale = 1
     assets.make_screen()
     self.display()
     wini(assets)
Exemple #19
0
 def apply(self):
     assets = self.assets
     sw,sh = self.sw,self.sh
     for r in self.reses: 
         if r.checked:
             self.oldwidth,self.oldheight = assets.swidth,assets.sheight
             self.timer = 5.0
             self.really_applyb = gui.pane()
             self.really_applyb.is_applyb = True
             self.really_applyb.width = 1000
             self.really_applyb.height = 1000
             self.really_applyb.pri = -1002
             self.really_applyb.z = 11002
             #self.really_applyb.align = False
             e = gui.editbox(None,"")
             e.draw_back = False
             self.really_applyb.children.append(e)
             self.really_applyb.timer = e
             b = gui.button(self,"save_resolution",[0,0])
             self.really_applyb.children.append(b)
             assets.cur_script.obs.append(self.really_applyb)
             assets.swidth,assets.sheight = [int(x) for x in (r.text[r.text.find("(")+1:r.text.find(")")]).split("x")]
     self.old_fullscreen = assets.fullscreen
     assets.fullscreen = 0
     if self.fs.checked:
         assets.fullscreen = 1
     self.old_num_screens = assets.num_screens
     assets.num_screens = 1
     if self.ds.checked:
         assets.num_screens = 2
     assets.screen_compress = 1
     if self.vds.checked:
         assets.screen_compress = 0
     assets.smoothscale = 0
     if self.smoothscale.checked:
         assets.smoothscale = 1
     assets.make_screen()
     self.display()
     wini(assets)
Exemple #20
0
 def update(self,*args):
     assets = self.assets
     self.rpos = [0,0]
     self.pos = self.rpos
     self.children[:] = [x for x in self.children if not getattr(x,"kill",0)]
     for x in self.children:
         x.update()
     if getattr(self,"giffile",""):
         sys.path.append("tools")
         import gif2strip
         try:
             path = gif2strip.go(self.giffile)
             m = msg("Converted "+path.rsplit("/",1)[1]+".png",self.assets)
             self.children.append(m)
             graphic = pygame.transform.rotozoom(pygame.image.load(path+".png"),0,0.25)
             m.children.append(gui.button(None,"x"))
             m.children[-1].graphic = graphic
             setattr(m.children[-1],"x",m.click_down_over)
         except Exception:
             import traceback
             traceback.print_exc()
             self.children.append(msg("File could not be converted.",self.assets))
         self.giffile = ""
     return True
Exemple #21
0
    def do(self):  # rendre le jeu fonctionnel
        self.surface.blit(self.background, (0, 0))
        self.click()

        if self.state == "characters_selection":
            if self.players_categorie[1] is None:
                self.players_categorie_selection(1, "premier")

            elif self.players_categorie[2] is None:
                self.players_categorie_selection(2, "second")
            else:
                self.sentences_selection()
                self.state = "game"

        elif self.state == "game":
            # self.user_click = True
            self.draw_image()
            self.draw_players_current_sentences()
            words_group, button_out_text = self.draw_words()
            if words_group is not None:
                self.check_correct_word(words_group, button_out_text)

            self.make_wrong_guess()

        elif self.state == "score":
            self.draw_image()
            self.draw_players_current_sentences()
            self.draw_scores()
            if button("Continuer",
                      self.big_font,
                      self.surface,
                      pos=(self.surface_size[0] // 2,
                           self.surface_size[1] - 120),
                      size=(240, 60),
                      user_click=self.user_click)[0]:
                self.reset()
Exemple #22
0
def main():
    window_width = 800
    window_height = 600
    
    print "Loading locale ...",
    gettext.install('default', 'locale')
    po = { "position" :  _("Position"), "height" : _("Height"), "big" :  _("Big"), "small" : _("Small"), 
           "sides" : _("Sides"), "grid" : _("Grid"), "exit" : _("Exit"),
           "del" : _("Delete"), "clear" : _("Clear"), "options" : _("Options"),
           "up" : _("Up"), "down" : _("Down"), "left" : _("Left"), "right" : _("Right"), "forward" : _("Forward"), "back" : _("Back"),
           "motion_blur" : _("Motion Blur"), "light" : _("Light"),
           "few"      : _("Too few sides given to describe a rectangular shape"),
           "not_even" : _("Odd number of sides can't border a rectangular shape"),
           "both"     : _("Neither even nor odd indexed sides are closed"),
           "even"     : _("Even indexed sides are not closed"),
           "odd"      : _("Odd indexed sides are not closed")
           }
    for k in po:
        po[k] = unicode(po[k],'utf8')
    print "Done"
    
    print "Loading pygame ..." ,
    pygame.display.init()
    pygame.font.init()
    print "Done"
    
    print "Loading screen ...",
    pygame.display.set_mode ( (window_width,window_height), pygame.OPENGL|pygame.DOUBLEBUF|pygame.RESIZABLE, 24 )
    print "Done"
    
    print "Loading opengl ...",
    lego.gl_init( window_width, window_height )
    print "Done"
    
    # draw dialog screen 
    
    print "Loading layers ...",
    
    button_color = (0.8, 0.8, 0.0)
    button_focus_color = (0.3, 0.8, 0.5)
    button_error_color = (0.8, 0.4, 0.4)
    
    title      = pygame.font.SysFont("courier", 24, True,  True)
    error      = pygame.font.SysFont("courier", 18, True,  True)
    small      = pygame.font.SysFont("courier", 14, False, True)
    bold_small = pygame.font.SysFont("courier", 14, True,  True)
    title_scale = 15
    sub_scale = -5
    text_color = ( 192, 64, 128 )
    text_error_color = (204, 204, 0)
    
    piecesize = reference()
    grid = opposite(True)
    mblur = opposite(False)
    
    menu = reference()
    
    static = dict()
    static["options"] = gui.toggle(  10,10, 145, 37, button_color, button_focus_color, button_error_color, 2, menu )
    static["edit"]    = gui.toggle( 165,10, 145, 37, button_color, button_focus_color, button_error_color, 1, menu )
    
    static_layers = gui.layer_manager()
    static_layers.add( small.render(po["options"], True,text_color), 25, 17, (0,3) )
    static_layers.add( small.render("Edit", True,text_color), 180, 17, (0,3) )
    static_layers.load()
    
    
    edit = dict()
    edit["x"]          = gui.textbox(  11,107,  42, 32, button_color, button_focus_color, button_error_color, bold_small, text_color, text_error_color, (0,4) ) 
    edit["y"]          = gui.textbox( 113,105,  42, 32, button_color, button_focus_color, button_error_color, bold_small, text_color, text_error_color, (0,4) ) 
    edit["z"]          = gui.textbox(  62,107,  42, 32, button_color, button_focus_color, button_error_color, bold_small, text_color, text_error_color, (0,4) ) 
    edit["big"]        = gui.toggle (  33,207,  32, 32, button_color, button_focus_color, button_error_color, lego.LEGO_BIG,   piecesize ) 
    edit["small"]      = gui.toggle ( 101,207,  32, 32, button_color, button_focus_color, button_error_color, lego.LEGO_SMALL, piecesize ) 
    edit["sides"]      = gui.textbox(  11,277, 145,100, button_color, button_focus_color, button_error_color, bold_small, text_color, text_error_color ) 
    edit["grid"]       = gui.toggle ( 123,391,  32, 32, button_color, button_focus_color, button_error_color, True, grid ) 
    edit["raise_grid"] = gui.arrow  (  17,437,  32, 32, button_color, button_focus_color, button_error_color ) 
    edit["lower_grid"] = gui.arrow  ( 117,437,  32, 32, button_color, button_focus_color, button_error_color, False ) 
    edit["send"]       = gui.button (  11,487, 145, 37, button_color, button_focus_color, button_error_color )
    edit["del"]        = gui.button (  11,536,  70, 37, button_color, button_focus_color, button_error_color )
    edit["clear"]      = gui.button (  86,536,  70, 37, button_color, button_focus_color, button_error_color )
    
    edit_layers = gui.layer_manager()
    
    edit_layers.add( pygame.image.load(os.path.join('data','ui.png')), 0, 57, (0,0) )
    
    edit_layers.add( title.render(po["position"],True,text_color),  20,  67, (0,title_scale) )
    edit_layers.add( title.render(po["height"],  True,text_color),  20, 139, (0,title_scale) )
    edit_layers.add( title.render(po["big"],     True,text_color),  20, 179, (0,sub_scale)   )
    edit_layers.add( title.render(po["small"],   True,text_color),  85, 179, (0,sub_scale)   )
    edit_layers.add( title.render(po["sides"],   True,text_color),  20, 239, (0,title_scale) )
    edit_layers.add( title.render(po["grid"],    True,text_color),  20, 387, (0,title_scale) )
    edit_layers.add( title.render("OK",          True,text_color),  67, 494, (0,sub_scale) )
    edit_layers.add( small.render(po["del"],     True,text_color),  20, 545, (0,3) )
    edit_layers.add( small.render(po["clear"],   True,text_color),  95, 545, (0,3) )
    edit_layers.load()
    
    options = dict()
    options["mblur"]       = gui.toggle( 67,355, 32, 32, button_color, button_focus_color, button_error_color, True, mblur )
    options["raise_mblur"] = gui.arrow ( 17,388, 32, 32, button_color, button_focus_color, button_error_color ) 
    options["lower_mblur"] = gui.arrow ( 117,388, 32, 32, button_color, button_focus_color, button_error_color, False )
    options["raise_light"] = gui.arrow ( 17,487, 32, 32, button_color, button_focus_color, button_error_color ) 
    options["lower_light"] = gui.arrow ( 117,487, 32, 32, button_color, button_focus_color, button_error_color, False )
    
    options_layers = gui.layer_manager()
    
    options_layers.add( edit_layers.layer_list[0][0], 0, 57, (0,0) )
    
    options_layers.add( title.render(po["motion_blur"],True,text_color),  8,301, (0,title_scale) )
    options_layers.add( title.render(po["light"],      True,text_color),  8,434, (0,title_scale) )
    
    options_layers.add( small.render(' '.join(( po["forward"], ":" )), True,text_color),  10, 65, (0,3) )
    options_layers.add( small.render(' '.join(( po["back"], ":" )),    True,text_color),  10, 98, (0,3) )
    options_layers.add( small.render(' '.join(( po["left"], ":" )),    True,text_color),  10,131, (0,3) )
    options_layers.add( small.render(' '.join(( po["right"], ":" )),   True,text_color),  10,164, (0,3) )
    options_layers.add( small.render(' '.join(( po["up"], ":" )),      True,text_color),  10,197, (0,3) )
    options_layers.add( small.render(' '.join(( po["down"], ":" )),    True,text_color),  10,230, (0,3) )
    options_layers.add( small.render(' '.join(( po["exit"], ":" )),    True,text_color),  10,263, (0,3) )
    
    options_layers.add( small.render('W',    True,text_color),  100, 65, (0,3) )
    options_layers.add( small.render('S',    True,text_color),  100, 98, (0,3) )
    options_layers.add( small.render('A',    True,text_color),  100,131, (0,3) )
    options_layers.add( small.render('D',    True,text_color),  100,164, (0,3) )
    options_layers.add( small.render('Space',True,text_color),  100,197, (0,3) )
    options_layers.add( small.render('Ctrl', True,text_color),  100,230, (0,3) )
    options_layers.add( small.render('Esc',  True,text_color),  100,263, (0,3) )
    
    options_layers.load()
    
    controls = static.copy()
    menus = { 1 : edit, 2: options }
    
    print "Done"
    
    print "\nEntering drawing loop\n"
    pieces = list()
    pieces.append(lego.piece( (4,2,-2,2,-1,1,-2,-1,-1,-2,2,-2), lego.LEGO_BIG,   (1.0, 0.1, 0.2), (-6, 0,    -6) ))
    pieces.append(lego.piece( (1,-1,1,1,1,-1,1,4,-3,-1,-1,-2),  lego.LEGO_SMALL, (0.2, 0.8, 0.3), (-8, 2.0/3, 2) ))
    pieces.append(lego.piece( (2,2,1,1,-1,2,-2,-5),             lego.LEGO_SMALL, (0.2, 0.3, 0.8), ( 5, 1.0/3, 1) ))
    pieces.append(lego.piece( (5,6,-5,-1,-1,-4,1,-1),           lego.LEGO_BIG,   (0.8, 0.3, 0.8), ( 1, 0    ,-2) ))
    pieces.append(lego.piece( (2,7,-2,-5,-2,-1,2,-1),           lego.LEGO_SMALL, (0.9, 0.9, 0.3), ( 0, 1,     0) ))
    
    lightp = np.array((2.0, 4.0, -4.0, 1.0))
    
    light_int = 0.5
    light_amb = 1.0 - (1.0 - light_int) ** 2
    
    GL.glLightfv( GL.GL_LIGHT0, GL.GL_AMBIENT, (light_amb * 0.1, light_amb * 0.1, light_amb * 0.1, 1.0) )  # Setup The Ambient Light
    GL.glLightfv( GL.GL_LIGHT0, GL.GL_DIFFUSE, (light_amb, light_amb, light_amb, 1.0) )                    # Setup The Diffuse Light
    GL.glEnable(GL.GL_LIGHT0)                                                                              # Enable Light One
    
    eps = sys.float_info.epsilon
    
    ticker = pygame.time.Clock()
    
    running = True
    fps = 30
    
    accumulate = False
    mblur_rate = 0.5
    
    rotating = False
    rotrot = 0.0
    rot_speed = 1.5
    rotx = 0
    roty = -40.0
    mouse_sens = -120
    
    position = np.array(( 2.0, -15, 15, 0.0))
    move = np.array(( 0.0, 0.0, 0.0, 0.0))
    move_speed = 0.5
    
    slow = False
    
    focused = None
    mouse_down = None
    drag_from = None 
    key_hit = None
    
    errors = set()
    chosen_index = None
    
    grid_level = 0
    
    edit_dyn_layers = gui.dynamic_layer_manager()
    edit_dyn_layers.add( "grid-level", title.render(str(grid_level),True,text_color), 75, 437, (0,title_scale) )
    
    options_dyn_layers = gui.dynamic_layer_manager()
    options_dyn_layers.add( "mblur-level", title.render(str(mblur_rate),True,text_color), 61, 388, (0,title_scale) )
    options_dyn_layers.add( "light-level", title.render(str(light_int) ,True,text_color), 61, 487, (0,title_scale) )
    
    while running:
        cx = np.cos( rotx / 180.0 * np.pi )
        sx = np.sin( rotx / 180.0 * np.pi)
        cy = np.cos( roty / 180.0 * np.pi)
        sy = np.sin( roty / 180.0 * np.pi)

        xrot = np.array(( (cx,  0.0, -sx,  0.0), 
                          (0.0, 1.0,  0.0, 0.0),
                          (sx,  0.0,  cx,  0.0),
                          (0.0, 0.0,  0.0, 1.0)  ))
        
        yrot = np.array(( (1.0,  0.0, 0.0, 0.0), 
                          (0.0,  cy,  sy,  0.0),
                          (0.0, -sy,  cy,  0.0),
                          (0.0,  0.0, 0.0, 1.0)  ))
        
        rot = np.dot( xrot, yrot )
        
        # handle events
        
        for event in pygame.event.get():
            
            if event.type == pygame.QUIT:
                running = False
                
            elif event.type == pygame.VIDEORESIZE:
                window_width, window_height = event.size
                pygame.display.set_mode ( (window_width,window_height), pygame.OPENGL|pygame.DOUBLEBUF|pygame.RESIZABLE, 24 )
                lego.setviewport(event.w, event.h)
                clear_color = GL.glGetFloatv(GL.GL_COLOR_CLEAR_VALUE)
                GL.glClearColor( 0.0, 0.0, 0.0, 0.0 )
                GL.glClear( GL.GL_COLOR_BUFFER_BIT )
                GL.glClearColor( *clear_color )
                ticker.tick(fps/6)
                
            elif event.type == pygame.KEYDOWN:
                if event.key == pygame.K_ESCAPE:
                    running=False
                if not slow and event.key == 304:
                    mouse_sens = -60
                    slow = True
                    move_speed = 0.1
                    
                # FIXME: after moving down (ctrl) and another direction same time it stucks moving
                if event.mod % 256 == 64 or event.key == 306:
                    move[1] =  1.0
                elif event.key == 32:
                    move[1] = -1.0
                elif event.key == pygame.K_a or event.key == pygame.K_LEFT:
                    move[0] =  1.0
                elif event.key == pygame.K_d or event.key == pygame.K_RIGHT:
                    move[0] = -1.0
                elif event.key == pygame.K_s or event.key == pygame.K_DOWN:
                    move[2] =  1.0
                elif event.key == pygame.K_w or event.key == pygame.K_UP:
                    move[2] = -1.0
                else:
                    key_hit = event
                    
            elif event.type == pygame.KEYUP:
                if event.mod % 256 == 64 or event.key == 306 or event.key == 32:
                    move[1] = 0.0
                elif ( event.key == pygame.K_a or event.key == pygame.K_LEFT or 
                     event.key == pygame.K_d or event.key == pygame.K_RIGHT   ):
                    move[0] = 0.0
                elif ( event.key == pygame.K_s or event.key == pygame.K_DOWN or
                       event.key == pygame.K_w or event.key == pygame.K_UP    ): 
                    move[2] = 0.0
                if slow and event.key == 304:
                    slow = False
                    mouse_sens = -120
                    move_speed = 0.5
                    
            elif event.type == pygame.MOUSEBUTTONDOWN and event.button == 1:
                mouse_down = event.pos
                GL.glSelectBuffer( 64 )
                
                GL.glRenderMode( GL.GL_SELECT )
                lego.draw_mode_3d(event.pos)
                GL.glInitNames()
                GL.glMultMatrixf( rot )
                GL.glMultMatrixf( np.eye(4) + np.vstack(( np.zeros((3,4)), position )) )
                for i,p in enumerate( pieces ):
                    GL.glPushName( i )
                    p.draw()
                    GL.glPopName()
                hits = GL.glRenderMode( GL.GL_RENDER )
                distance = None
                if hits:
                    for j in hits:
                        if distance > j[1] or distance is None:
                            distance = j[1]
                            chosen_index = j[2][0]
                    start_position = pieces[chosen_index].position
                    if menu.get() == 1:
                        edit["x"].value = format( pieces[chosen_index].position[0], 'g' )
                        edit["y"].value = format( pieces[chosen_index].position[1], 'g')
                        edit["z"].value = format( pieces[chosen_index].position[2], 'g')
                        piecesize.set( pieces[chosen_index].size )
                        edit["sides"].value = ''
                        edit["sides"].value = ','.join(str(i) for i in pieces[chosen_index].sides)
                    
                GL.glRenderMode( GL.GL_SELECT )
                lego.draw_mode_2d(event.pos)
                GL.glInitNames()
                for i in range( 0, len(controls) ):
                    GL.glPushName( i )
                    controls.values()[i].draw()
                    GL.glPopName()
                hits = GL.glRenderMode( GL.GL_RENDER )
                focused = controls.values()[ hits.pop()[2][0] ] if hits else None
                
            elif mouse_down and event.type == pygame.MOUSEMOTION:
                if chosen_index is None or drag_from is None:
                    rotx += float(event.rel[0]) / window_width  * mouse_sens
                    roty += float(event.rel[1]) / window_height * mouse_sens
                else:
                    x,y = event.pos
                    y = window_height - y
                    lego.draw_mode_3d()
                    GL.glMultMatrixf( rot )
                    GL.glMultMatrixf( np.eye(4) + np.vstack(( np.zeros((3,4)), position )) )
                    far = np.array(GLU.gluUnProject( x, y, 1, GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX), GL.glGetDoublev(GL.GL_PROJECTION_MATRIX), GL.glGetIntegerv(GL.GL_VIEWPORT) )) 
                    near =  np.array(GLU.gluUnProject( x, y, 0, GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX), GL.glGetDoublev(GL.GL_PROJECTION_MATRIX), GL.glGetIntegerv(GL.GL_VIEWPORT) ))
                    
                    drag = (drag_from - ( (drag_from[1]-near[1]) / (far[1]-near[1]) ) * (far-near) - near) / -lego.LEGO_GRID
                    
                    prev_position = pieces[chosen_index].position
                    pieces[chosen_index].position = start_position + drag.round()
                    
                    for i,p in enumerate(pieces):
                        collision = collide( p, pieces[chosen_index] )
                        if collision:
                            break
                    if collision:
                        pieces[chosen_index].position = prev_position
                    
                    
                    
            elif event.type == pygame.MOUSEBUTTONUP and event.button == 1:
                mouse_down = None 
                drag_from = None
                if menu.get() != 1:
                    chosen_index = None
                    
        if not np.array_equal( move, np.zeros(4) ):
            move = move_speed * move / np.linalg.norm(move)
        position += np.dot( rot, move )
        
        # draw 3D stuff
        lego.draw_mode_3d()
        
        GL.glMultMatrixf( rot )
        GL.glMultMatrixf( np.eye(4) + np.vstack(( np.zeros((3,4)), position )) )
        
        if mblur.value:
            if not accumulate:
                GL.glClear( GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT )
            else:
                GL.glAccum( GL.GL_ACCUM, 1.0 - mblur_rate )
                GL.glAccum( GL.GL_RETURN, 1.0 )
                GL.glAccum( GL.GL_MULT, mblur_rate ) 
            accumulate = not accumulate
            ticker.tick( 2*fps )
            if rotating:
                rotrot = (rotrot + rot_speed/2) % 360
                GL.glRotatef( rotrot, 0.0, 1.0, 0.0 )
                
        else:
            GL.glClear( GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT )
            ticker.tick( fps )
            if rotating:
                rotrot = (rotrot + rot_speed) % 360
                GL.glRotatef( rotrot, 0.0, 1.0, 0.0 )
        
        GL.glLightfv( GL.GL_LIGHT0, GL.GL_POSITION, lightp )
        
        if edit["grid"].value:
            lego.draw_grid(grid_level)
        
        ps = GL.glGetInteger( GL.GL_POINT_SIZE )
        GL.glPointSize( 10 )
        GL.glColor3f( 1.0, 1.0, 0.5 )
        GL.glBindTexture(GL.GL_TEXTURE_2D, 0)
        GL.glNormal3fv(lightp[:3])
        GL.glBegin( GL.GL_POINTS )
        GL.glVertex3fv( lightp[:3] - np.array((0.1, 0.1, 0.1)) )
        GL.glEnd()
        GL.glPointSize( ps )
            
        for piece in pieces:
            piece.draw()
        
        if mouse_down and chosen_index is not None and drag_from is None:
            x,y = mouse_down
            y = window_height - y
            z = GL.glReadPixels(x,y,1,1,GL.GL_DEPTH_COMPONENT,GL.GL_FLOAT) 
            drag_from = np.array(GLU.gluUnProject( x, y, z, GL.glGetDoublev(GL.GL_MODELVIEW_MATRIX), GL.glGetDoublev(GL.GL_PROJECTION_MATRIX), GL.glGetIntegerv(GL.GL_VIEWPORT) ))
        
        # draw 2D stuff
        lego.draw_mode_2d()
        
        if menu.get() == 1:
            edit_layers.draw( 1 )
        elif menu.get() == 2:
            options_layers.draw( 1 )
        
        for b in controls.values():
            
            decide = b is focused
            b.draw( decide, b in errors )
            
            if decide:
                
                if b is static["options"] or b is static["edit"]:
                    if b.value is None:
                        controls = dict_union(controls, menus[b.ref])
                        b.value = b.ref
                    elif b.value == b.ref:
                        b.value = None
                        controls = dict_substract(controls, menus[b.ref])
                    else:
                        controls = dict_substract(controls, menus[b.value])
                        b.value = b.ref
                        controls = dict_union(controls, menus[b.ref])
                elif isinstance(b, gui.toggle):
                    b.value = b.ref
                elif key_hit is not None and isinstance(b, gui.textbox):
                    b.append(key_hit)
                
                if b is edit["raise_grid"]:
                    grid_level += 1
                    edit_dyn_layers.add( "grid-level", title.render(str(grid_level),True,text_color), edit_dyn_layers.layer_list["grid-level"][1], edit_dyn_layers.layer_list["grid-level"][2], (0,title_scale) )
                elif b is edit["lower_grid"]:
                    grid_level -= 1
                    edit_dyn_layers.add( "grid-level", title.render(str(grid_level),True,text_color), edit_dyn_layers.layer_list["grid-level"][1], edit_dyn_layers.layer_list["grid-level"][2], (0,title_scale) )
                elif b is edit["send"]:
                    errors = set()
                    try:
                        try:
                            edit_dyn_layers.remove("error")
                        except KeyError:
                            pass
                        sides = tuple( int(i) for i in edit["sides"].value.split(',') )
                        lego.piece.is_closed(sides)
                    except lego.LoopError as e:
                        if e.errno == 1001:
                            edit_dyn_layers.add( "error", error.render(po["few"],True,text_color), 180, 5, )
                        elif e.errno == 1002:
                            edit_dyn_layers.add( "error", error.render(po["not_even"],True,text_color), 180, 5 )
                        elif e.errno == 1020:
                            edit_dyn_layers.add( "error", error.render(po["both"],True,text_color), 180, 5 )
                        elif e.errno == 1000:
                            edit_dyn_layers.add( "error", error.render(po["even"],True,text_color), 180, 5 )
                        elif e.errno == 1010:
                            edit_dyn_layers.add( "error", error.render(po["odd"],True,text_color), 180, 5 )
                        errors.add(edit["sides"])
                    except ValueError:
                        errors.add(edit["sides"])
                    try:
                        x = float( edit["x"].value )
                    except ValueError:
                        errors.add(edit["x"])
                    try:
                        y = round( float( edit["y"].value )*3 ) / 3.0
                    except ValueError:
                        errors.add(edit["y"])
                    try:
                        z = float( edit["y"].value )
                    except ValueError:
                        errors.add(edit["z"])
                    if piecesize.get() is None:
                        errors.add(edit["big"])
                        errors.add(edit["small"])
                        
                    if not errors:
                        pieces.append( lego.piece(sides, piecesize.value, (0.2, 0.1, 0.8), (x,y,z)) )
                        edit["sides"].value = ''
                        edit["x"].value = '' 
                        edit["y"].value = ''
                        edit["z"].value = ''
                        piecesize.value = None
                elif b is edit["clear"] or menu.get() != 1:
                    edit["sides"].value = ''
                    edit["x"].value = '' 
                    edit["y"].value = ''
                    edit["z"].value = ''
                    piecesize.value = None
                    chosen_index = None
                elif b is edit["del"] and chosen_index is not None:
                    pieces.pop( chosen_index )
                    edit["sides"].value = ''
                    edit["x"].value = '' 
                    edit["y"].value = ''
                    edit["z"].value = ''
                    piecesize.value = None
                    chosen_index = None
            
                if b is options["raise_mblur"] and mblur_rate < 0.9 - eps:
                    mblur_rate += 0.1
                    options_dyn_layers.add( "mblur-level", title.render(str(mblur_rate),True,text_color), options_dyn_layers.layer_list["mblur-level"][1], options_dyn_layers.layer_list["mblur-level"][2], (0,title_scale) )
                elif b is options["lower_mblur"] and mblur_rate > 0.1 + eps:
                    mblur_rate -= 0.1
                    options_dyn_layers.add( "mblur-level", title.render(str(mblur_rate),True,text_color), options_dyn_layers.layer_list["mblur-level"][1], options_dyn_layers.layer_list["mblur-level"][2], (0,title_scale) )
                elif b is options["lower_light"] and light_int > 0.0:
                    light_int -= 0.1
                    if light_int < eps:
                        light_int = 0.0
                    light_amb = 1.0 - (1.0 - light_int) ** 2
                    GL.glLightfv( GL.GL_LIGHT0, GL.GL_AMBIENT, (light_amb * 0.2, light_amb * 0.2, light_amb * 0.2, 1.0) )  # Setup The Ambient Light
                    GL.glLightfv( GL.GL_LIGHT0, GL.GL_DIFFUSE, (light_amb, light_amb, light_amb, 1.0) )
                    options_dyn_layers.add( "light-level", title.render(str(light_int) ,True,text_color), options_dyn_layers.layer_list["light-level"][1], options_dyn_layers.layer_list["light-level"][2], (0,title_scale) )
                elif b is options["raise_light"] and light_int < 1.0 - eps:
                    light_int += 0.1
                    light_amb = 1.0 - (1.0 - light_int) ** 2
                    GL.glLightfv( GL.GL_LIGHT0, GL.GL_AMBIENT, (light_amb * 0.2, light_amb * 0.2, light_amb * 0.2, 0.2) )  # Setup The Ambient Light
                    GL.glLightfv( GL.GL_LIGHT0, GL.GL_DIFFUSE, (light_amb, light_amb, light_amb, 1.0) )
                    options_dyn_layers.add( "light-level", title.render(str(light_int) ,True,text_color), options_dyn_layers.layer_list["light-level"][1], options_dyn_layers.layer_list["light-level"][2], (0,title_scale) )
                        
            if decide and not b.keepfocus:
                focused = None
                
        key_hit = None
        
        static_layers.draw()
        
        if menu.get() == 1:
            edit_layers.draw()
            edit_dyn_layers.draw()
        elif menu.get() == 2:
            options_layers.draw()
            options_dyn_layers.draw()
        
        pygame.display.flip()
            
            
    lego.finish()    
    pygame.quit()
    print "Bye!"
Exemple #23
0
    def __init__(self):
        gui.gui_state.__init__(self)

        #loading superheroes

        self.library = cards.library("../dc-deck/pack1")

        self.lbl_title = gui.label()
        self.lbl_title.font = gui.get_big_font()
        self.lbl_title.text = "Game Setup"

        self.lbl_players_name = gui.label()
        self.lbl_players_name.text = "Players name"

        self.lbl_players_num = gui.label()
        self.lbl_players_num.text = "Number of players : "
        self.lbl_players_num.render()

        self.cb_players_num = gui.combobox(50, 22)
        self.cb_players_num.items.append("2")
        self.cb_players_num.items.append("3")
        self.cb_players_num.items.append("4")
        self.cb_players_num.items.append("5")
        self.cb_players_num.add_receiver(self.player_num_changed)

        self.lbl_cb_superhero_pick = gui.label()
        self.lbl_cb_superhero_pick.text = "Random superhero : "

        self.cb_superhero_pick = gui.checkbox()
        self.cb_superhero_pick.checked = True
        self.cb_superhero_pick.state_changed = self.pick_random_changed

        self.add(self.lbl_title)
        self.add(self.lbl_players_name)

        self.add(self.lbl_players_num)
        self.add(self.cb_players_num)

        self.add(self.lbl_cb_superhero_pick)
        self.add(self.cb_superhero_pick)

        self.tb_players = []
        self.lbl_players = []
        self.slider_player_superhero = []
        nb_players = int(self.cb_players_num.get_item())
        for i in range(5):
            tb = gui.textbox(180, 22)
            self.tb_players.append(tb)
            self.add(tb)
            lbl = gui.label(25, 22)
            lbl.text = str(i + 1) + " : "
            self.lbl_players.append(lbl)
            self.add(lbl)

            if i < nb_players:
                tb.visible = True
                lbl.visible = True
            else:
                tb.visible = False
                lbl.visible = False

            slider = gui.slider(100, 22)
            slider.visible = False

            for s in self.library.superheroes:
                slider.items.append(s.name)

            self.slider_player_superhero.append(slider)

            self.add(slider)

        self.btn_start = gui.button(180, 40)
        self.btn_start.caption = "Start !"
        self.btn_start.add_receivers(self.start_game)

        self.btn_back = gui.button(180, 40)
        self.btn_back.caption = "Back"
        self.btn_back.add_receivers(self.back)

        self.add(self.btn_start)
        self.add(self.btn_back)
def page(arg):
    ## Name of this Page
    #    print(arg.curpage)

    ## SAVE PROPERTIES
    arg.hprops = sn(**{})
    arg.hobjs = sn(**{})
    arg.hvars = sn(**{})
    arg.hprops.__dict__[arg.curpage] = sn(**{})
    arg.hobjs.__dict__[arg.curpage] = sn(**{})
    arg.hvars.__dict__[arg.curpage] = sn(**{})

    ####################### GUI ELEMENTS #########################
    h = sn(**{})

    ## Optional Variables for Guided Positioning
    margin = 30
    spacing = 10
    small = 150
    medium = 225
    large = 300
    height = 40

    h.bg = sn(
        **{  ## gui.image(arg,"imagename", "image.jpg", (w,h)))
            "obj":
            gui.image(arg, "pg_1-bg", "bg.jpg", (g.frameWidth, g.frameHeight)),
            "pos":
            sn(**{
                "x": 0,
                "y": 0,
                "w": g.frameWidth,
                "h": g.frameHeight,
            })
        })

    ### LABEL
    h.label1 = sn(
        **{  ## gui.label(arg,"style","align","text")
            "obj": gui.label(arg, "labelSmall", "center", "Hello There!"),
            "pos": sn(**{
                "x": margin,
                "y": 300,
                "w": medium,
                "h": height,
            })
        })

    ### ENTRY
    h.myEntry = sn(
        **
        {  ## gui.entry(arg,"style","align","text", name="entryName" ,password=True, keyboard=True, type=number),
            "obj":
            gui.entry(arg,
                      "entryMedium",
                      "center",
                      "Edit me!",
                      name="myEntry",
                      password=True,
                      keyboard=True),
            "pos":
            sn(**{
                "x": 10,
                "y": 10,
                "w": 150,
                "h": 30,
            })
        })

    h.btnTest1 = sn(
        **{  ## gui.button(arg,"style","unused","text",lambda: fcn(arg)),
            ## Function Wont Work on Quick View
            "obj":
            gui.button(arg, "btnBig", "center", "Push Me!",
                       lambda: arg.fcn_main.testFcn(arg)),
            "pos":
            sn(**{
                "x": margin,
                "y": 200,
                "w": medium,
                "h": height,
            })
        })

    h.btnTest2 = sn(
        **{  ## gui.button(arg,"style","unused","text",lambda: fcn(arg)),
            "obj":
            gui.button(arg, "btnBig", "center", "NEXT PAGE",
                       lambda: gui.showPage(arg, "pg_testing")),
            "pos":
            sn(
                **{
                    "x": margin,
                    "y": h.btnTest1.pos.y + h.btnTest1.pos.h + spacing,
                    "w": medium,
                    "h": height,
                })
        })
    #
    data = ["Entry1", "fsfs"]  ## ["Entry 1" , "Entry 2"]
    h.listbox1 = sn(
        **{
            "obj":
            gui.listbox(arg, data, "listbox1"),
            "pos":
            sn(
                **{
                    "x": margin + medium + spacing,
                    "y": margin,
                    "w": large,
                    "h": 300,
                })
        })

    data = ["Entry 1", "Entry 2"]
    h.dropdown1 = sn(
        **{
            "obj": gui.dropdown(arg, "ddstyle", "center", data, "dropdown1"),
            "pos": sn(**{
                "x": 600,
                "y": 20,
                "w": 180,
                "h": 35,
            })
        })

    rsp = db(arg, "getPathologist")
    data = []
    for dt in rsp:
        data.append([dt["name"], dt["status"]])

    h.table1 = sn(
        **{
            "obj":
            gui.ttk.Treeview(arg.master),
            "pos":
            sn(**{
                "x": 70,
                "y": 180,
                "w": 650,
                "h": 200,
            }),
            "table":
            sn(
                **{
                    "columns": [
                        sn(**{
                            "title": "Name",
                            "width": 500
                        }),
                        sn(**{
                            "title": "Status",
                            "width": 150
                        }),
                        # sn(**{"title" : "Brand", "width" : 150}),
                        # sn(**{"title" : "Equipment", "width" : 200}),
                        # sn(**{"title" : "Tag", "width" : 100}),
                    ],
                    "data": [[]],
                }),
        })

    # For Scrollbar
    h.table1Scroll = sn(
        **{
            "obj":
            gui.ttk.Scrollbar(
                arg.master, orient="vertical", command=h.table1.obj.yview),
            "pos":
            sn(**{
                "x": 725,
                "y": 180,
                "w": 25,
                "h": 200,
            })
        })

    h.table1.obj.configure(yscrollcommand=h.table1Scroll.obj.set)

    # self.canvas.bind('<Button-1>', self.clicked)
    # self.canvas.bind('<Double-1>', self.double_click)
    # self.canvas.bind('<ButtonRelease-1>', self.button_released)
    # self.canvas.bind('<B1-Motion>', self.moved)

    # Bind double click even on table1 data/row.
    h.table1.obj.bind(
        '<Double-1>',
        lambda event, t=h.table1.obj: arg.fcn_gui3.table1Double_ClickEven(arg))

    # "data" : [
    #             ["Felipe Templo Jr, MD","ON-DUTY"],
    #             ["Jeffrey S. So, MD, DPSP","OFF-DUTY"],
    #             ["Francis G. Moria, MD, MSc FPSP","OFF-DUTY"],
    #             ["Jose Maria C. Avila, MD","ON-DUTY"],
    #             ["Michelle Anne M. Latoy, MD","ON-DUTY"],
    #             ["Aida Isabel Mendoza, MD","OFF-DUTY"],
    #             ["Charles Harris, MD","OFF-DUTY"],
    #             ["Felipe Templo Jr, MD","ON-DUTY"],
    #             ["Jeffrey S. So, MD, DPSP","OFF-DUTY"],
    #             ["Francis G. Moria, MD, MSc FPSP","OFF-DUTY"],
    #             ["Jose Maria C. Avila, MD","ON-DUTY"],
    #             ["Michelle Anne M. Latoy, MD","ON-DUTY"],
    #             ["Aida Isabel Mendoza, MD","OFF-DUTY"],
    #             ["Charles Harris, MD","OFF-DUTY"],
    #         ],

    #    h.scrollAlone = sn(**{
    #        "obj": gui.scroll(arg,"scrollstyle","center"),
    #        "pos": sn(**{
    #            "x": h.listbox1.pos.x + h.listbox1.pos.w + spacing,
    #            "y": margin,
    #            "w": 50,
    #            "h": 300,
    #        })
    #    })

    # data = ["Entry1  -  ON-DUTY","fsfs  -  OFF-DUTY"] ## ["Entry 1" , "Entry 2"]

    # h.listbox1 = sn(**{
    #     "obj" : gui.listbox(arg,data,"listbox1"),
    #     "pos": sn(**{
    #         "x": 70,
    #         "y": 180,
    #         "w": 645,
    #         "h": 200,
    #     })
    # })

    # For Scrollbar
    # h.listScroll = sn(**{
    #     "obj" : ttk.Scrollbar(master, orient="vertical",
    #         # command=handle["listbox1"]["element"].yview),
    #         command=h.listbox1.obj.yview),
    #     "pos" : sn(**{
    #         "x": 200,
    #         "y": 50,
    #         "w": 40,
    #         "h": 720,
    #     })
    # })

    # ##### SUB PROPERTIES OF THE ABOVE HANDLES
    # h.listbox1.obj.configure(yscrollcommand=h.listScroll.obj.set);

    h.checkbox = sn(
        **{  ## gui.checkbox(arg,"yourText", lambda: test(arg)),
            "obj": gui.checkbox(arg, "yourText", lambda: test(arg)),
            "pos": sn(**{
                "x": 10,
                "y": 10,
                "w": 150,
                "h": 30,
            })
        })

    # array 0 is the default value.
    optionList1 = ('a', 'a', 'b', 'c')
    h.combobox = sn(
        **
        {  ## ttk.OptionMenu(arg.master,v1,*optionList1, command=lambda selected:test123123(selected))
            "obj":
            gui.combobox(arg, optionList1,
                         lambda selected_val: test(selected_val)),
            "pos":
            sn(**{
                "x": 50,
                "y": 10,
                "w": 150,
                "h": 30,
            })
        })

    h.progressbar = sn(
        **
        {  ## tttk.Progressbar(arg.master, orient = orient, length = length, mode = mode)
            "obj": gui.progressbar(arg),
            "pos": sn(**{
                "x": 100,
                "y": 10,
                "w": 150,
                "h": 30,
            })
        })

    gui.hpropsobjs(arg, h)
    return h
Exemple #25
0
    def saves(self):
        assets = self.assets
        sw, sh = self.sw, self.sh
        settings_menu.firstpane = "saves"
        self.base()
        line = gui.pane([0, 30], [sw, 20])
        line.align = "horiz"
        self.children.append(line)
        line.children.append(gui.label("Autosave?"))

        class myb(gui.checkbox):
            def click_down_over(self, *args):
                super(myb, self).click_down_over(*args)
                if self.checked:
                    assets.autosave = 1
                else:
                    assets.autosave = 0
                wini(assets)

        line.children.append(myb("autosave"))
        cb = line.children[-1]
        if assets.autosave: cb.checked = True

        line = gui.pane([0, 50], [sw, 20])
        line.align = "horiz"
        self.children.append(line)
        line.children.append(gui.label("Minutes between autosave"))

        class mymin(gui.editbox):
            def insert(self, val):
                if val not in u"0123456789":
                    return
                super(mymin, self).insert(val)

            def set(self, val):
                super(mymin, self).set(val)
                if not val:
                    val = 0
                assets.autosave_interval = int(val)
                wini(assets)

        self.autosave_interval = str(assets.autosave_interval)
        line.children.append(mymin(self, "autosave_interval"))

        line = gui.pane([0, 70], [sw, 20])
        line.align = "horiz"
        self.children.append(line)
        line.children.append(gui.label("Autosave backups"))

        class mye(gui.editbox):
            def insert(self, val):
                if val not in u"0123456789":
                    return
                super(mye, self).insert(val)

            def set(self, val):
                super(mye, self).set(val)
                if not val:
                    val = 0
                assets.autosave_keep = int(val)
                wini(assets)

        self.autosave_keep = str(assets.autosave_keep)
        line.children.append(mye(self, "autosave_keep"))

        line = gui.pane([0, 90], [sw, 20])
        line.align = "horiz"
        self.children.append(line)
        if not assets.variables.get("_allow_saveload", "true"):
            line.children.append(
                gui.label("Save/Load currently disabled by game"))
        else:
            line.children.append(gui.label("Save/Load"))
            line.children.append(gui.button(self, "save_game"))
            line.children.append(gui.button(self, "load_game"))
Exemple #26
0
    def sound(self):
        assets = self.assets
        sw, sh = self.sw, self.sh
        settings_menu.firstpane = "sound"
        self.base()
        ermsg = gui.label("")
        ermsg.rpos = [0, 140]
        ermsg.textcol = [255, 0, 0]

        line = gui.pane([0, 130], [sw, 20])
        line.align = "horiz"
        self.children.append(line)

        class myb(gui.checkbox):
            def click_down_over(self, *args):
                super(myb, self).click_down_over(*args)
                if self.checked:
                    assets.set_mute_sound(True)
                else:
                    assets.set_mute_sound(False)

        line.children.append(myb("mute sound"))
        if assets.mute_sound:
            line.children[-1].checked = True

        if android:
            return
        line = gui.pane([0, 30], [sw, 20])
        line.align = "horiz"
        self.children.append(line)

        class newr(gui.radiobutton):
            def click_down_over(s, *args):
                ermsg.text = ""
                gui.radiobutton.click_down_over(s, *args)
                assets.sound_format = int(s.text)
                if not assets.init_sound(True):
                    ermsg.text = "Sound not initialized"
                else:
                    assets.play_sound("phoenix/objection.ogg")
                    wini(assets)

        line.children.append(gui.label("Format:"))
        line.children.append(newr("11025", "formchoice"))
        line.children.append(newr("22050", "formchoice"))
        line.children.append(newr("44100", "formchoice"))
        for t in line.children:
            if t.text == str(assets.sound_format):
                t.checked = True

        line = gui.pane([0, 50], [sw, 20])
        line.align = "horiz"
        self.children.append(line)

        class newr(gui.radiobutton):
            def click_down_over(s, *args):
                ermsg.text = ""
                gui.radiobutton.click_down_over(s, *args)
                assets.sound_bits = int(s.text)
                if not assets.init_sound(True):
                    ermsg.text = "Sound not initialized"
                else:
                    assets.play_sound("phoenix/objection.ogg")
                    wini(assets)

        line.children.append(gui.label("Bits:"))
        line.children.append(newr("8", "bitschoice"))
        line.children.append(newr("16", "bitschoice"))
        for t in line.children:
            if t.text == str(assets.sound_bits):
                t.checked = True

        line = gui.pane([0, 70], [sw, 20])
        line.align = "horiz"
        self.children.append(line)

        class newr(gui.radiobutton):
            def click_down_over(s, *args):
                ermsg.text = ""
                gui.radiobutton.click_down_over(s, *args)
                assets.sound_buffer = int(s.text)
                if not assets.init_sound(True):
                    ermsg.text = "Sound not initialized"
                else:
                    assets.play_sound("phoenix/objection.ogg")
                    wini(assets)

        line.children.append(gui.label("Buffer:"))
        line.children.append(newr("512", "bufchoice"))
        line.children.append(newr("1024", "bufchoice"))
        line.children.append(newr("2048", "bufchoice"))
        line.children.append(newr("4096", "bufchoice"))
        for t in line.children:
            if t.text == str(assets.sound_buffer):
                t.checked = True

        line = gui.pane([0, 90], [sw, 20])
        line.align = "horiz"
        self.children.append(line)

        self.snd_line = gui.label("SoundVolume: %d" % assets.sound_volume)

        def mod(amt, min, max, var, play):
            def modit():
                ermsg.text = ""
                if not assets.init_sound():
                    ermsg.text = "Sound not initialized"
                else:
                    n = getattr(assets, var) + amt
                    if n > max:
                        n = max
                    if n < min:
                        n = min
                    setattr(assets, var, n)
                    self.snd_line.text = "SoundVolume: %d" % assets.sound_volume
                    self.mv_line.text = "MusicVolume: %d" % assets.music_volume
                    play()
                    wini(assets)

            return modit

        line.children.append(self.snd_line)
        line.children.append(gui.button(None, "less"))
        line.children[-1].less = mod(
            -10, 0, 100, "sound_volume",
            lambda: assets.play_sound("phoenix/objection.ogg"))
        line.children.append(gui.button(None, "more"))
        line.children[-1].more = mod(
            10, 0, 100, "sound_volume",
            lambda: assets.play_sound("phoenix/objection.ogg"))

        line = gui.pane([0, 110], [sw, 20])
        line.align = "horiz"
        self.children.append(line)

        self.mv_line = gui.label("MusicVolume: %d" % assets.music_volume)
        line.children.append(self.mv_line)
        line.children.append(gui.button(None, "less"))
        line.children[-1].less = mod(
            -10, 0, 100, "music_volume", lambda: assets.play_music(
                "Ding.ogg", loop=1, pre="sfx/", reset_track=False))
        line.children.append(gui.button(None, "more"))
        line.children[-1].more = mod(
            10, 0, 100, "music_volume", lambda: assets.play_music(
                "Ding.ogg", loop=1, pre="sfx/", reset_track=False))

        self.children.append(ermsg)
Exemple #27
0
    def display(self):
        assets = self.assets
        sw, sh = self.sw, self.sh
        settings_menu.firstpane = "display"
        self.base()
        res_box = gui.scrollpane([10, 20])
        res_box.width = 200
        res_box.height = 120
        self.res_box = res_box
        self.children.append(res_box)

        res_box.add_child(
            gui.button(
                self,
                "Change resolution (%sx%s)" % (assets.swidth, assets.sheight)))
        res = res_box.pane.children[-1]

        res.checked = True
        res.click_down_over = self.popup_resolution

        res_box.add_child(
            gui.button(self, "dualscreen mode(%s)" % (assets.screen_mode)))
        res = res_box.pane.children[-1]
        self.screens = []

        res.checked = True
        res.click_down_over = self.popup_screenmode

        res_box.add_child(gui.checkbox("smoothscale"))
        self.smoothscale = res_box.pane.children[-1]

        res_box.add_child(gui.checkbox("fullscreen"))
        self.fs = res_box.pane.children[-1]

        res_box.add_child(gui.checkbox("show fps"))
        self.show_fps = res_box.pane.children[-1]
        s_c1 = self.show_fps.set_checked

        def set_checked(val):
            s_c1(val)
            assets.show_fps = val
            wini(assets)

        self.show_fps.set_checked = set_checked

        self.frameskip = gui.checkbox("frameskip")
        res_box.add_child(self.frameskip)
        s_c = self.frameskip.set_checked

        def set_checked1(val):
            s_c(val)
            if val:
                assets.screen_refresh = 3
            else:
                assets.screen_refresh = 1
            wini(assets)

        self.frameskip.set_checked = set_checked1

        #self.reses = gui.radiobutton.groups["resopt"]
        if assets.fullscreen:
            self.fs.checked = True
        if assets.show_fps:
            self.show_fps.checked = True
        if assets.smoothscale:
            self.smoothscale.checked = True
        if assets.screen_refresh > 1:
            self.frameskip.checked = True

        self.children.append(gui.button(self, "apply", [10, 140]))
Exemple #28
0
    def __init__(self, players, superhero_pick=RandomPick, players_pick={}):
        gui.gui_state.__init__(self)
        self.library = cards.library("../dc-deck/pack1")  # todo need to find a more elegant way, not to hardcode this!
        self.game = game_object(self.library)
        self.players_cards = []
        self.played_cards = []
        self.player_widgets = []
        self.supervilain_widget = None
        self.superhero_pick = superhero_pick
        self.players_pick = players_pick

        self.current_player = None

        self.lineup_width = 106
        self.lineup_height = 150

        self.zoom_width = 424
        self.zoom_height = 600
        self.choice_overlay = None

        for p in players:
            self.game.add_player(p)

        self.handle_quit = True

        self.card_zoomed = False
        self.zoomed_widget = None

        self.game.roll_players_start()

        if self.superhero_pick == self.RandomPick:
            self.game.pick_superhero()
        elif self.superhero_pick == self.ChosenPick:
            self.game.assign_superhero(players_pick)

        self.game.create_cards()

        self.supervilain_widget = card_widget(self, self.game.current_supervilain, 106, 150)
        self.supervilain_widget.zoom_width = 424
        self.supervilain_widget.zoom_height = 600
        self.add(self.supervilain_widget)

        current_y = 0

        for p in self.game.players:
            widget = player_widget(p, 300, 120)
            widget.y = current_y
            self.add(widget)
            self.player_widgets.append(widget)
            current_y += widget.height

        self.lineups = []

        self.lineups_empty_case = []

        self.curse_stack = card_widget(self, self.game.curses[0], 106, 150)
        self.buyable_power_stack = card_widget(self, self.game.buyable_powers[0], 106, 150)

        self.add(self.curse_stack)
        self.add(self.buyable_power_stack)

        l_start_x = 250
        l_start_y = 300

        self.curse_stack.x = l_start_x - 121*2
        self.curse_stack.y = l_start_y
        self.curse_stack.zoom_width = 424
        self.curse_stack.zoom_height = 600

        self.buyable_power_stack.x = l_start_x - 121
        self.buyable_power_stack.y = l_start_y
        self.buyable_power_stack.zoom_width = 424
        self.buyable_power_stack.zoom_height = 600

        self.supervilain_widget.x = l_start_x - 121
        self.supervilain_widget.y = l_start_y + self.buyable_power_stack.height + 10

        row = 0

        for i in range(len(self.game.lineups)):
            iw = i
            if row == 1:
                iw -= 3

            widget = card_widget(self, self.game.lineups[i], 106, 150)
            self.lineups.append(widget)
            widget.x = l_start_x + 121*iw
            widget.y = l_start_y + row*160
            widget.zoom_width = 424
            widget.zoom_height = 600

            if i == 2:
                row += 1

            self.add(widget)

        #turn info
        self.lbl_current_turn = gui.label()
        self.lbl_current_turn.text = "%s turns" % self.game.get_current_player().name

        self.lbl_current_turn.x = 5
        self.lbl_current_turn.y = 5

        self.add(self.lbl_current_turn)

        self.lbl_hand = gui.label()
        self.lbl_hand.text = "Hand :"
        self.lbl_hand.x = 10
        self.lbl_hand.y = 160

        self.add(self.lbl_hand)


        self.hand_x = 70
        self.hand_y = 160
        self.hand_width = 91
        self.hand_height = 130

        self.play_x = 70
        self.play_y = 20
        self.play_width = 91
        self.play_height = 130

        #todo need a place for gained cards, or a widget that pop up on button..
        self.gained_card_x = 0
        self.gained_card_y = 0

        #quit to main menu button
        self.btn_quit_game = gui.button(200, 30)
        self.btn_quit_game.x = 10
        self.btn_quit_game.y = 10
        self.btn_quit_game.caption = "Quit game"
        self.btn_quit_game.add_receivers(self.quit_game)

        self.btn_end_turn = gui.button(200, 50)
        self.btn_end_turn.caption = "End turn"
        self.btn_end_turn.add_receivers(self.end_turn)

        self.ta_actions = gui.textarea(400, 100)
        self.ta_actions.text = "Starting game"
        self.add(self.ta_actions)

        #actions bindings
        self.game.change_turn = self.player_turn
        self.game.card_played = self.played_card
        self.game.lineup_changed = self.apply_lineup_action
        self.buyable_power_stack.activated = self.buy_card
        self.game.drawn_card = self.drawn_card
        self.game.ask_player = self.ask_player
        self.game.game_text = self.ta_actions.append
        self.game.refresh_hands = self.refresh_hands
        self.game.start_game()
Exemple #29
0
 def make_button(self,text,pos):
     b = gui.button(self,text,pos)
     self.children.append(b)
     return b
Exemple #30
0
def initButtonControls(x, y):
    selectButton = gui.button("Select", 10+x, 5+y, selectHandler)
    pass
Exemple #31
0

FPS_LIMIT = 30 # frames per second

# Init
pygame.mixer.init(engine.synths.SOUND_SAMPLERATE, -16, 1)
pygame.init()
pygame.display.set_caption("8BitTracker")
screen = gui.init_screen(gui.SCREEN_WIDTH, gui.SCREEN_HEIGHT)

# Testing beep. This one lasts for 100 milliseconds and is at 880Hz (A5).
sound = engine.synths.make_beep(880, .1)

labelFPS = gui.label(10, 24, "60 fps")

buttonAccept = gui.button(10, 15, "Accept", 0, 8, False)

gui.rect(screen.chars, 9, 9, 13, 3, 12, 4, 0)

lastRefresh = 0
currentFPS = 0
# Main Loop
while 1:
    # events
    for event in pygame.event.get():
        if event.type is pygame.KEYDOWN:

            # Press ESCAPE to exit the program
            if event.key is pygame.K_ESCAPE:
                sys.exit()
Exemple #32
0
    def run(self):
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                return
            elif event.type == pygame.VIDEORESIZE:
                pygame.display.set_mode(
                    (event.size[0], event.size[1] - GRID_CELL_SIZE),
                    pygame.RESIZABLE)
                break
        pygame.init()

        self.screen = pygame.display.get_surface()
        if self.screen:
            self.screensize = self.screen.get_size()
        else:
            info = pygame.display.Info()
            self.screensize = (info.current_w, info.current_h)
            self.screen = pygame.display.set_mode(self.screensize)

        screensize = self.screensize

        decksel = False
        c8sheader = gui.label((100, 300), (200, 75), _('Crazy Eights'),
                              (0, 128, 0))
        c8s2p = gui.button((100, 400), (200, 35), _("Two players"))
        c8s3p = gui.button((100, 450), (200, 35), _("Three players"))
        c8s4p = gui.button((100, 500), (200, 35), _("Four players"))

        c8sframe = gui.frame((c8sheader, c8s2p, c8s3p, c8s4p), (75, 275),
                             (250, 275))

        maindeck = gui.button((50, screensize[1] - 75), (85, 35), _("Deck"))
        mainphoto = gui.button((screensize[0] - 200, screensize[1] - 75),
                               (160, 35), _("Photo deck"))
        mainheader = gui.image((50, 25), (screensize[0] - 100, 200),
                               'fiftytwo.png', -1)

        mainframe = gui.frame((mainheader, maindeck, mainphoto),
                              (25, screensize[1] - 100),
                              (screensize[0] - 50, 75))

        deckselexit = gui.button((screensize[0] - 215, screensize[1] - 145),
                                 (115, 35), _("Cancel"))
        deckfromjournal = gui.button(
            (screensize[0] - 445, screensize[1] - 145), (200, 35),
            _("from Journal"))
        deckselregular = gui.image(
            (115, 115), (crazyeights.card_width(), crazyeights.card_height()),
            'back.regular.png')
        deckselgnome = gui.image(
            (300, 115), (crazyeights.card_width(), crazyeights.card_height()),
            'back.gnome.png')
        deckselparis = gui.image(
            (485, 115), (crazyeights.card_width(), crazyeights.card_height()),
            'back.paris.png')
        deckselshapes = gui.image(
            (670, 115), (crazyeights.card_width(), crazyeights.card_height()),
            'back.shapes.png')
        self.deckseluser = gui.image(
            (855, 115), (crazyeights.card_width(), crazyeights.card_height()),
            'back.user.png')

        deckselpopup = gui.popup(
            (deckselexit, deckfromjournal, deckselregular, deckselgnome,
             deckselparis, deckselshapes, self.deckseluser), (100, 100),
            (screensize[0] - 200, screensize[1] - 200))

        mouseposition = [0, 0, 0]

        self.screen.fill((192, 64, 255))

        # Set the name of the players
        names = []
        names.append('l' + _('You'))
        names.append('a' + _('XO player #1'))
        names.append('a' + _('XO player #2'))
        names.append('a' + _('XO player #3'))
        names.append('a' + _('The XO'))

        fpslimiter = pygame.time.Clock()

        while True:
            fpslimiter.tick(20)

            while Gtk.events_pending():
                Gtk.main_iteration()

            for event in pygame.event.get():

                if event.type == pygame.MOUSEMOTION:
                    mouseposition[0] = event.pos[0]
                    mouseposition[1] = event.pos[1]
                elif event.type == pygame.MOUSEBUTTONDOWN:
                    mouseposition[2] = 1
                elif event.type == pygame.MOUSEBUTTONUP:
                    mouseposition[2] = 0
                    if not decksel and c8s2p.detect_click(event.pos):
                        crazyeights.main((names[4], names[0]), screensize)
                        self.screen.fill(MMCOL)
                        pygame.event.set_allowed(pygame.MOUSEMOTION)
                    elif not decksel and c8s3p.detect_click(event.pos):
                        crazyeights.main((names[1], names[2], names[0]),
                                         screensize)
                        self.screen.fill(MMCOL)
                        pygame.event.set_allowed(pygame.MOUSEMOTION)
                    elif not decksel and c8s4p.detect_click(event.pos):
                        crazyeights.main(
                            (names[1], names[2], names[0], names[3]),
                            screensize)
                        self.screen.fill(MMCOL)
                        pygame.event.set_allowed(pygame.MOUSEMOTION)
                    elif not decksel and maindeck.detect_click(event.pos):
                        decksel = True
                    elif not decksel and mainphoto.detect_click(event.pos):
                        self.photo()
                        self.screen.fill(MMCOL)
                    elif decksel and deckselexit.detect_click(event.pos):
                        decksel = False
                        self.screen.fill(MMCOL)
                    elif decksel and deckfromjournal.detect_click(event.pos):
                        picture = self.parent.load_image_from_journal()
                        if picture:
                            self.update_user_deck(picture.file_path)
                        self.screen.fill(MMCOL)
                    elif decksel and deckselgnome.detect_click(event.pos):
                        deck.deck = 'gnome'
                        decksel = False
                        self.screen.fill(MMCOL)
                    elif decksel and deckselregular.detect_click(event.pos):
                        deck.deck = 'regular'
                        decksel = False
                        self.screen.fill(MMCOL)
                    elif decksel and deckselparis.detect_click(event.pos):
                        deck.deck = 'paris'
                        decksel = False
                        self.screen.fill(MMCOL)
                    elif decksel and deckselshapes.detect_click(event.pos):
                        deck.deck = 'shapes'
                        decksel = False
                        self.screen.fill(MMCOL)
                    elif decksel and self.deckseluser.detect_click(event.pos):
                        deck.deck = 'user'
                        decksel = False
                        self.screen.fill(MMCOL)

            if not decksel:
                c8sframe.update()
                c8sframe.draw(self.screen, mouseposition)

                mainframe.update()
                mainframe.draw(self.screen, mouseposition)
            else:
                deckselpopup.update()
                deckselpopup.draw(self.screen, mouseposition)

            pygame.display.flip()
Exemple #33
0
    def photo(self):
        screensize = self.screensize
        mouseposition = [0, 0, 0]
        self.screen = pygame.display.get_surface()
        fpslimiter = pygame.time.Clock()
        photodynamic = gui.image((125, 125), (640, 480), 'back.regular.png')
        photoreturn = gui.button((screensize[0] - 300, screensize[1] - 175),
                                 (150, 35), _("Cancel"))
        photopopup = gui.popup((photodynamic, photoreturn), (100, 100),
                               (screensize[0] - 200, screensize[1] - 200))

        pygame.camera.init()
        cams = pygame.camera.list_cameras()
        if cams:
            photocamera = pygame.camera.Camera(cams[0], (640, 480), 'RGB')
            photocamera.start()
            photocamera.set_controls(True, False)
            camera_size = photocamera.get_size()
            capture = pygame.surface.Surface(camera_size, 0, self.screen)
            photodynamic.image = photocamera.get_image(capture)

            running = True

            while running:
                fpslimiter.tick(20)

                photodynamic.image = photocamera.get_image(capture)

                while Gtk.events_pending():
                    Gtk.main_iteration()

                for event in pygame.event.get():
                    """if event.type == pygame.KEYDOWN:
                        if event.key == pygame.K_SPACE:
                            photodynamic.image = photocamera.get_image(capture)"""
                    if event.type == pygame.MOUSEMOTION:
                        mouseposition[0] = event.pos[0]
                        mouseposition[1] = event.pos[1]
                    elif event.type == pygame.MOUSEBUTTONDOWN:
                        mouseposition[2] = 1
                        self.flush_queue()
                    elif event.type == pygame.MOUSEBUTTONUP:
                        mouseposition[2] = 0
                        if photoreturn.detect_click(event.pos):
                            running = False
                        elif photodynamic.detect_click(event.pos):
                            r = photodynamic.image.get_rect()
                            r.x = mouseposition[0] - 125
                            r.y = mouseposition[1] - 125
                            r.w = 156
                            r.h = 244
                            sub = photodynamic.image.subsurface(r)
                            # borde negro
                            pygame.draw.rect(sub, (0, 0, 0), (0, 0, r.w, r.h),
                                             3)
                            pygame.image.save(sub, 'data/back.user.png')
                            self.deckseluser.image = sub
                            deck.deck = 'user'
                            running = False

                photopopup.update()
                photopopup.draw(self.screen, mouseposition)
                r = self.screen.get_rect()
                r.x = 125
                r.y = 125
                r.w = 640
                r.h = 480
                self.screen.set_clip(r)

                r.x = mouseposition[0]
                r.y = mouseposition[1]
                r.w = 156
                r.h = 244

                pygame.draw.rect(self.screen, (255, 0, 0), r, 4)
                self.screen.set_clip()

                pygame.display.flip()

            photocamera.stop()
Exemple #34
0
 def make_button(self, text, pos):
     b = gui.button(self, text, pos)
     self.children.append(b)
     return b
Exemple #35
0
    
    pass


if __name__ == "__main__":
    screen = pygame.display.set_mode((800, 600))
    mytimer = pygame.time.Clock()

    def toolHandler(selectedTool):
        global tool
        tool = selectedTool
        printTool()

    def selectHandler():
        toolHandler(SELECT)
    selectButton = gui.button("Select", 10, 5, selectHandler)


    def createBoxHandler():
        toolHandler(CREATEBOX)
    boxButton = gui.button("Box", 10, 35, createBoxHandler)

    def createSphereHandler():
        toolHandler(CREATESPHERE)
    sphereButton = gui.button("Sphere", 10, 65, createSphereHandler)

    def createConnectionHandler():
        toolHandler(CREATECONNECTION)
    connectionButton = gui.button("Connection", 10, 95, createConnectionHandler)

    def printTool():
Exemple #36
0
 def saves(self):
     assets = self.assets
     sw,sh = self.sw,self.sh
     settings_menu.firstpane = "saves"
     self.base()
     line = gui.pane([0,30],[sw,20])
     line.align = "horiz"
     self.children.append(line)
     line.children.append(gui.label("Autosave?"))
     class myb(gui.checkbox):
         def click_down_over(self,*args):
             super(myb,self).click_down_over(*args)
             if self.checked:
                 assets.autosave = 1
             else:
                 assets.autosave = 0
             wini(assets)
     line.children.append(myb("autosave"))
     cb = line.children[-1]
     if assets.autosave: cb.checked = True
         
     line = gui.pane([0,50],[sw,20])
     line.align = "horiz"
     self.children.append(line)
     line.children.append(gui.label("Minutes between autosave"))
     class mymin(gui.editbox):
         def insert(self,val):
             if val not in u"0123456789":
                 return
             super(mymin,self).insert(val)
         def set(self,val):
             super(mymin,self).set(val)
             if not val:
                 val = 0
             assets.autosave_interval = int(val)
             wini(assets)
     self.autosave_interval = str(assets.autosave_interval)
     line.children.append(mymin(self,"autosave_interval"))
         
     line = gui.pane([0,70],[sw,20])
     line.align = "horiz"
     self.children.append(line)
     line.children.append(gui.label("Autosave backups"))
     class mye(gui.editbox):
         def insert(self,val):
             if val not in u"0123456789":
                 return
             super(mye,self).insert(val)
         def set(self,val):
             super(mye,self).set(val)
             if not val:
                 val = 0
             assets.autosave_keep = int(val)
             wini(assets)
     self.autosave_keep = str(assets.autosave_keep)
     line.children.append(mye(self,"autosave_keep"))
     
     line = gui.pane([0,90],[sw,20])
     line.align = "horiz"
     self.children.append(line)
     if not assets.variables.get("_allow_saveload","true"):
         line.children.append(gui.label("Save/Load currently disabled by game"))
     else:
         line.children.append(gui.label("Save/Load"))
         line.children.append(gui.button(self,"save_game"))
         line.children.append(gui.button(self,"load_game"))
Exemple #37
0
    def sound(self):
        assets = self.assets
        sw,sh = self.sw,self.sh
        settings_menu.firstpane = "sound"
        self.base()
        ermsg = gui.label("")
        ermsg.rpos = [0,140]
        ermsg.textcol = [255,0,0]
        
        line = gui.pane([0,130],[sw,20])
        line.align = "horiz"
        self.children.append(line)
        class myb(gui.checkbox):
            def click_down_over(self,*args):
                super(myb,self).click_down_over(*args)
                if self.checked:
                    assets.set_mute_sound(True)
                else:
                    assets.set_mute_sound(False)
        line.children.append(myb("mute sound"))
        if assets.mute_sound:
            line.children[-1].checked = True
        
        if android:
            return
        line = gui.pane([0,30],[sw,20])
        line.align = "horiz"
        self.children.append(line)
        class newr(gui.radiobutton):
            def click_down_over(s,*args):
                ermsg.text = ""
                gui.radiobutton.click_down_over(s,*args)
                assets.sound_format = int(s.text)
                if not assets.init_sound(True): 
                    ermsg.text = "Sound not initialized"
                else:
                    assets.play_sound("phoenix/objection.ogg")
                    wini(assets)
        line.children.append(gui.label("Format:"))
        line.children.append(newr("11025","formchoice"))
        line.children.append(newr("22050","formchoice"))
        line.children.append(newr("44100","formchoice"))
        for t in line.children:
            if t.text==str(assets.sound_format):
                t.checked = True
        
        line = gui.pane([0,50],[sw,20])
        line.align = "horiz"
        self.children.append(line)
        class newr(gui.radiobutton):
            def click_down_over(s,*args):
                ermsg.text = ""
                gui.radiobutton.click_down_over(s,*args)
                assets.sound_bits = int(s.text)
                if not assets.init_sound(True): 
                    ermsg.text = "Sound not initialized"
                else:
                    assets.play_sound("phoenix/objection.ogg")
                    wini(assets)
        line.children.append(gui.label("Bits:"))
        line.children.append(newr("8","bitschoice"))
        line.children.append(newr("16","bitschoice"))
        for t in line.children:
            if t.text==str(assets.sound_bits):
                t.checked = True
                
        line = gui.pane([0,70],[sw,20])
        line.align = "horiz"
        self.children.append(line)
        class newr(gui.radiobutton):
            def click_down_over(s,*args):
                ermsg.text = ""
                gui.radiobutton.click_down_over(s,*args)
                assets.sound_buffer = int(s.text)
                if not assets.init_sound(True): 
                    ermsg.text = "Sound not initialized"
                else:
                    assets.play_sound("phoenix/objection.ogg")
                    wini(assets)
        line.children.append(gui.label("Buffer:"))
        line.children.append(newr("512","bufchoice"))
        line.children.append(newr("1024","bufchoice"))
        line.children.append(newr("2048","bufchoice"))
        line.children.append(newr("4096","bufchoice"))
        for t in line.children:
            if t.text==str(assets.sound_buffer):
                t.checked = True
                
        line = gui.pane([0,90],[sw,20])
        line.align = "horiz"
        self.children.append(line)

        self.snd_line = gui.label("SoundVolume: %d"%assets.sound_volume)
        def mod(amt,min,max,var,play):
            def modit():
                ermsg.text = ""
                if not assets.init_sound(): 
                    ermsg.text = "Sound not initialized"
                else:
                    n = getattr(assets,var) + amt
                    if n>max:
                        n = max
                    if n<min:
                        n=min
                    setattr(assets,var,n)
                    self.snd_line.text = "SoundVolume: %d"%assets.sound_volume
                    self.mv_line.text = "MusicVolume: %d"%assets.music_volume
                    play()
                    wini(assets)
            return modit
        line.children.append(self.snd_line)
        line.children.append(gui.button(None,"less"))
        line.children[-1].less = mod(-10,0,100,"sound_volume",lambda:assets.play_sound("phoenix/objection.ogg"))
        line.children.append(gui.button(None,"more"))
        line.children[-1].more = mod(10,0,100,"sound_volume",lambda:assets.play_sound("phoenix/objection.ogg"))
                
        line = gui.pane([0,110],[sw,20])
        line.align = "horiz"
        self.children.append(line)
        
        self.mv_line = gui.label("MusicVolume: %d"%assets.music_volume)
        line.children.append(self.mv_line)
        line.children.append(gui.button(None,"less"))
        line.children[-1].less = mod(-10,0,100,"music_volume",lambda:assets.play_music("Ding.ogg",loop=1,pre="data/sfx/",reset_track=False))
        line.children.append(gui.button(None,"more"))
        line.children[-1].more = mod(10,0,100,"music_volume",lambda:assets.play_music("Ding.ogg",loop=1,pre="data/sfx/",reset_track=False))

        self.children.append(ermsg)
Exemple #38
0
    def display(self):
        assets = self.assets
        sw,sh = self.sw,self.sh
        settings_menu.firstpane = "display"
        self.base()
        res_box = gui.scrollpane([10,20])
        res_box.width = 200
        res_box.height = 120
        self.res_box = res_box
        self.children.append(res_box)
        
        res_box.add_child(gui.button(self,"Change resolution (%sx%s)"%(assets.swidth,assets.sheight)))
        res = res_box.pane.children[-1]

        res.checked = True
        res.click_down_over = self.popup_resolution
        
        res_box.add_child(gui.button(self,"dualscreen mode(%s)"%(assets.screen_mode)))
        res = res_box.pane.children[-1]
        self.screens = []

        res.checked = True
        res.click_down_over = self.popup_screenmode
        
        res_box.add_child(gui.checkbox("smoothscale"))
        self.smoothscale = res_box.pane.children[-1]
        
        res_box.add_child(gui.checkbox("fullscreen"))
        self.fs = res_box.pane.children[-1]
        
        res_box.add_child(gui.checkbox("show fps"))
        self.show_fps = res_box.pane.children[-1]
        s_c1 = self.show_fps.set_checked
        def set_checked(val):
            s_c1(val)
            assets.show_fps = val
            wini(assets)
        self.show_fps.set_checked = set_checked
        
        self.frameskip = gui.checkbox("frameskip")
        res_box.add_child(self.frameskip)
        s_c = self.frameskip.set_checked
        def set_checked1(val):
            s_c(val)
            if val:
                assets.screen_refresh = 3
            else:
                assets.screen_refresh = 1
            wini(assets)
        self.frameskip.set_checked = set_checked1

        #self.reses = gui.radiobutton.groups["resopt"]
        if assets.fullscreen:
            self.fs.checked = True
        if assets.show_fps:
            self.show_fps.checked = True
        if assets.smoothscale:
            self.smoothscale.checked = True
        if assets.screen_refresh>1:
            self.frameskip.checked = True
                
        self.children.append(gui.button(self,"apply",[10,140]))
Exemple #39
0
    def __init__(self):
        gui.gui_state.__init__(self)

        #loading superheroes

        self.library = cards.library("../dc-deck/pack1")

        self.lbl_title = gui.label()
        self.lbl_title.font = gui.get_big_font()
        self.lbl_title.text = "Game Setup"

        self.lbl_players_name = gui.label()
        self.lbl_players_name.text = "Players name"

        self.lbl_players_num = gui.label()
        self.lbl_players_num.text = "Number of players : "
        self.lbl_players_num.render()

        self.cb_players_num = gui.combobox(50, 22)
        self.cb_players_num.items.append("2")
        self.cb_players_num.items.append("3")
        self.cb_players_num.items.append("4")
        self.cb_players_num.items.append("5")
        self.cb_players_num.add_receiver(self.player_num_changed)

        self.lbl_cb_superhero_pick = gui.label()
        self.lbl_cb_superhero_pick.text = "Random superhero : "

        self.cb_superhero_pick = gui.checkbox()
        self.cb_superhero_pick.checked = True
        self.cb_superhero_pick.state_changed = self.pick_random_changed

        self.add(self.lbl_title)
        self.add(self.lbl_players_name)

        self.add(self.lbl_players_num)
        self.add(self.cb_players_num)

        self.add(self.lbl_cb_superhero_pick)
        self.add(self.cb_superhero_pick)

        self.tb_players = []
        self.lbl_players = []
        self.slider_player_superhero = []
        nb_players = int(self.cb_players_num.get_item())
        for i in range(5):
            tb = gui.textbox(180, 22)
            self.tb_players.append(tb)
            self.add(tb)
            lbl = gui.label(25, 22)
            lbl.text = str(i+1) + " : "
            self.lbl_players.append(lbl)
            self.add(lbl)

            if i < nb_players:
                tb.visible = True
                lbl.visible = True
            else:
                tb.visible = False
                lbl.visible = False

            slider = gui.slider(100, 22)
            slider.visible = False

            for s in self.library.superheroes:
                slider.items.append(s.name)

            self.slider_player_superhero.append(slider)

            self.add(slider)

        self.btn_start = gui.button(180, 40)
        self.btn_start.caption = "Start !"
        self.btn_start.add_receivers(self.start_game)

        self.btn_back = gui.button(180, 40)
        self.btn_back.caption = "Back"
        self.btn_back.add_receivers(self.back)

        self.add(self.btn_start)
        self.add(self.btn_back)