This commit is contained in:
Auric Vente 2024-07-19 07:24:57 -06:00
parent 91040eb390
commit 9e2c382e07
5 changed files with 35 additions and 1 deletions

Binary file not shown.

View File

@ -36,6 +36,7 @@ class Config:
hit_icon: str = "🎃" hit_icon: str = "🎃"
triumph_message: str = "Scored a triumph" triumph_message: str = "Scored a triumph"
hit_message: str = "Took a hit" hit_message: str = "Took a hit"
song_path: Path
@staticmethod @staticmethod
def prepare() -> None: def prepare() -> None:
@ -53,3 +54,4 @@ class Config:
Config.names_json = Config.here / "data" / "names.json" Config.names_json = Config.here / "data" / "names.json"
Config.font_path = Config.here / "fonts" / "NotoSans-Regular.ttf" Config.font_path = Config.here / "fonts" / "NotoSans-Regular.ttf"
Config.emoji_font_path = Config.here / "fonts" / "NotoEmoji-Regular.ttf" Config.emoji_font_path = Config.here / "fonts" / "NotoEmoji-Regular.ttf"
Config.song_path = Config.here / "audio" / "March of the Cyber Ants.mp3"

View File

@ -22,6 +22,7 @@ from .window import Window
class Game: class Game:
timer: QTimer timer: QTimer
playing_song: bool = False
@staticmethod @staticmethod
def prepare() -> None: def prepare() -> None:
@ -122,6 +123,7 @@ class Game:
rgb = Utils.get_rgb(color) rgb = Utils.get_rgb(color)
image_label.setStyleSheet(f"border: 2px solid {rgb};") image_label.setStyleSheet(f"border: 2px solid {rgb};")
image_label.mousePressEvent = lambda event: Game.toggle_song()
return image_label return image_label
@staticmethod @staticmethod
@ -210,3 +212,13 @@ class Game:
Window.info.setText(Config.info_separator.join(text)) Window.info.setText(Config.info_separator.join(text))
Window.info.adjustSize() Window.info.adjustSize()
@staticmethod
def toggle_song() -> None:
if Game.playing_song:
Window.stop_audio()
else:
path = str(Config.song_path)
Window.play_audio(path)
Game.playing_song = not Game.playing_song

View File

@ -1,10 +1,10 @@
from __future__ import annotations from __future__ import annotations
import random import random
import colorsys import colorsys
import time import time
from typing import ClassVar from typing import ClassVar
from fontTools.ttLib import TTFont # type: ignore from fontTools.ttLib import TTFont # type: ignore
from .config import Config from .config import Config

View File

@ -21,6 +21,9 @@ from PySide6.QtGui import QMouseEvent
from PySide6.QtGui import QIcon from PySide6.QtGui import QIcon
from PySide6.QtCore import Qt # type: ignore from PySide6.QtCore import Qt # type: ignore
from PySide6.QtCore import Signal from PySide6.QtCore import Signal
from PySide6.QtCore import QUrl
from PySide6.QtMultimedia import QMediaPlayer # type: ignore
from PySide6.QtMultimedia import QAudioOutput
from .config import Config from .config import Config
@ -46,6 +49,8 @@ class Window:
info: SpecialButton info: SpecialButton
font: str font: str
emoji_font: str emoji_font: str
player: QMediaPlayer
audio: QAudioOutput
@staticmethod @staticmethod
def prepare() -> None: def prepare() -> None:
@ -102,9 +107,11 @@ class Window:
btn_hatch.middleClicked.connect(lambda: Ants.hatch_burst()) btn_hatch.middleClicked.connect(lambda: Ants.hatch_burst())
btn_terminate = SpecialButton("Terminate") btn_terminate = SpecialButton("Terminate")
btn_terminate.setToolTip( btn_terminate.setToolTip(
"Terminate a random ant\nMiddle Click to terminate all" "Terminate a random ant\nMiddle Click to terminate all"
) )
btn_terminate.clicked.connect(lambda e: Ants.terminate()) btn_terminate.clicked.connect(lambda e: Ants.terminate())
btn_terminate.middleClicked.connect(lambda: Ants.terminate_all()) btn_terminate.middleClicked.connect(lambda: Ants.terminate_all())
@ -215,3 +222,16 @@ class Window:
container.addWidget(Window.info) container.addWidget(Window.info)
root.setLayout(container) root.setLayout(container)
Window.root.addWidget(root) Window.root.addWidget(root)
@staticmethod
def play_audio(path: str) -> None:
Window.player = QMediaPlayer()
Window.audio = QAudioOutput()
Window.player.setAudioOutput(Window.audio)
Window.player.setSource(QUrl.fromLocalFile(path))
Window.audio.setVolume(100)
Window.player.play()
@staticmethod
def stop_audio() -> None:
Window.player.stop()