def shoot(): bala = self.particlesDummy.attachNewNode("balaDummy") balaImage = OnscreenImage(image="prova/textures/bala.png", parent=bala) balaImage.setTransparency(1) balaImage.setScale(.1, 1., .2) balaImage.setBillboardPointEye() bala.setQuat(self.modelAvio.getQuat(render)) if self.balaPositiu: bala.setPos(self.balaDreta.getPos(render)) self.balaPositiu = False else: bala.setPos(self.balaEsquerra.getPos(render)) self.balaPositiu = True balaSphere = bala.attachNewNode(self.balaCol) balaColHandler = CollisionHandlerQueue() base.cTrav.addCollider(balaSphere, balaColHandler) #~ if type(self.shootPoint) == 'libpanda.Point3': #~ bala.lookAt(self.shootPoint) #~ else: bala.setH(bala, 180.) taskMgr.add( mouBala, "moubala", extraArgs=[bala, balaImage, self.BALA_VEL, balaColHandler], appendTask=True)
def shoot(): bala = self.particlesDummy.attachNewNode("balaDummy") balaImage = OnscreenImage(image="prova/textures/bala.png", parent=bala) balaImage.setTransparency(1) balaImage.setScale(0.1, 1.0, 0.2) balaImage.setBillboardPointEye() bala.setQuat(self.modelAvio.getQuat(render)) if self.balaPositiu: bala.setPos(self.balaDreta.getPos(render)) self.balaPositiu = False else: bala.setPos(self.balaEsquerra.getPos(render)) self.balaPositiu = True balaSphere = bala.attachNewNode(self.balaCol) balaColHandler = CollisionHandlerQueue() base.cTrav.addCollider(balaSphere, balaColHandler) # ~ if type(self.shootPoint) == 'libpanda.Point3': # ~ bala.lookAt(self.shootPoint) # ~ else: bala.setH(bala, 180.) taskMgr.add(mouBala, "moubala", extraArgs=[bala, balaImage, self.BALA_VEL, balaColHandler], appendTask=True)
class Unit: def __init__(self, unitID, position, mainClass): # self = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main['units'][unitID]]) self.model = mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].model self.fullName = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].fullName) self.HP = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].HP) self.info = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].info) self.moveType = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].moveType) self.model = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].model) self.radius = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].radius) self.mass = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].mass) self.startForce = copy.copy( mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].startForce ) self.maxForce = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].maxForce) self.dig = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].dig) self.reinforce = copy.copy( mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].reinforce ) self.shovel = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].shovel) self.hold = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].hold) self.modelHeight = copy.copy( mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].modelHeight ) self.selectScale = copy.copy( mainClass.unitHandler.unitDict[mainClass.unitHandler.main["units"][unitID]].selectScale ) self.job = False self.uID = mainClass.unitHandler.unitUniqueID print self.uID self.modelNode = loader.loadModel(self.model) self.modelNode.setName("unit " + str(self.uID).zfill(3)) self.modelNode.reparentTo(render) self.modelNode.setPos(position) self.modelNode.setCollideMask(BitMask32.bit(1)) self.select = OnscreenImage(image="data/models/game/selected.png") self.select.setScale(float(self.selectScale)) self.select.reparentTo(self.modelNode) self.select.setZ(float(self.modelHeight) / 2) self.select.setTransparency(TransparencyAttrib.MAlpha) self.select.setBillboardPointEye() self.select.hide() self.groundRay = CollisionRay() self.groundRay.setOrigin(0, 0, 100) self.groundRay.setDirection(0, 0, -1) self.groundCol = CollisionNode("unit Ray") self.groundCol.addSolid(self.groundRay) self.groundCol.setTag("units", "ray1") self.groundCol.setFromCollideMask(BitMask32.bit(0)) self.groundCol.setIntoCollideMask(BitMask32.allOff()) self.groundColNp = self.modelNode.attachNewNode(self.groundCol) self.groundColNp.setPos(0, 0, 0) self.groundHandler = CollisionHandlerFloor() self.groundHandler.setMaxVelocity(100) base.cTrav2.addCollider(self.groundColNp, self.groundHandler) self.groundHandler.addCollider(self.groundColNp, self.modelNode) self.AI = AICharacter(self.fullName, self.modelNode, self.mass * 2, self.startForce * 2, self.maxForce * 2) mainClass.unitHandler.AIWorld.addAiChar(self.AI) self.AIBehaviors = self.AI.getAiBehaviors() if self.moveType == "ground": self.aStar = astar.aStar(mainClass.unitHandler.meshes.landMesh, mainClass) elif self.moveType == "water": self.aStar = astar.aStar(mainClass.unitHandler.meshes.waterMesh, mainClass) elif self.moveType == "air": self.aStar = astar.aStar(mainClass.unitHandler.meshes.airMesh, mainClass) print self
class Unit: def __init__(self, unitID, position, mainClass): # self = copy.copy(mainClass.unitHandler.unitDict[mainClass.unitHandler.main['units'][unitID]]) self.model = mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].model self.fullName = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].fullName) self.HP = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].HP) self.info = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].info) self.moveType = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].moveType) self.model = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].model) self.radius = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].radius) self.mass = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].mass) self.startForce = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].startForce) self.maxForce = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].maxForce) self.dig = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].dig) self.reinforce = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].reinforce) self.shovel = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].shovel) self.hold = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].hold) self.modelHeight = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].modelHeight) self.selectScale = copy.copy(mainClass.unitHandler.unitDict[ mainClass.unitHandler.main['units'][unitID]].selectScale) self.job = False self.uID = mainClass.unitHandler.unitUniqueID print self.uID self.modelNode = loader.loadModel(self.model) self.modelNode.setName('unit ' + str(self.uID).zfill(3)) self.modelNode.reparentTo(render) self.modelNode.setPos(position) self.modelNode.setCollideMask(BitMask32.bit(1)) self.select = OnscreenImage(image='data/models/game/selected.png') self.select.setScale(float(self.selectScale)) self.select.reparentTo(self.modelNode) self.select.setZ(float(self.modelHeight) / 2) self.select.setTransparency(TransparencyAttrib.MAlpha) self.select.setBillboardPointEye() self.select.hide() self.groundRay = CollisionRay() self.groundRay.setOrigin(0, 0, 100) self.groundRay.setDirection(0, 0, -1) self.groundCol = CollisionNode('unit Ray') self.groundCol.addSolid(self.groundRay) self.groundCol.setTag('units', 'ray1') self.groundCol.setFromCollideMask(BitMask32.bit(0)) self.groundCol.setIntoCollideMask(BitMask32.allOff()) self.groundColNp = self.modelNode.attachNewNode(self.groundCol) self.groundColNp.setPos(0, 0, 0) self.groundHandler = CollisionHandlerFloor() self.groundHandler.setMaxVelocity(100) base.cTrav2.addCollider(self.groundColNp, self.groundHandler) self.groundHandler.addCollider(self.groundColNp, self.modelNode) self.AI = AICharacter(self.fullName, self.modelNode, self.mass * 2, self.startForce * 2, self.maxForce * 2) mainClass.unitHandler.AIWorld.addAiChar(self.AI) self.AIBehaviors = self.AI.getAiBehaviors() if (self.moveType == 'ground'): self.aStar = astar.aStar(mainClass.unitHandler.meshes.landMesh, mainClass) elif (self.moveType == 'water'): self.aStar = astar.aStar(mainClass.unitHandler.meshes.waterMesh, mainClass) elif (self.moveType == 'air'): self.aStar = astar.aStar(mainClass.unitHandler.meshes.airMesh, mainClass) print self # mainClass.unitHandler.unitUniqueID += 1