Exemple #1
0
	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;
Exemple #2
0
    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())
Exemple #3
0
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));
Exemple #4
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));
Exemple #5
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.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);
Exemple #6
0
 def getObjectsByType(self, typename):
     typeId = savage.getObjectType(typename).typeId
     objs = savage.getTypeObjects(typeId)
     return [go for go in objs if go.getTeam() == self.teamId]
Exemple #7
0
    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)