def __init__(self): from collections import deque glass.GlassContainer.__init__(self) self.setBackgroundColor(glass.Color(0, 0, 0, 128)) self.setSizePct(1, 0.025) self.setPosition(0, 0) self.teamGold = glass.GlassLabel("_12345 ") self.teamGold.setForegroundColor(gold) self.add(self.teamGold) self.teamGold.setPositionPct(0, 0) self.teamGold.setSizePct(0.1, 1) self.goldIncome = glass.GlassLabel("_12345 ") self.goldIncome.setForegroundColor(gold) self.add(self.goldIncome) self.goldIncome.setPositionPct(0.09, 0) self.goldIncome.setSizePct(0.1, 1) self.stoneCounter = glass.GlassLabel("_12345__") self.stoneCounter.setForegroundColor(tangoRedLight) self.add(self.stoneCounter) self.stoneCounter.setPositionPct(0.15, 0) self.stoneCounter.setSizePct(0.1, 1) self.stoneIncome = glass.GlassLabel("_12345__") self.stoneIncome.setForegroundColor(tangoRedLight) self.add(self.stoneIncome) self.stoneIncome.setPositionPct(0.24, 0) self.stoneIncome.setSizePct(0.1, 1) self.res1Counter = glass.GlassLabel("_12345__") self.add(self.res1Counter) self.res1Counter.setPositionPct(0.76, 0) self.res1Counter.setSizePct(0.06, 1) self.res2Counter = glass.GlassLabel("_12345__") self.add(self.res2Counter) self.res2Counter.setPositionPct(0.82, 0) self.res2Counter.setSizePct(0.06, 1) self.res3Counter = glass.GlassLabel("_12345__") self.add(self.res3Counter) self.res3Counter.setPositionPct(0.88, 0) self.res3Counter.setSizePct(0.06, 1) self.workerCounter = glass.GlassLabel("_12345__") self.workerCounter.setForegroundColor(white) self.add(self.workerCounter) self.workerCounter.setPositionPct(0.95, 0) self.workerCounter.setSizePct(0.05, 1) self.lastTime = Host_Milliseconds() self.trackGold = deque() self.trackStone = deque() self.lastStone = 0 self.lastGold = 0 self.healthBackground = glass.GlassLabel(" ") self.add(self.healthBackground) self.healthBackground.setPositionPct(0.4, 0.05) self.healthBackground.setSizePct(0.2, 0.9) self.healthBackground.setBackgroundColor(tangoRedDark) self.healthBackground.setOpaque(True) self.healthForeground = glass.GlassLabel(" ") self.add(self.healthForeground) self.healthForeground.setPositionPct(0.4, 0.05) self.healthForeground.setSizePct(0.2, 0.9) self.healthForeground.setBackgroundColor(tangoBlue) self.healthForeground.setOpaque(True) self.cc = glass.GlassLabel("") self.add(self.cc) self.cc.setSizePct(0, 1) self.cc.setWidth(self.cc.getHeight()) self.cc.setX(self.healthBackground.getX() - self.cc.getWidth()) gblEventHandler.addGameListener(self)
def onShow(): hud.chatBox.deactivate(); hud.minimap.setMap(cvar_get("world_overhead")); hud.scoreboard.arrange(); hud.scoreboard.update(); #remove the placeholders in scoreboard hud.crosshair.reset(); hud.voteWindow.reset(); hud.timer.setCaption(""); hud.frame(); #remove any other placeholders glass.GUI_CreateScreen('hud'); ## ORDER/WAYPOINT ## waypoint = glass.GlassLabel(); waypoint.setImage("null.s2g"); waypoint.setVisible(False); waypoint.setSize(48,48); glass.GUI_ScreenAddWidget("hud", waypoint); waypointObject = None; class WaypointHandler: def onEvent(self, e): if isinstance(e, WaypointEvent): if e.eventType == 'waypoint_complete' or e.eventType == 'waypoint_cancel' or e.eventType == 'waypoint_destroy': hud.waypoint.setVisible(False); else: hud.waypoint.setImage(CL_GetWaypointImage()); hud.waypoint.setSize(48,48); hud.waypoint.setVisible(True);
def __init__(self): glass.GlassWindow.__init__(self) global gblEventHandler gblEventHandler.addVoteListener(self) self.setOpaque(False) self.setSizePct(0.4, 0.16) self.setBackgroundColor(glass.Color(0, 0, 0, 100)) self.setFrameSize(0) self.setTitleVisible(False) self.setTitleBarHeight(0) self.description = glass.GlassLabel("") self.add(self.description, 0, 0) self.description.setSizePct(0.5, 0.4) self.description.setPositionPct(0.05, 0) self.description.setForegroundColor(tangoYellow) self.commStats = glass.GlassLabel("") self.add(self.commStats) self.commStats.setSizePct(0.5, 0.6) self.commStats.setPositionPct(0.05, 0.4) self.commStats.setForegroundColor(tangoYellow) self.commStats.setAlignment(1) #center self.barBG = glass.GlassLabel("") self.add(self.barBG) self.barBG.setImage("/gui/standard/vote_barGrey.png") self.barBG.setSizePct(0.5, 0.2) self.barBG.setPositionPct(0.05, 0.6) self.barBG.setOpaque(True) self.barYes = glass.GlassLabel("") self.add(self.barYes) self.barYes.setImage("/gui/standard/vote_barGreen.png") self.barYes.setSizePct(0, 0.2) self.barYes.setPositionPct(0.05, 0.6) self.barYes.setOpaque(True) self.barNo = glass.GlassLabel("") self.add(self.barNo) self.barNo.setImage("/gui/standard/vote_barRed.png") self.barNo.setSizePct(0, 0.2) self.barNo.setPositionPct(0.05, 0.6) self.barNo.setOpaque(True) self.barDivider = glass.GlassLabel("") self.add(self.barDivider) self.barDivider.setSizePct(0, 0.2) self.barDivider.setWidth(1) self.barDivider.setPositionPct(0, 0.6) self.barDivider.setBackgroundColor(white) self.barDivider.setOpaque(True) self.labelYes = glass.GlassLabel("F1 for YES") self.add(self.labelYes) self.labelYes.setForegroundColor(tangoGreenLight) self.labelYes.setPositionPct(0, 0.8) self.labelYes.setAlignment(glass.Graphics.RIGHT) self.labelNo = glass.GlassLabel("F2 for NO") self.add(self.labelNo) self.labelNo.setPositionPct(0.7, 0.8) self.labelNo.setAlignment(glass.Graphics.RIGHT) self.labelNo.setForegroundColor(tangoRedLight) self.results = glass.GlassLabel("^5750^w/^6110") self.add(self.results) self.results.setSizePct(0.2, 0.2) self.results.setPositionPct(0.4, 0.8) """self.timer = glass.GlassTimer(""); self.add ( self.timer ); self.timer.setSizePct(0.1, 0.1); self.timer.setPositionPct(0.9, 0.65); """ self.timeLeft = glass.GlassLabel("") self.add(self.timeLeft) self.timeLeft.setSizePct(0.1, 0.1) self.timeLeft.setPositionPct(0.9, 0.65) self.timeLeft.setForegroundColor(tangoGrey1) self.anotherTeam = glass.GlassLabel("Another team is voting") self.add(self.anotherTeam) self.anotherTeam.setForegroundColor(tangoGrey1) self.anotherTeam.setSizePct(1, 0.2) self.anotherTeam.setPositionPct(0, 0.8) self.anotherTeam.setAlignment(1) #center self.miniMapImage = glass.GlassLabel("") self.add(self.miniMapImage) self.miniMapImage.setSize(64, 64) self.miniMapImage.setPositionPct(0.6, 0.1) self.miniMapImage.setVisible(False) self.status = self.INACTIVE self.activeseq = None
# (c) 2010 savagerebirth.com from silverback import *; import glass; def frame(): pass; def onShow(): pass; glass.GUI_CreateScreen('guitest'); bg = glass.GlassLabel(); bg.setBackgroundColor(glass.Color(128,128,128)); bg.setOpaque(1); bg.setSizePct(1,1); glass.GUI_ScreenAddWidget("guitest", bg); tomain = glass.GlassButton("Main Menu"); tomain.setPosition(0,screenHeight-tomain.getHeight()); tomain.setClickAction("GUI_ShowScreen('mainmenu')"); glass.GUI_ScreenAddWidget("guitest", tomain); execwindow.newExecWindow("guitest"); # ############################## # Start testing stuff from here! testAlpha = glass.GlassContainer(); testAlpha.setAlpha(20);
def onShow(): loading.mapback.setImage(cvar_get("world_overhead")) loading.mapback.setPositionPct(.25, .16667) loading.mapback.setSizePct(.5, .6667) loading.loadingbk.setPositionPct(.25, .16667) loading.loadingLabel.setCaption("Loading " + cvar_get("world_name") + "...") loading.loadingLabel.setPositionPct(.4, .69) loading.loadingbk.setSizePct(.5, .6667) loading.loadingProgress.setPositionPct(.3, .72) glass.GUI_CreateScreen('loading') loadingbk = glass.GlassLabel() loadingbk.setImage('/gui/standard/black.s2g') glass.GUI_ScreenAddWidget('loading', loadingbk) loadingbk.setSizePct(1, 1) mapback = glass.GlassLabel() mapback.setId('mapback') glass.GUI_ScreenAddWidget('loading', mapback) loadingbk = glass.GlassLabel() loadingbk.setImage('/textures/loading/nfm_mapoverlay.s2g') #uncomment this when a solution is found to resolution not being set when #these scripts are run #loadingbk.setPosition(int(Vid_GetScreenW()/2.0-256),int(Vid_GetScreenH()/2.0-256)) glass.GUI_ScreenAddWidget('loading', loadingbk)
def rebuild(self): self.table.clear() #1. create lists of object types # each list represents a column # use None to represent a blank space items = self.teamObj.getResearchableItems() weapons = self.teamObj.getResearchableWeapons() units = self.teamObj.getResearchableUnits() #nomad/scav can't be researched units.insert(0, None) medic = units.pop(3) #medic gets its own row mt = [ go for go in weapons[0] if go.getValue("requirement1") == medic.getName() ] #hunting bow needs a place holder if self.teamObj.getRace() == "human": weapons[0].insert(0, None) medictech1 = mt[0] medictech2 = None #medictech2 = mt[1]; seige1 = units.pop(3) #seige gets its own row units.append(None) seige2 = units.pop(3) units.append(None) medicrow = [None, medic, None, medictech1, medictech2] seigerow = [None, seige1, seige2, None, None] rows = [] #2.add the header row to the table if self.teamObj.getRace() == "human": self.table.addRow(*self.header_human) elif self.teamObj.getRace() == "beast": self.table.addRow(*self.header_beast) for i in range(3): row = [ weapons[0][i], weapons[1][i], weapons[2][i], weapons[3][i], units[i], seigerow[i], medicrow[i] ] rows.append(row) for i in range(2): row = [ items[0][i], items[1][i], items[2][i], items[3][i], units[i + 3], seigerow[i + 3], medicrow[i + 3] ] rows.append(row) self.table.rows[0].setBackgroundColor(tangoGrey2) #3. fill in the rest of the table for i, row in enumerate(rows): for j, obj in enumerate(row): #i. convert the object types to widgets if obj == None: widget = glass.GlassLabel("") else: name = obj.getName() widget = glass.ImageButton(name, obj.getValue("icon") + ".s2g") widget.setClickAction("commhud.ResearchSimple('" + name + "');") widget.setSize(self.ICON_SIZE, self.ICON_SIZE) row[j] = widget #ii. add in the level labels row = [self.levels[i]] + row #iii. then add the rows self.table.addRow(*row) self.table.adjustSize() self.table.adjustJustification() self.setSize(self.table.getWidth() + self.PADDING * 3, self.table.getHeight() + 2 + self.PADDING * 3) self.setX(commhud.quickbar.getX() + commhud.research.getX() + (commhud.research.getWidth() - self.getWidth()) // 2) self.setY(commhud.quickbar.getY() + commhud.research.getY() - self.getHeight() - self.PADDING)
#starting from the top-centre (12 o'clock) of the screen and proceeding anti clockwise ## RESOURCES/INFO PANEL ## resourcesPanel = ResourcePanel(); glass.GUI_ScreenAddWidget("commhud", resourcesPanel); ## MINIMAP ## #Beard: skope suggests moving this to the bottom minimap = glass.GlassMiniMap(); minimap.setPositionPct(0.01875, 0.025); minimap.setSize(int(0.208*screenHeight),int(0.208*screenHeight)); minimap.addMouseListener(MapClickHandler()); ## TIMER ## timer = glass.GlassLabel("_AB:CD "); timer.setFont(glass.GUI_GetFont(20)); timer.setPositionPct(0.01875, 0.025+0.208); glass.GUI_ScreenAddWidget("commhud", timer); ## VOTES ## voteWindow = VoteInfoBox(); glass.GUI_ScreenAddWidget("commhud", voteWindow); voteWindow.setPosition( minimap.getWidth() + minimap.getX() + 10, -voteWindow.getHeight()); ## CHAT BOX ## chatBox = HUDChatBox(); chatBox.setPositionPct(0,0.625); chatBox.setX(10);
def rebuildAwards(data): """data = { "^gBest Commander^w (%.1f rating)": "0;0;0", "^gSadist^w (%d Kills)": "0;0;0", "^gUnbreakable^w": "0;0;0", "^gMost Violent^w (%d Player Damage)": "0;0;0", "^Minute Man^w (%.1f Kills/min)": "0;0;0", "^gSurvivor^w (%d Kills in a row)": "0;0;0", "^gHero^w (Last Hit)": "0;0;0", "^gHomewrecker^w (%d Building Damage)": "0;0;0", "^gOutpost Basher^w (%d Outpost Damage)": "0;0;0", "^gDownsizer^w (%d Worker Kills)": "0;0;0", "^gSiege Hater^w (%d Killed)": "0;0;0", "^gCapitalist^w (Surplus of %d Gold)": "0;0;0", "^gEntrepreneur^w (Earned %d Gold)": "0;0;0", "^gBest Flag Thief^w (%d Flags)": "0;0;0", "^gBruce Lee^w (%d Blocks)": "0;0;0", "^gMartyr^w (%d Sacrifices)": "0;0;0", "^gBest Healer^w (%d Aggregated XP)": "0;0;0", "^gBest Miner^w (%d Resources)": "0;0;0", "^gBob The Builder^w (%d HP)": "0;0;0", "^gVeteran^w (Most XP)": "0;0;0", "^gMartial Artist^w (%d Melee Kills)": "0;0;0", "^gCarnivore^w (%d pints of blood)": "0;0;0", "^gTeacher's Pet^w (%d Orders Followed)": "0;0;0", "^gFlurry Bunny!^w (%d Jumps)": "0;0;0", "^900Buffy McBuffin^w (%d Self-Buffs)": "0;0;0", "^900Big Spender^w (Spent %d Gold)": "0;0;0", "^Communist^w (Used %d Team Gold)": "0;0;0", "^yMMORPG Fan^w (%d NPC Kills)": "0;0;0", "^900Reaper's Best Buddy^w": "0;0;0", "^900Task Master^w (%d Orders Given)": "0;0;0", };""" endgame.awards.clear(); COLS = 2; PADDING = 2; y = PADDING; colors = [tangoGrey3, tangoGrey4]; if len(data) == 0: return; #no awards! for i, item in enumerate(data.items()): award, idString = item; recipients = [] for id_ in idString.split(";"): try: recipients.append(savage.Player(int(id_)).getFormattedName()) except: pass index = award.find(" ("); if index == -1: name = award else: # #remove color codes it's less hackish if you just edit awards.cfg ^^ # if '0' <= award[1] <= '9': # name = award[4:index]; # else: # name = award[2:index]; name = award[0:index] icon = "/textures/awards/" + name.replace(' ','_').lower() + ".s2g"; award_icon = glass.GlassLabel(""); award_icon.setImage(icon); award_name = glass.GlassLabel(award); award_name.setFont(fontSizeSmall); awardee = recipients[0] if len(recipients) > 0 else ""; award_owner = glass.GlassLabel(awardee); bg = glass.GlassLabel(""); bg.setOpaque(True); bg.setBackgroundColor(colors[(i//COLS)%len(colors)]); #1. position the background bg.setX( PADDING + (PADDING + endgame.awards.getWidth()//COLS)*(i%COLS) ); bg.setWidth( (endgame.awards.getWidth() - PADDING*(COLS+1) )//COLS ); bg.setY( y ); #2. position the labels - these will determine the height of the box award_name.setY(bg.getY() + PADDING); award_owner.setY(award_name.getY() + award_name.getHeight() + PADDING); bg.setHeight(3*PADDING + award_name.getHeight() + award_owner.getHeight()); tools.widgetInfoDump(award_name,"NAME") tools.widgetInfoDump(award_owner,"OWNER") #3. the icon is square and fills the bg's height h = bg.getHeight() - 2*PADDING; award_icon.setSize(h, h); award_icon.setPosition(bg.getX() + PADDING, bg.getY() + PADDING); #4. offset the labels and set their width award_name.setX(award_icon.getX() + award_icon.getWidth() + PADDING); award_owner.setX(award_name.getX()); award_name.setWidth(bg.getWidth() - award_icon.getWidth() -3*PADDING); award_owner.setWidth(award_name.getWidth()); #5. add the widgets to the container endgame.awards.add(bg); endgame.awards.add(award_icon); endgame.awards.add(award_name); endgame.awards.add(award_owner); #6. update y if we need a new row if i % COLS == COLS - 1: y += bg.getHeight() + PADDING; #7. if we have runners-up, add them to the tooltip info if len(recipients) > 1: tooltip = "Runners Up:"; for i, p in enumerate(recipients[1:]): tooltip += "\n" + str(i+2) + ". " + p; bg.setTooltip(tooltip); award_icon.setTooltip(tooltip); award_name.setTooltip(tooltip); award_owner.setTooltip(tooltip); if i % COLS != COLS - 1: y += bg.getHeight(); #in case we didn't end with a full row endgame.awards.setHeight(y); tools.widgetInfoDump(endgame.awards,"AWARDS")
glass.GUI_CreateScreen('modeltest') class ModelChangeHandler: def onValueChanged(self, e): modeltest.modelviewer.setModel( modeltest.modeldropmenu.getSelectedValue()) class AnimChangeHandler: def onValueChanged(self, e): modeltest.modelviewer.setAnimation( modeltest.animdropmenu.getSelectedValue()) bg = glass.GlassLabel() bg.setBackgroundColor(glass.Color(0, 0, 0, 255)) bg.setSizePct(1, 1) bg.setPosition(0, 0) glass.GUI_ScreenAddWidget("modeltest", bg) modelviewer = glass.GlassViewer() modelviewer.setModel("/models/null.model") modelviewer.setCameraPosition(0, 10, 10) modelviewer.setCameraTarget(0, 0, 10) modelviewer.setPosition(0, 0) modelviewer.setSizePct(1, 1) glass.GUI_ScreenAddWidget("modeltest", modelviewer) modeldropmenu = glass.GlassDropMenu() modeldropmenu.setPositionPct(0.2, 0)
gblPresetManager.execute(); loadout.inventoryContainer.setX( int( 0.69*loadout.main.getWidth() - loadout.inventoryContainer.getWidth()//2 )); loadout.inventoryContainer.setY( gblPresetManager.getY() - 10 - loadout.inventoryContainer.getHeight()); loadout.mainViewer.setX( int( loadout.main.getX() + 0.69*loadout.main.getWidth() - loadout.mainViewer.getWidth()/2) ); loadout.mainViewer.setY( loadout.main.getY() + loadout.inventoryContainer.getY() - 10 - loadout.mainViewer.getHeight() ); loadout.map_window.setAlpha(0); loadout.map_window.setVisible(False); techColumns = []; lastTeamNum = -1; glass.GUI_CreateScreen("loadout"); goldLabel = glass.GlassLabel("^icon ../../gui/standard/icons/gold/gold_icon^" + "_____"); goldLabel.setFont(fontSizeLarge); goldLabel.setForegroundColor(gold); goldLabel.setPositionPct(0.4,0.05); goldLabel.setSizePct(0.2,0.1); goldLabel.setAlignment(glass.Graphics.CENTER); glass.GUI_ScreenAddWidget("loadout",goldLabel); main = glass.GlassWindow("selectwindow") main.setSizePct(.8, .6) main.setPositionPct(0.1,0.28) main.setBackgroundColor(glass.Color(0,0,0,128)) main.setTitleVisible(0) main.setTitleBarHeight(0); main.setMovable(0); main.setEnabled(0);
endgame.updatePersonal(); endgame.accuracy_window.setVisible(False); endgame.accuracy_window.update(); endgame.accuracy_window.centerWindow(); endgame.updateGameInfo(); endgame.updateOutcome(); endgame.rebuildAwards(savage.getGameStats()); #gblEventHandler.addHttpListener(endgame.statsHandler); #endgame.statsHandler.httpHandle = HTTP_Get("http://savagerebirth.com/api/index.php/map/"+cvar_get("svr_world")); glass.GUI_CreateScreen('endgame'); bg = glass.GlassLabel(); bg.setBackgroundColor(glass.Color(0,0,0,64)); bg.setSizePct(1,1); glass.GUI_ScreenAddWidget("endgame",bg); PADDING = int(screenHeight*0.01); vbreak = 0.2; vbreakpx = int(vbreak * screenHeight); hbreak1 = 0.25; hbreak1px = int(hbreak1 * screenWidth); hbreak2 = 0.75; hbreak2px = int(hbreak2 * screenWidth); #1. Personal Information fave_unit = glass.GlassViewer(); fave_unit.setBackgroundColor(transparency); fave_unit.setEnabled(False); fave_unit.setPosition(PADDING, PADDING);
# Copyright (c) 2011 savagerebirth.com # this file creates the lobby from silverback import *; import glass; import savage; def frame(): lobby.update(); def onShow(): lobby.arrange(); glass.GUI_CreateScreen('lobby'); bg = glass.GlassLabel(" "); bg.setBackgroundColor(black); bg.setOpaque(1); bg.setSizePct(1,1); bg.setPositionPct(0,0); glass.GUI_ScreenAddWidget("lobby", bg); boxWidth = 0.2; boxHeight = 0.5; buttonHeight = boxHeight / 10; totalPadding = 0.05; paddingPerBox = totalPadding / 8; centralPadding = 0.15; interface = glass.GlassContainer(); interface.setBackgroundColor( tangoGrey2 );
def build(self): self.clearList() self.team = savage.getLocalTeam() self.players = [] self.playerDict = dict() i = 0 for player in self.team.getPlayers(): if player.isCommander(): continue self.players.append(player) i += 1 unit = glass.GlassLabel() unit.setImage(player.getIcon()) unit.setSize(24, 24) name = DefaultLabel(player.getFormattedName()) #name.setForegroundColor( white ); #name.setAlignment(2); level = DefaultLabel(str(player.getLevel())) level.setForegroundColor(tangoBlue) #level.setAlignment(2); #level.setFont(fontSizeLarge); kda = DefaultLabel("^g" + str(player.getKills()) + "^w/^r" + str(player.getDeaths()) + "^w/^l" + str(player.getAssists())) #kda.setAlignment(2); #kda.setFont(fontSizeLarge); #kda.adjustSize(); request = glass.ImageButton() #request.setSize(24,24); request.setImage("/gui/main/images/yestr.s2g") request.setSize(24, 24) officer = glass.ImageButton() #officer.setSize(24,24); if player.isOfficer(): officer.setImage("gui/game/images/demote_" + self.team.getRace() + ".s2g") officer.setClickAction("CL_RequestDemote(" + str(player.objectId) + ")") else: officer.setImage("gui/game/images/promote_" + self.team.getRace() + ".s2g") officer.setClickAction("CL_RequestPromote(" + str(player.objectId) + ")") officer.setSize(24, 24) goldLabel = DefaultLabel(str(player.getGold())) goldLabel.setForegroundColor(themeGold) #goldLabel.setAlignment(1); gold = glass.ImageButton() #gold.setSize(24,24); gold.setImage("/gui/standard/icons/gold/nl_coins14.s2g") gold.setClickAction("CL_RequestGiveGold(" + str(player.objectId) + ", 100)") gold.setSize(24, 24) row = self.list.nextRow(unit, name, level, kda, request, officer, goldLabel, gold) self.playerDict[ player. objectId] = row #Store the rows and players in a dict to trace back the widgets #self.list.adjustSize(); #self.setSize(self.list.getWidth() +10, 250); #self.list.adjustJustification(); #self.setSize(self.list.getWidth() +10, 250); #self.scroll.setSize(self.getWidth(), self.getHeight()); self.list.useColumnDividers() self.headingRow.setAlternate(False) self.list.adjustWidthTo(self.scroll.getWidth() - 10)
def rebuildResearchable(self, team): self.table.clear() self.teamObj = team allItems = self.teamObj.getResearchableItems() allWeapons = self.teamObj.getResearchableWeapons() allUnits = self.teamObj.getResearchableUnits() medicrow = [None, None, None, None, None] siegerow = [None, None, None, None, None] if self.teamObj.getRace() == "human": self.headers = self.header_human huntingBow = savage.getObjectType("human_bow") allWeapons[0].insert(0, huntingBow) nomad = savage.getObjectType("human_nomad") allUnits.insert(0, nomad) elif self.teamObj.getRace() == "beast": self.headers = self.header_beast scav = savage.getObjectType("beast_scavenger") allUnits.insert(0, scav) else: return try: medic = allUnits.pop(3) mt = [ go for go in allWeapons[0] if go.getValue("requirement1") == medic.getName() ] medictech1 = mt[0] medictech2 = savage.getObjectType(self.teamObj.getRace() + "_revive") ## TODO: fix shaman shield thingy #medictech2 = mt[1]; medicrow = [None, medic, None, medictech1, medictech2] except: pass try: siege1 = allUnits.pop(3) allUnits.append(None) siege2 = allUnits.pop(3) allUnits.append(None) siegerow = [None, siege1, siege2, None, None] except: pass self.rows = [] self.table.addRow(self.headers[0], *self.levels) for i in range(4): row = [] try: for j in range(3): row.append(allWeapons[i][j]) for k in range(2): row.append(allItems[i][k]) except IndexError: pass self.rows.append(row) row = [] for i in range(3): row.append(allUnits[i]) self.rows.append(row) self.rows.append(siegerow) self.rows.append(medicrow) for i, row in enumerate(self.rows): for j, obj in enumerate(row): widget = glass.GlassLabel("") if obj != None: widget.setImage(obj.getValue("icon") + ".s2g") widget.setSize(self.ICON_SIZE, self.ICON_SIZE) row[j] = widget self.widgets.append([obj, widget]) row = [self.headers[i + 1]] + row self.table.addRow(*row) self.table.adjustSize() self.table.adjustJustification() self.setSize(self.table.getWidth() + self.PADDING * 3, self.table.getHeight() + 2 + self.PADDING * 3)
def makeHeaderWidget(x): w = glass.GlassLabel("") if x != None: w.setImage(x) w.setSize(self.HEADER_ICON_SIZE, self.HEADER_ICON_SIZE) return w
team1 = savage.Team(1) team2 = savage.Team(2) #starting from the gold to the right of the minimap and proceeding anti clockwise ## MAP and surrounding things ## minimap = glass.GlassMiniMap() minimap.setPositionPct(0, 0.025) minimap.setX(10) minimap.setSize(int(0.208 * screenHeight), int(0.208 * screenHeight)) #same number of pixels so it's square #well assuming the pixel aspect ratio is 1:1 glass.GUI_ScreenAddWidget("spechud", minimap) player_money = glass.GlassLabel("_ABCDE ") player_money.setForegroundColor(gold) player_money.setPosition(int(minimap.getWidth() + 10 + screenWidth * 0.01875), int(screenHeight * 0.025)) glass.GUI_ScreenAddWidget("spechud", player_money) timer = glass.GlassLabel("_AB:CD ") timer.setFont(glass.GUI_GetFont(20)) timer.setPosition(10, minimap.getHeight() + 20) glass.GUI_ScreenAddWidget("spechud", timer) ## TEAM STATUS ## teamStatus = ResourcePanel() teamStatus.setVisible(False)
def makeLevelWidget(x): w = glass.GlassLabel(str(x)) w.setSize(self.ICON_SIZE, self.ICON_SIZE) w.setFont(fontSizeLarge) w.setAlignment(glass.Graphics.CENTER) return w
def create(self): self.setBackgroundColor(glass.Color(22, 13, 10)); # Top area top = DefaultContainer(); top.setSize(self.getWidth(), 35); top.setBackgroundColor(glass.Color(85, 21, 11)); top.setOpaque(True); self.add(top); title = DefaultImage(); title.setImage("txt_hostgame.png"); top.add(title, "center", "center"); go = DefaultImageButton(); go.setImage("btn_host.png"); go.setCaption("Host"); go.addActionListener(self) top.add(go, 10, "center", "right"); # return to game stuff: self.reconnectBar = DefaultContainer(); self.reconnectBar.setSize(self.getWidth(), 50); self.reconnectBar.setVisible(False); self.reconnectBar.setBackgroundColor(glass.Color(85, 21, 11)); self.reconnectBar.setOpaque(True); self.add(self.reconnectBar, 0, 35); gameProgress = DefaultLabel("GAME IN PROGRESS"); self.reconnectBar.add(gameProgress, "center"); hr = DefaultImage(); hr.setImage("divider.png"); self.reconnectBar.add(hr, "center", gameProgress.getHeight() + 3); disconnectButton = DefaultButton("LEAVE"); disconnectButton.setClickAction("""disconnect();mainmenu.modules['menu'].sectionStack['serverlist'].onShow();"""); self.reconnectBar.add(disconnectButton, 10, 10); connectedMessage = DefaultLabel("You are currently connected to a server. Do you want to return?"); connectedMessage.setFont(fontSizeSmall); self.reconnectBar.add(connectedMessage, "center", 27); returnButton = DefaultButton("RETURN"); returnButton.setClickAction("spechud.setMode('lobby');GUI_ShowScreen('spechud')"); self.reconnectBar.add(returnButton, 10, 10, "right"); self.content = DefaultContainer(); self.add(self.content, 0, 35); self.content.setSize(self.getWidth(), self.getHeight() - 85); self.columnWidth = (self.getWidth() - 40) // 3; # Left container: self.settingsContainer = DefaultContainer(); self.content.add(self.settingsContainer, 10, 0); self.settingsContainer.setSize(self.columnWidth, self.content.getHeight()); #self.settingsContainer.setBackgroundColor(white); settingsTitle = DefaultLabel("Game Settings"); self.settingsContainer.add(settingsTitle, "center", 10); typeLabel = DefaultLabel("Gametype:"); self.settingsContainer.add(typeLabel, 0, settingsTitle.getHeight() + 30 ); cvar_register("sv_gametype", 0); self.gametype = glass.GlassDropMenu(); self.gametype.linkCvar("sv_gametype"); self.gametype.addOption("RTSS",str(GAMETYPE_RTSS)); self.gametype.addOption("Duel",str(GAMETYPE_DUEL)); self.gametype.setSelectedValue("0"); self.settingsContainer.add(self.gametype, typeLabel.getWidth() + 20, typeLabel.getY()); self.gametype.setWidth(60); raceLabel = DefaultLabel("Races:"); self.settingsContainer.add(raceLabel, 0, self.gametype.getY() + 30 ); cvar_register("sv_team1race", 0, "human"); cvar_register("sv_team2race", 0, "beast"); self.race = glass.GlassDropMenu(); self.race.linkCvar("sv_team1race"); self.race.addOption("HvsB","human"); self.race.addOption("HvsH","human"); self.race.addOption("BvsB","beast"); self.race.setSelectedValue("HvsB"); self.settingsContainer.add(self.race, self.gametype.getX(), raceLabel.getY()); self.race.setWidth(60); div1 = DefaultDivider(); div1.setWidth(self.settingsContainer.getWidth()); self.settingsContainer.add(div1, 0, self.race.getY() + 40); cvar_register("sv_xp_mult", 0, "1.0"); xpSlider = DefaultSlider(); xpSlider.linkCvar("sv_xp_mult"); xpSlider.setScaleEnd(10.0); xpSlider.setScaleStart(0.0); xpSlider.setWidth(self.settingsContainer.getWidth() - 15); self.settingsContainer.add(xpSlider, 0, div1.getY() + 25 ); xpLabel = DefaultLabel("XP multiplier"); self.settingsContainer.add(xpLabel, 0, xpSlider.getY() + 13 ); div2 = DefaultDivider(); div2.setWidth(self.settingsContainer.getWidth()); self.settingsContainer.add(div2, 0, xpLabel.getY() + 35); cvar_register("sv_gold_mult", 0, "1.0"); goldSlider = DefaultSlider(); goldSlider.linkCvar("sv_gold_mult"); goldSlider.setScaleEnd(10.0); goldSlider.setScaleStart(0.0); goldSlider.setWidth(self.settingsContainer.getWidth() - 15); self.settingsContainer.add(goldSlider, 0, div2.getY() + 25 ); goldLabel = DefaultLabel("Gold multiplier"); self.settingsContainer.add(goldLabel, 0, goldSlider.getY() + 13 ); # mid container: self.listContainer = DefaultContainer(); self.content.add(self.listContainer, self.columnWidth + 20, 0); self.listContainer.setSize(self.columnWidth, self.content.getHeight()); #self.listContainer.setBackgroundColor(white); mapsTitle = DefaultLabel("Local Map List"); self.listContainer.add(mapsTitle, "center", 10); self.mapList = glass.GlassListBox(); self.mapList.addSelectionListener(self); self.mapList.setBackgroundColor(transparency); self.mapList.setForegroundColor(glass.Color(211, 201, 168)); #self.mapList.setSelectionColor() self.mapScroll = glass.GlassScrollArea(self.mapList); self.mapScroll.setSize(self.listContainer.getWidth(), self.listContainer.getHeight() - 60); self.listContainer.add(self.mapScroll, 0, mapsTitle.getHeight() + 30); # right container: self.mapContainer = DefaultContainer(); self.content.add(self.mapContainer, self.columnWidth * 2 + 30, 0); self.mapContainer.setSize(self.columnWidth, self.content.getHeight()); #self.mapContainer.setBackgroundColor(white); self.overhead = glass.GlassLabel(); #self.overhead.setImage(""); self.overhead.setSize(self.mapContainer.getWidth(), self.mapContainer.getWidth()); self.mapContainer.add(self.overhead, "center", self.mapScroll.getY()); # todo: map stats and information comingSoon = DefaultLabel("Map stats and information \ncoming soon!"); self.mapContainer.add(comingSoon, 0, self.overhead.getHeight() + 70); self.getLocalMaps();
def addRow(self, *labels): labels = [glass.GlassLabel(s) for s in labels]; for l in labels: l.setFont(fontSizeSmall); self.table.addRow(*labels);
self.list = File_ListFiles("/demos/", "*.demo", 0) self.done = False def run(self): for demo in self.list: demos.list.addRow(demo) #TODO: maybe add the Demo_GetInfo here demos.list.adjustWidthTo(demos.listWidth) self.done = True def isDone(self): return self.done bg = glass.GlassLabel() bg.setOpaque(1) bg.setBackgroundColor(black) bg.setSize(screenWidth, screenHeight) bg.setPosition(0, 0) glass.GUI_ScreenAddWidget("demos", bg) scroll = glass.GlassScrollArea() scroll.setSizePct(xoffset - 2 * padding, 1.0 - 2 * padding) scroll.setPositionPct(padding, padding) scroll.setVerticalScrollPolicy(scroll.SHOW_ALWAYS) glass.GUI_ScreenAddWidget("demos", scroll) list = GlassListPlus() list.autoAdjust = False listWidth = scroll.getWidth() - scroll.getScrollbarWidth()