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 __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()