def areTechRequirementsMet(self): #so here is the hard part! team = savage.Team(savage.getLocalPlayer().getTeam()); builderAvailable = False; value = self.objtype.getValue("builder1"); if value != "": reqtype = savage.getObjectType(value); for builder in team.getBuildings(): if builder.getType() == reqtype and not builder.isBeingBuilt(): builderAvailable = True; break; elif builder.getType() == self.objtype or self.objtype.getValue("selfBuild") == 1: builderAvailable = True; break; if self.objtype.getValue("selfBuild") == 1: builderAvailable = True; if value == "human_worker" or value == "beast_worker": builderAvailable = True; if builderAvailable == False: value = self.objtype.getValue("builder2"); if value != "": reqtype = savage.getObjectType(value); for builder in team.getBuildings(): if builder.getType() == reqtype and not builder.isBeingBuilt(): builderAvailable = True; break; reqbasepoints = self.objtype.getValue("needBasePoints"); basepoints = team.getCommandCenter().getType().getValue("basePointValue"); if basepoints < reqbasepoints: builderAvailable = False; if builderAvailable == False: return False; teamObjects = team.getAvailableTech(); for b in ("requirement1","requirement2"): value = self.objtype.getValue(b); if value != "": reqtype = savage.getObjectType(value); if reqtype not in teamObjects: return False; else: if reqtype.isBuildingType(): builderAvailable = False; for builder in team.getBuildings(): if builder.getType() == reqtype and not builder.isBeingBuilt(): builderAvailable = True; break; #does this cover everything? return builderAvailable;
def __init__(self, who, what, p): self.playerId = who self.parameter = p self.reqtype = what self.player = savage.getGameObject(who) team = savage.Team(self.player.getTeam()) objtype = savage.getObjectType(p) prio = self.PRIORITY if not self.player.isOfficer( ) else self.PRIORITY + 10 CommAlert.__init__(self, prio, self.RATE, "") self.text.setX(self.pic.getWidth() + 2) self.pos = self.player.getPosition() self.approvebtn = DefaultImageButton() self.approvebtn.setImage("yestr.s2g") self.approvebtn.setId("approve") self.approvebtn.setSize(32, 32) self.approvebtn.addActionListener(self) self.content.add(self.approvebtn, self.content.getWidth() - 70, "center") self.denybtn = DefaultImageButton() self.denybtn.setImage("canceltr.s2g") self.denybtn.setId("deny") self.denybtn.setSize(32, 32) self.denybtn.addActionListener(self) self.content.add(self.denybtn, self.content.getWidth() - 35, "center") self.btn.setSize( self.content.getWidth() - (self.content.getWidth() - self.approvebtn.getX()), self.content.getHeight()) self.text.setCaption(self.player.getName()) if what == "request_powerup": self.pic.setImage(objtype.getValue("icon") + ".s2g") elif what == "request_gold": self.pic.setImage("/gui/game/images/gold_icon.s2g") elif what == "request_promote": self.pic.setImage("/models/" + team.getRace() + "/items/icons/officer1.tga") self.pic.setSize(self.content.getHeight(), self.content.getHeight())
def ResearchSimple(typename): objtype = savage.getObjectType(typename); team = savage.Team(savage.getLocalPlayer().getTeam()); value = objtype.getValue("builder1"); if value != "": candidates = team.getObjectsByType(value); con_println("candidates:"+str(len(candidates))+"\n"); if len(candidates) == 0: return False; else: #TODO: base this on which building will be available first builder = candidates[int(M_Randnum(0, len(candidates)))]; gblQueue.addResearch(savage.ResearchItem(objtype.typeId, builder.objectId, 0,0));
def __init__(self, t): DefaultContainer.__init__(self); import loadout; self.objtype = savage.getObjectType(t); self.setSize(int(screenHeight*0.0625), int(screenHeight*0.09375)); self.viewer = glass.GlassViewer(); self.viewer.setModel(self.objtype.getValue("model")); self.viewer.setOpaque(False); self.viewer.setSize(self.getWidth(), self.getWidth()); self.add( self.viewer, 0, 0 ); self.viewer.rotateModel(160); self.viewer.setCameraPosition(-3,-1,12); self.viewer.setCameraTarget(-3,0,12); self.viewer.setCameraFOV(22.5); self.viewer.setAnimation("idle"); self.request = DefaultImageButton(); self.request.setImage("request.s2g"); self.request.setSize(self.getWidth(), self.getWidth()); self.request.setVisible(False); self.add(self.request); button = glass.ImageButton("textures/econs/transparent.s2g"); #Create clickable, invisible button over the viewer. button.addActionListener(self); button.setClickAction( "CL_RequestUnit('" + t + "');" ); self.add( button ); button.setSizePct(1,1); name = DefaultLabel(self.objtype.getValue("description")); name.setFont(fontSizeSmall); self.price = DefaultLabel(); p = str(self.objtype.getValue("playerCost")); if p == "0": p = "FREE"; else: p = p + "^w^icon ../../gui/standard/icons/gold/gold_icon^"; self.price.setCaption("^l" + p); self.price.setFont(fontSizeSmall); self.add(self.price, "center", int(screenHeight*0.0625));
def __init__(self, t): DefaultContainer.__init__(self); import loadout; self.objtype = savage.getObjectType(t); self.setSize(int(screenHeight*0.0625), int(screenHeight*0.09375)); #self.image = glass.GlassProgressDisc(); self.image = DefaultImage(); self.image.setImage("../../../"+ self.objtype.getValue("icon")+".s2g"); self.image.setSize(int(screenHeight*0.0625), int(screenHeight*0.0625)); self.add(self.image); self.request = DefaultImageButton(); self.request.setImage("request.s2g"); self.request.setSize(int(screenHeight*0.0625), int(screenHeight*0.0625)); self.request.setVisible(False); self.add(self.request); self.maxDeployment = DefaultLabel(); self.maxDeployment.setCaption("00"); self.maxDeployment.setForegroundColor(tangoGreen); self.add(self.maxDeployment,"right", "top"); self.price = DefaultLabel(); p = str(self.objtype.getValue("playerCost")); if p == "0": p = "FREE"; else: p = p + "^w^icon ../../gui/standard/icons/gold/gold_icon^"; self.price.setCaption("^l" + p); self.price.setFont(fontSizeSmall); self.add(self.price, "center", int(screenHeight*0.0625)); button = glass.ImageButton("textures/econs/transparent.s2g"); self.add( button ); button.setSizePct(1,1); button.addActionListener(self);
def getObjectsByType(self, typename): typeId = savage.getObjectType(typename).typeId objs = savage.getTypeObjects(typeId) return [go for go in objs if go.getTeam() == self.teamId]
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)