Assets' attribution
Font hanken https://fontlibrary.org/en/font/hanken
-Buttons https://opengameart.org/content/game-icons
\ No newline at end of file
+Buttons https://opengameart.org/content/game-icons
+Music by Stefan Grossmann https://soundcloud.com/stefan-grossmann-1
+ https://opengameart.org/content/free-music-pack-one-of-three
+ https://opengameart.org/content/free-music-pack-two-of-three
+Sfx https://opengameart.org/content/sound-effects-pack
def on_click_l(self, pos):
self._start_drag_pos = pos, self._np.get_pos()
+ loader.load_sfx('assets/audio/sfx/grab.ogg').play()
def on_click_r(self, pos):
self._start_rot_info = pos, self._np.get_pos(), self._np.get_r()
+ loader.load_sfx('assets/audio/sfx/grab.ogg').play()
def on_release(self):
+ if self._start_drag_pos or self._start_rot_info:
+ loader.load_sfx('assets/audio/sfx/release.ogg').play()
self._start_drag_pos = self._start_rot_info = None
def on_mouse_on(self):
--- /dev/null
+from glob import glob
+from random import choice
+from logging import info
+from panda3d.core import AudioSound
+
+
+class MusicMgr:
+
+ def __init__(self):
+ self._start_music(glob('assets/audio/music/*.ogg'))
+ base.musicManager.setVolume(.8)
+ base.sfxManagerList[0].setVolume(1)
+ taskMgr.add(self._on_frame, 'on frame music')
+
+ def _start_music(self, files):
+ self._music = loader.load_music(choice(files))
+ info('playing music ' + self._music.get_name())
+ self._music.play()
+
+ def _on_frame(self, task):
+ if self._music.status() == AudioSound.READY:
+ files = glob('assets/audio/music/*.ogg')
+ files.remove('assets/audio/music/' + self._music.get_name())
+ self._start_music(files)
+ return task.cont
from panda3d.bullet import BulletWorld, BulletDebugNode
from direct.showbase.ShowBase import ShowBase
from pmachines.scene import Scene
+from pmachines.music import MusicMgr
class Pmachines:
self.version = args.version
if args.update:
return
+ MusicMgr()
self._set_physics()
Scene(self.world)
btn = DirectButton(
image=imgs, scale=.05, pos=(sign * (.06 + .11 * num), 1, .06),
parent=binfo[3], command=binfo[1], state=binfo[2], relief=FLAT,
- frameColor=fcols[0] if binfo[2] == NORMAL else fcols[1])
+ frameColor=fcols[0] if binfo[2] == NORMAL else fcols[1],
+ rolloverSound=loader.load_sfx('assets/audio/sfx/rollover.ogg'),
+ clickSound=loader.load_sfx('assets/audio/sfx/click.ogg'))
btn.set_transparency(True)
def _set_directional_light(self, name, hpr, color):
* issues
* todo
-** music and sfx
-** instructions
-** configuration (physics debug)
** rotation with vectors/quaternions (fixes some glitches)
+** configuration (physics debug, music/sfx volume)
+** logging.info|debug in the console
+** instructions
** main menu
** implement the operations of the buttons
** build pipeline