Ejemplo n.º 1
0
	def _PositionWidgets(self):

		# Retrieve the screen.

		screen = GetScreen()
		screenDimensions = GetDimensions(screen)

		# Calculate the positions of texts and buttons.

		titleDimensions = self._titleLabel.GetDimensions()
		messageDimensions = self._messageLabel.GetDimensions()
		continueButtonDimensions = self._continueButton.GetDimensions()

		titleAndMessageBundleHeight = titleDimensions.Y + messageDimensions.Y

		self._titleLabel.SetPosition(Vector(
			(screenDimensions.X - titleDimensions.X) / 2,
			(screenDimensions.Y - Parameters.Margin - continueButtonDimensions.Y - titleAndMessageBundleHeight) / 2,
		))

		self._messageLabel.SetPosition(Vector(
			(screenDimensions.X - messageDimensions.X) / 2,
			self._titleLabel.GetPosition().Y + titleDimensions.Y,
		))

		self._continueButton.SetPosition(Vector(
			(screenDimensions.X - continueButtonDimensions.X) / 2,
			screenDimensions.Y - Parameters.Margin - continueButtonDimensions.Y,
		))
Ejemplo n.º 2
0
    def Render(self, withOverlay=True):

        Blit(GetScreen(), Resources().GetBackground(self._background))

        [node.Render() for node in self._nodes]
        [widget.Render() for widget in self._widgets]

        if withOverlay:
            self.RenderOverlay()
Ejemplo n.º 3
0
    def RenderOverlay(self):

        if self._cursor:

            mouseCursorPosition = mouse.get_pos()

            self._cursor.Blit(
                GetScreen(),
                Vector(mouseCursorPosition[0], mouseCursorPosition[1]))
Ejemplo n.º 4
0
    def Render(self):

        super().Render()

        smallShieldSprite = Resources().GetSprite("Shield",
                                                  dimensions=Vector(80, 80))
        smallShieldSprite.Blit(
            0,
            GetScreen(),
            AtSameCenter(self.GetPosition(), self.GetDimensions(),
                         smallShieldSprite.GetDimensions()),
        )
Ejemplo n.º 5
0
    def Render(self):

        super().Render()

        if self._shieldUp:

            # Render the shield.

            sprite = Resources().GetSprite("Shield")
            dimensions = sprite.GetDimensions()

            sprite.Blit(
                0, GetScreen(),
                AtSameCenter(self.GetPosition(), self.GetDimensions(),
                             dimensions))

        # Render the health bar.

        self._RenderHealthBar()
Ejemplo n.º 6
0
    def _PositionWidgets(self):

        # Retrieve the screen and its dimensions.

        screen = GetScreen()
        screenDimensions = GetDimensions(screen)

        # Position the top labels.

        labels = [self._creator, self._version]

        SpreadHorizontally(screen, labels, Parameters.Margin,
                           Parameters.Margin)

        # Position the buttons.

        buttons = [self._newGameButton, self._quitButton]

        SpreadHorizontally(screen, buttons, 0, Parameters.Margin)
        MoveToTheBottom(screen, buttons, Parameters.Margin)

        # Position the title.

        labelsPartHeight = Parameters.Margin + max(
            [x.GetDimensions().Y for x in labels])
        buttonsPartHeight = Parameters.Margin + max(
            [x.GetDimensions().Y for x in buttons])

        titleDimensions = self._title.GetDimensions()

        self._title.SetPosition(
            Vector(
                (screenDimensions - titleDimensions).X / 2,
                labelsPartHeight + (screenDimensions.Y - titleDimensions.Y -
                                    labelsPartHeight - buttonsPartHeight) / 2,
            ))
Ejemplo n.º 7
0
    def Render(self):

        Blit(GetScreen(), self._surface, self._position)
Ejemplo n.º 8
0
    def Update(self, milisecondsPassed):

        super().Update(milisecondsPassed)

        # Finish the game if the player has been destroyed.

        if self.Player._terminated:
            Resources()._backgrounds["Screenshot"] = Desaturate(GetScreen())
            self._nextScene = EndGameScene()
            return

        # Remove terminated nodes (and update the score).

        for node in self._nodes:

            if "Enemy" == type(node).__name__ and node.IsDestroyed():
                self.UpdateScoreText()

        self._nodes[:] = filter(lambda x: not x.IsTerminated(), self._nodes)

        # Update the battle manager.

        self._battleManager.Update(milisecondsPassed)

        # Update labels.

        self.UpdateScoreText()
        self.UpdateBonusDescriptionText()

        # Update energy bars.

        self._bulletEnergyBar.SetProgress(self.Player.GetBulletEnergy())
        self._bombEnergyBar.SetProgress(self.Player.GetBombEnergy())
        self._shieldEnergyBar.SetProgress(self.Player.GetShieldEnergy())

        # Find collisions.

        allFoundCollisions = {}

        for node in self._nodes:

            collisions = []

            for alreadyProcessedNode, alreadyProcessedCollisions in allFoundCollisions.items(
            ):
                if node in alreadyProcessedCollisions:
                    collisions.append(alreadyProcessedNode)

            newCollisions = [
                x for x in self._nodes
                if x not in collisions and node.DoesCollideWith(x)
            ]
            collisions.extend(newCollisions)

            if collisions:
                allFoundCollisions[node] = collisions

        for node, collidingNodes in allFoundCollisions.items():

            for collidingNode in collidingNodes:

                node.OnCollision(collidingNode)
                collidingNode.OnCollision(node)