def __init__(self, crystalGenerator, hitPoints=None, timeoutDuration=None, showExitButton=True, infoManager=None, *args, **kwargs): self._crystalGenerator = crystalGenerator self._maxHitPoints = hitPoints self._hitPoints = self._maxHitPoints GameElementBase.__init__(self, *args, **kwargs) self._timeoutCallback = None self._timeoutTimer = None self.timeoutDuration = timeoutDuration self.destructionCallback = None self._spawnPos = self._getSpawnPos() self._infoManager = infoManager self._scoreDisplay = None self._exitButton = None if self.owner is not None: self.owner.setCannon(self) if infoManager is not None: button, box = self._makeInfoElements() self._placeInfoElements(button, box) self._scoreDisplay = self._makeScoreCounter() if self._scoreDisplay is not None: self._alignScore(self._scoreDisplay) self.owner.setOnScoreChangeCallback(self._setScore) if showExitButton: self._makeExitButton() self.startCrystalSpawn()
def delete(self): if not self.alive: return self._stopTickTimer() if self.owner is not None: self.owner.removeStructure(self) for element in self._elementMapping.values(): if element.node is not None: element.node.unlink(True) element.node = None self._elementMapping = None for node in self._edgeNodes.values(): node.unlink(True) for node in self._shadowNodes.values(): node.unlink(True) self._edgeNodes = None self._shadowNodes = None self._rootParent = None self._canvasRoot.unlink(True) self._canvasRoot = None self._shadowImage.unlink(True) self._shadowImage = None self._graphVisRoot.unlink(True) self._graphVisRoot = None self._image.unlink(True) self._image = None player = avg.Player.get() player.deleteCanvas(self._blackCanvas.getID()) player.deleteCanvas(self._canvas.getID()) self._blackCanvas = None self._canvas = None self._fixElements = None self.crystalManager.removeStructure(self) self.crystalManager = None GameElementBase.delete(self)
def __init__(self, crystalManager=None, framesToGrowth=None, startCrystals=20, *args, **kwargs): GameElementBase.__init__(self, *args, **kwargs) if self.owner is not None: self.owner.addStructure(self) self._graph = nx.Graph() self._elementMapping = {} self._fixElements = WeakSet() if __debug__: print "FRAMESTO GROWTH", framesToGrowth self.framesToGrowth = framesToGrowth self.growTimer = 0 self._overDriveCounter = 0 self._overdrive = False self._veil = None self._growLock = False self._depletedCallback = None self._gameOverCallback = None self.crystalManager = crystalManager if crystalManager is None: logging.warn("Structure {!s} has no valid CrystalManager".format(self)) else: self.crystalManager.registerStructure(self) self._shadowWidth = util.CRYSTAL_SIZE * StructureElement.shapeOverflowFactor ** 2 if self.owner is None: self._shadowColor = "000000" else: self._shadowColor = self.owner.color player = avg.Player.get() self._canvas = player.createCanvas( id=str(id(self)), size=(max(util.WINDOW_SIZE), max(util.WINDOW_SIZE)), handleevents=True, multisamplesamples=4, ) self._blackCanvas = player.createCanvas( id=str(id(self)) + "Black", size=(max(util.WINDOW_SIZE), max(util.WINDOW_SIZE)), handleevents=True, multisamplesamples=4, ) self._canvasRoot = self._canvas.getRootNode() self._blackBackground = self._blackCanvas.getRootNode() self._shadowImage = avg.ImageNode( href="canvas:{}Black".format(id(self)), parent=self._root, size=(max(util.WINDOW_SIZE), max(util.WINDOW_SIZE)), opacity=0.4, ) util.centerNodeOnPosition(self._shadowImage, (0, 0)) self._graphVisRoot = avg.DivNode(parent=self._canvasRoot) self._image = avg.ImageNode( href="canvas:{}".format(id(self)), parent=self._root, size=(max(util.WINDOW_SIZE), max(util.WINDOW_SIZE)) ) util.centerNodeOnPosition(self._image, (0, 0)) self._edgeNodes = dict() self._shadowNodes = dict() self._initStructureCore() assert self.checkSanity() while len(self._graph) < startCrystals: self.growSimple() self.rotationEnabled = True self._tickTimer = None self._startTickTimer()
def show(self): GameElementBase.show(self) crystal = self.getItemOnLauncher() if crystal is not None: crystal.delete() self.startCrystalSpawn()
def hide(self): GameElementBase.hide(self) crystal = self.getItemOnLauncher() if crystal is not None: crystal.delete() self.stopCrystalSpawn()
def _deletePhysic(self): self._space.delayRemove(self._circle) GameElementBase._deletePhysic(self)