class NormalGUI(Manager): def __init__(self): friendBtn = HighlightedButton("", on_release=self.openFriends, width=32, height=32, path='btn_friendwindow') ignoreBtn = HighlightedButton("", on_release=self.openIgnores, width=32, height=32, path='btn_ignorewindow') #meneBtn = HighlightedButton("",on_release=self.openMenes,width=50,height=50,path='es') meneBtn = HighlightedButton("", on_release=self.openMenes, width=50, height=50, path='menes') fightBtn = HighlightedButton("", on_release=self.openMenes, width=50, height=50, path='es') if g.latencyType == PING_TYPE_GREEN: path = 'ping_green' elif g.latencyType == PING_TYPE_YELLOW: path = 'ping_yellow' else: path = 'ping_red' self.latencyBtn = HoverGraphic(width=15, height=32, path=path, hover=onHover, hoveringType=HOVERING_PING) guildBtn = HighlightedButton("", on_release=self.openGuild, width=32, height=32, path='guild') settingsBtn = HighlightedButton("", on_release=self.openSettings, width=32, height=32, path='settings') self.mailBtn = HighlightedButton("", on_release=self.openMail, width=32, height=32, path='mail') bagBtn = HoverGraphic(width=32, height=32, path='bag', hover=onHover, hoveringType=HOVERING_BAG, showHighlight=True) self.horzCont = HorizontalContainer(content=[ friendBtn, ignoreBtn, meneBtn, fightBtn, guildBtn, self.latencyBtn, settingsBtn, bagBtn ], align=VALIGN_BOTTOM) Manager.__init__(self, self.horzCont, window=g.screen, batch=g.guiBatch, is_movable=False, anchor=ANCHOR_BOTTOM, offset=(0, 20), theme=g.theme) if len(g.mails) > 0: self.addMail() def setPos(self, x, y): self.set_position(x, y) def openGuild(self, event): if g.guildWindowOpened: g.gameEngine.graphics.guildWindow.delete(None) else: g.gameEngine.graphics.initGuildWindow() def openMail(self, event): if g.postWindowOpened: g.gameEngine.graphics.postWindow.delete(None) else: g.gameEngine.graphics.initPostWindow() def addMail(self): found = False for c in self.horzCont._content: if c._path[0] == 'mail': found = True if not found: self.horzCont.add(self.mailBtn) def removeMail(self): found = False for c in self.horzCont._content: if c._path[0] == 'mail': found = True if found: self.horzCont.remove(self.mailBtn) def refreshLatencybar(self): if g.latencyType == PING_TYPE_GREEN: self.latencyBtn._path = 'ping_green' elif g.latencyType == PING_TYPE_YELLOW: self.latencyBtn._path = 'ping_yellow' else: self.latencyBtn._path = 'ping_red' self.latencyBtn.reload() self.latencyBtn.reset_size() def delete(self): super(Manager, self).delete() def openMenes(self, event): if g.meneWindowOpened: g.gameEngine.graphics.meneWindow.delete(None) else: g.gameEngine.graphics.initMeneWindow() def openSettings(self, event): g.gameEngine.graphics.closeAllWindows() if g.escWindowOpened: g.gameEngine.graphics.escWindow.delete(None) g.escWindowOpened = False else: if g.settingsWindowOpened: g.settingsWindowOpened = False g.gameEngine.graphics.settingsWindow.delete(None) g.escWindowOpened = True g.gameEngine.graphics.initEscWindow() def printLatency(self, event): pass #constructText("Ping is "+str(int(g.latency))+' ms.',g.helpColor) #g.chatLog+='\n{background_color '+str(g.postBgColor)+'}{color '+str(g.helpColor)+'}' #g.chatLog+="Ping is "+str(int(g.latency))+' ms.' #g.chatLog+='\n' #checkChatLogLength() #g.gameEngine.graphics.chat.textArea.update_text(g.chatLog) def openFriends(self, event): if g.friendWindowOpened: g.gameEngine.graphics.friendWindow.delete(None) else: g.gameEngine.graphics.initFriendWindow() def openIgnores(self, event): if g.ignoreWindowOpened: g.gameEngine.graphics.ignoreWindow.delete(None) else: g.gameEngine.graphics.initIgnoreWindow()
class TestHorizontalContainer(TestPygletGUI): """ This test case tests basic functionality of an horizontal container. """ def setUp(self): super().setUp() self.container = HorizontalContainer([Viewer(width=50, height=50), Viewer(width=50, height=50)]) self.manager = Manager(self.container, window=self.window, batch=self.batch, theme=self.theme) def _test_content_position(self): """ Tests the position of the two widgets within the container. """ # first widget x is the left x (container.x) self.assertEqual(self.container.content[0].x, self.container.x) # second widget x is the left x (container.x + container.content[0].width) # plus the padding (self.container.padding) self.assertEqual(self.container.content[1].x, self.container.x + self.container.content[0].width + self.container.padding) def test_top_down_draw(self): """ Tests that the manager's size was set according to the child size. """ # manager size is correct self.assertEqual(self.manager.width, 100 + self.container.padding) self.assertEqual(self.manager.height, 50) # widget is centered in the window self.assertEqual(self.container.x, self.window.width/2 - self.container.width/2) self.assertEqual(self.container.y, self.window.height/2 - self.container.height/2) self._test_content_position() def test_bottom_up_draw(self): """ Tests that the manager's size is modified if we set a new size to the widget. """ self.container.content[0].width = 60 self.container.content[0].height = 60 self.container.content[0].parent.reset_size() # manager width was set self.assertEqual(self.manager.width, 110 + self.container.padding) # container height was set self.assertEqual(self.container.height, 60) # container and manager were re-centered in the window self.assertEqual(self.container.x, self.window.width/2 - self.container.width/2) self.assertEqual(self.manager.y, self.window.height/2 - self.manager.height/2) self._test_content_position() def test_add_widget(self): self.container.add(Viewer(width=50, height=50)) self.assertEqual(self.manager.width, 150 + 2*self.container.padding) self.assertEqual(self.manager.height, 50) self._test_content_position() def test_remove_widget(self): self.container.remove(self.container.content[0]) self.assertEqual(self.manager.width, 50 + self.container.padding) self.assertEqual(self.manager.height, 50) def tearDown(self): self.manager.delete() super().tearDown()
class AbilityButtons(Manager): def __init__(self, ability1=None, ability2=None, ability3=None, ability4=None): self.a1 = ability1 self.a2 = ability2 self.a3 = ability3 self.a4 = ability4 #self.abilityCont=[] abilityButtons = [] for i in xrange(4): abilityButtons.append( Graphic(width=100, height=100, path='abilityoutline')) self.abilityCont = HorizontalContainer(content=abilityButtons, align=VALIGN_BOTTOM) Manager.__init__(self, self.abilityCont, window=g.screen, batch=g.guiBatch, is_movable=False, anchor=ANCHOR_BOTTOM, offset=(0, 0), theme=g.theme) self.constructAbilityButtons() def setPos(self, x, y): self.set_position(x, y) def delete(self): super(Manager, self).delete() def changeDisableds(self, disabled=True): try: for ability in self.abilityCont.content: ability.changeDisable(disabled) except: return def updateAbilityButtons(self, ability1=None, ability2=None, ability3=None, ability4=None): self.a1 = ability1 self.a2 = ability2 self.a3 = ability3 self.a4 = ability4 #for i in reversed(range(len(self.abilityCont.content))): # self.abilityCont.remove(self.abilityCont.content[0]) self.constructAbilityButtons() self.abilityCont.layout() def constructAbilityButtons(self): for i in reversed(range(len(self.abilityCont.content))): self.abilityCont.remove(self.abilityCont.content[0]) if self.a1 is not None: self.abilityCont.add( AbilityButton(width=100, height=100, argument=self.a1.id, on_press=sendAttack, texture=g.gameEngine.resManager.abilities[ self.a1.spriteName], outline='abilityoutline', hover=onHover, hoveringType=HOVERING_ABILITY, arguments={ 'name': self.a1.name, 'type': getAbilityTypeName(self.a1.abilityType), 'info': self.a1.infotext, "args": (self.a1.power, self.a1.length) })) else: self.abilityCont.add( Graphic(width=100, height=100, path='abilityoutline')) if self.a2 is not None: self.abilityCont.add( AbilityButton(width=100, height=100, argument=self.a2.id, on_press=sendAttack, texture=g.gameEngine.resManager.abilities[ self.a2.spriteName], outline='abilityoutline', hover=onHover, hoveringType=HOVERING_ABILITY, arguments={ 'name': self.a2.name, 'type': getAbilityTypeName(self.a2.abilityType), 'info': self.a2.infotext, "args": (self.a2.power, self.a2.length) })) else: self.abilityCont.add( Graphic(width=100, height=100, path='abilityoutline')) if self.a3 is not None: self.abilityCont.add( AbilityButton(width=100, height=100, argument=self.a3.id, on_press=sendAttack, texture=g.gameEngine.resManager.abilities[ self.a3.spriteName], outline='abilityoutline', hover=onHover, hoveringType=HOVERING_ABILITY, arguments={ 'name': self.a3.name, 'type': getAbilityTypeName(self.a3.abilityType), 'info': self.a3.infotext, "args": (self.a3.power, self.a3.length) })) else: self.abilityCont.add( Graphic(width=100, height=100, path='abilityoutline')) if self.a4 is not None: self.abilityCont.add( AbilityButton(width=100, height=100, argument=self.a4.id, on_press=sendAttack, texture=g.gameEngine.resManager.abilities[ self.a4.spriteName], outline='abilityoutline', hover=onHover, hoveringType=HOVERING_ABILITY, arguments={ 'name': self.a4.name, 'type': getAbilityTypeName(self.a4.abilityType), 'info': self.a4.infotext, "args": (self.a4.power, self.a4.length) })) else: self.abilityCont.add( Graphic(width=100, height=100, path='abilityoutline')) if g.esAmount > 0 and not iHasMene(spriteName=g.enemyMene.spriteName): disabled = False else: disabled = True self.abilityCont.add( AbilityButton( width=50, height=50, argument=Items["es"]["id"], disabled=disabled, on_press=useES, texture=g.gameEngine.resManager.items[Items["es"]["sprite"]], outline='abilityoutline', hover=onHover, hoveringType=HOVERING_ABILITY, arguments={ 'name': Items["es"]["name"], 'info': Items["es"]["info"], "args": () })) self.abilityCont.add( AbilityButton(width=50, height=50, on_press=openMeneSelector, path='mymenes', outline='abilityoutline', hover=onHover, hoveringType=HOVERING_ABILITY, arguments={ 'name': "Change Mene", 'info': "Don't have balls do play till death?? :D", "args": () })) self.abilityCont.add( AbilityButton(width=50, height=50, on_press=leaveMatchStartConfirm, path='leavematch', outline='abilityoutline', hover=onHover, hoveringType=HOVERING_ABILITY, arguments={ 'name': "Leave Match", 'info': "Run away :DD pussy :D", "args": () }))
class TestHorizontalContainer(TestPygletGUI): """ This test case tests basic functionality of an horizontal container. """ def setUp(self): super(TestHorizontalContainer, self).setUp() self.container = HorizontalContainer([Viewer(width=50, height=50), Viewer(width=50, height=50)]) self.manager = Manager(self.container, window=self.window, batch=self.batch, theme=self.theme) def _test_content_position(self): """ Tests the position of the two widgets within the container. """ # first widget x is the left x (container.x) self.assertEqual(self.container.content[0].x, self.container.x) # second widget x is the left x (container.x + container.content[0].width) # plus the padding (self.container.padding) self.assertEqual(self.container.content[1].x, self.container.x + self.container.content[0].width + self.container.padding) def test_top_down_draw(self): """ Tests that the manager's size was set according to the child size. """ # manager size is correct self.assertEqual(self.manager.width, 100 + self.container.padding) self.assertEqual(self.manager.height, 50) # widget is centered in the window self.assertEqual(self.container.x, self.window.width//2 - self.container.width//2) self.assertEqual(self.container.y, self.window.height//2 - self.container.height//2) self._test_content_position() def test_bottom_up_draw(self): """ Tests that the manager's size is modified if we set a new size to the widget. """ self.container.content[0].width = 60 self.container.content[0].height = 60 self.container.content[0].parent.reset_size() # manager width was set self.assertEqual(self.manager.width, 110 + self.container.padding) # container height was set self.assertEqual(self.container.height, 60) # container and manager were re-centered in the window self.assertEqual(self.container.x, self.window.width//2 - self.container.width//2) self.assertEqual(self.manager.y, self.window.height//2 - self.manager.height//2) self._test_content_position() def test_add_widget(self): self.container.add(Viewer(width=50, height=50)) self.assertEqual(self.manager.width, 150 + 2*self.container.padding) self.assertEqual(self.manager.height, 50) self._test_content_position() def test_remove_widget(self): self.container.remove(self.container.content[0]) self.assertEqual(self.manager.width, 50 + self.container.padding) self.assertEqual(self.manager.height, 50) def tearDown(self): self.manager.delete() super(TestHorizontalContainer, self).tearDown()
class MeneWindow(Manager): def __init__(self): t1=time.time()*1000 g.meneWindowOpened = True label1=Label("My Menes",bold=True,color=g.loginFontColor) closeBtn =HighlightedButton("",on_release=self.delete,width=19,height=19,path='delete') self.meneCont= [] self.menes=[] self.established=False for c in meneList: self.menes.append({"name":c.name, "hp":c.hp, "maxhp":c.maxhp, "xp":c.xp, "level":c.level, "power":c.power, "id":c.ID, "defense":c.defense, "speed":c.speed, "attack1":c.attack1, "attack2":c.attack2, "attack3":c.attack3, "attack4":c.attack4, "sprite":c.spriteName, "defaultmene":c.defaultMene}) #self.menes = [{"name":"Hitler","hp":100,"level":1,"power":50,"defense":40,"speed":60,"sprite":'americanbear'},{"name":"Stalin","hp":100,"level":1,"power":50,"defense":40,"speed":60,"sprite":'lorslara'},{"name":"Ebin","hp":100,"level":1,"power":50,"defense":40,"speed":60,"sprite":'squadlider'},{"name":"Mao","hp":100,"level":1,"power":50,"defense":40,"speed":60,"sprite":'mongolbear'},{"name":"Uusi mene","hp":100,"level":1,"power":50,"defense":40,"speed":60,"sprite":'mongol'},{"name":"Hintti","hp":50,"level":15,"power":60,"defense":50,"speed":70,'sprite':'uusimene'}] self.selectedMene=getDefaultMeneID() for i in range(6): if i < len(self.menes): if self.menes[i]["id"]==self.selectedMene: menebutton = Button("",on_press=self.updateWindow,width=64,height=64, argument=self.menes[i]["id"],texture=g.gameEngine.resManager.meneSprites[self.menes[i]["sprite"]]["portrait"],is_pressed=True,outline='menewindowbutton') else: menebutton = Button("",on_press=self.updateWindow,width=64,height=64, argument=self.menes[i]["id"],texture=g.gameEngine.resManager.meneSprites[self.menes[i]["sprite"]]["portrait"],is_pressed=False,outline='menewindowbutton') nameLabel = Label(self.menes[i]["name"],bold=True,color=g.npcColor) levelLabel = Label("Lvl " + str(self.menes[i]["level"]),color=g.whiteColor,font_size=g.theme["font_size_small"]) defaultMeneLabel=None if self.menes[i]["defaultmene"]==1: defaultMeneLabel= Label('Default Mene',color=g.whiteColor,font_size=g.theme["font_size_small"]) #self.meneCont.append(HorizontalContainer(content=[menebutton,VerticalContainer(content=[nameLabel,levelLabel,defaultMeneLabel],align=HALIGN_LEFT)],align=HALIGN_CENTER)) #else: self.meneCont.append(HorizontalContainer(content=[menebutton,VerticalContainer(content=[nameLabel,levelLabel,defaultMeneLabel],align=HALIGN_LEFT)],align=HALIGN_CENTER)) else: menebutton = Button("",width=64,height=64,is_pressed=False,path='menewindowbutton',disabled=True) self.meneCont.append(menebutton) self.menelisting = VerticalContainer(content=[label1,VerticalContainer(content=self.meneCont,align=HALIGN_LEFT)]) properties=Label("Mene Properties",bold=True,color=g.loginFontColor) #horzCont = HorizontalContainer(content=[properties,closeBtn]) nameinfoLabel = Label("Name:",color=g.whiteColor) self.selectedNAME = Label("Uusi mene",bold=True,color=g.npcColor) levelinfoLabel = Label("Level:",color=g.whiteColor) self.selectedLevel = Label("0",bold=True,color=g.npcColor) hpinfoLabel = Label("HP:",color=g.whiteColor) self.selectedHp = Label("0",bold=True,color=g.npcColor) xpinfoLabel = Label("XP:",color=g.whiteColor) #self.selectedXp = Label("0",bold=True,color=g.npcColor) attackinfoLabel = Label("Power:",color=g.whiteColor) self.selectedAttack = Label("0",bold=True,color=g.npcColor) self.hpBar = HpBar() self.defaultButton = HighlightedButton("Set Default Mene :D",argument=None,on_release=makeDefaultMene) self.xpBar = HpBar(type="xp",height=20,width=100) defenseinfoLabel = Label("Defense:",color=g.whiteColor) self.selectedDefense = Label("0",bold=True,color=g.npcColor) speedinfoLabel = Label("Speed:",color=g.whiteColor) self.selectedSpeed = Label("0",bold=True,color=g.npcColor) #selectTheme = Theme({'uusimene': { # "image": { # "source": 'uusimene_front.png' # }, # "gui_color": [255,255,255,255] # } # },resources_path=g.dataPath+'/menes/' # ) self.picture = Graphic(texture=g.gameEngine.resManager.meneSprites['uusimene']['front']) abilities = ['burger', 'burger'] #abilityTheme = self.constructAbilityTheme(abilities) abilityButtons=[] for i in xrange(4): #if i<len(abilities): # self.abilityButtons.append(HoverGraphic(width=50,height=50,path=abilities[i],alternative=abilityTheme,outline='abilityoutline',hover=onHover,hoveringType=HOVERING_ABILITY,arguments={'name':'Burger Attack','type':'Attack','info':'Throws a burger at the enemy. Deals X damage.'})) #else: abilityButtons.append(Graphic(width=50,height=50,path='abilityoutline')) infoCont1 = VerticalContainer([nameinfoLabel,levelinfoLabel,xpinfoLabel],align=HALIGN_LEFT) infoCont2 = VerticalContainer([attackinfoLabel,defenseinfoLabel,speedinfoLabel],align=HALIGN_LEFT) statsCont1 = VerticalContainer([self.selectedNAME,self.selectedLevel,self.xpBar],align=HALIGN_LEFT) statsCont2 = VerticalContainer([self.selectedAttack,self.selectedDefense,self.selectedSpeed],align=HALIGN_LEFT) infoAndStatsCont = HorizontalContainer([infoCont1,statsCont1,infoCont2,statsCont2]) self.abilityCont = HorizontalContainer(abilityButtons,padding=10) rightFrame = VerticalContainer(content=[properties,self.picture,self.hpBar,infoAndStatsCont,self.abilityCont,self.defaultButton]) total = HorizontalContainer(content=[self.menelisting,Spacer(30,0),rightFrame,closeBtn],align=VALIGN_TOP) Manager.__init__(self, Frame(total), window=g.screen, batch=g.guiBatch, is_movable=False, anchor=ANCHOR_LEFT, offset=(40,int(g.SCREEN_HEIGHT*g.WINDOW_POSY_RELATIVE)), theme=g.theme) self.changeInfos(self.selectedMene) def updateWindow(self,argument): for c in self.meneCont: try: if c.content[0].arg!=argument and c.content[0]._is_pressed: c.content[0].changeStateWithoutFnc() except: break for c in self.meneCont: try: if c.content[0].arg==argument and not c.content[0]._is_pressed: c.content[0].changeStateWithoutFnc() except: break self.changeInfos(argument) def constructAbilityButtons(self,a1,a2,a3,a4): if a1 is not None: self.abilityCont.add(HoverGraphic(width=50,height=50,outline='abilityoutline',hover=onHover,texture=g.gameEngine.resManager.abilities[a1.spriteName],hoveringType=HOVERING_ABILITY,arguments={'name':a1.name,'type':getAbilityTypeName(a1.abilityType),'info':a1.infotext,"args":(a1.power, a1.length)})) else: self.abilityCont.add(Graphic(width=50,height=50,path='abilityoutline')) if a2 is not None: self.abilityCont.add(HoverGraphic(width=50,height=50,outline='abilityoutline',texture=g.gameEngine.resManager.abilities[a2.spriteName],hover=onHover,hoveringType=HOVERING_ABILITY,arguments={'name':a2.name,'type':getAbilityTypeName(a2.abilityType),'info':a2.infotext,"args":(a2.power, a2.length)})) else: self.abilityCont.add(Graphic(width=50,height=50,path='abilityoutline')) if a3 is not None: self.abilityCont.add(HoverGraphic(width=50,height=50,outline='abilityoutline',texture=g.gameEngine.resManager.abilities[a3.spriteName],hover=onHover,hoveringType=HOVERING_ABILITY,arguments={'name':a3.name,'type':getAbilityTypeName(a3.abilityType),'info':a3.infotext,"args":(a3.power, a3.length)})) else: self.abilityCont.add(Graphic(width=50,height=50,path='abilityoutline')) if a4 is not None: self.abilityCont.add(HoverGraphic(width=50,height=50,outline='abilityoutline',texture=g.gameEngine.resManager.abilities[a4.spriteName],hover=onHover,hoveringType=HOVERING_ABILITY,arguments={'name':a4.name,'type':getAbilityTypeName(a4.abilityType),'info':a4.infotext,"args":(a4.power, a4.length)})) else: self.abilityCont.add(Graphic(width=50,height=50,path='abilityoutline')) def changeInfos(self,ID): selectedMene = None for c in self.menes: if c["id"]==ID: selectedMene=c #print selectedMene, self.selectedMene if selectedMene != None and (ID!=self.selectedMene or (ID==self.selectedMene and not self.established)): self.selectedMene=ID for i in reversed(range(len(self.abilityCont.content))): self.abilityCont.remove(self.abilityCont.content[0]) #self.abilityCont.unload_content() #for c in self.abilityCont.content: # self.abilityCont.remove() #for abilityButton in self.abilityButtons: # abilityButton.unload() #print self.abilityCont.__dict__ #for abilityButton in self.abilityButtons: # print abilityButton.__dict__ # self.abilityCont.remove(abilityButton) self.constructAbilityButtons(selectedMene["attack1"],selectedMene["attack2"],selectedMene["attack3"],selectedMene["attack4"]) #self.abilityCont.load_content() #self.abilityCont.remove(self.abilityButtons[0]) #self.abilityCont.add(Graphic(width=50,height=50,path='abilityoutline'),0) self.selectedNAME.set_text(selectedMene["name"]) self.selectedLevel.set_text(str(selectedMene["level"])) #self.selectedHp.set_text(str(selectedMene["hp"])+' / '+str(selectedMene["maxhp"])) self.hpBar.setHP(selectedMene["hp"],selectedMene["maxhp"]) self.xpBar.setHP(selectedMene["xp"]-selectedMene["level"]**3,(selectedMene["level"]+1)**3-selectedMene["level"]**3) #self.selectedXp.set_text(str(selectedMene["xp"])) self.selectedAttack.set_text(str(selectedMene["power"])) self.selectedDefense.set_text(str(selectedMene["defense"])) self.selectedSpeed.set_text(str(selectedMene["speed"])) if selectedMene["defaultmene"]==1: self.defaultButton._label._set_text("Dis is default mene") else: self.defaultButton._label._set_text("Set Default Mene :D") self.defaultButton.layout() self.defaultButton.arg=ID #selectTheme = Theme({selectedMene["sprite"]: { # "image": { # "source": selectedMene["sprite"]+'_front.png' # }, # "gui_color": [255,255,255,255] # } # },resources_path=g.dataPath+'/menes/' #) #self.picture._path=selectedMene["sprite"] #self.picture._alt=selectTheme self.picture.textureTmp = g.gameEngine.resManager.meneSprites[selectedMene["sprite"]]['front'] #self.picture.unload_graphics(False) self.picture.reload() self.picture.layout() self.established=True def delete(self,event): super(Manager,self).delete() g.meneWindowOpened = False if g.hoveringType==HOVERING_ABILITY: g.gameEngine.graphics.hoverWindow.delete(None) #def on_mouse_motion(self,x,y,dx,dy): # print self._hover