From 57b78ebe21b1b48acd337daa5a1cb8c383959cfa Mon Sep 17 00:00:00 2001 From: Charles McGarvey Date: Sun, 13 Sep 2009 18:18:10 -0600 Subject: [PATCH] more featureful sound class --- TODO | 3 + configure.ac | 23 +- data/sounds/NightFusionIntro.ogg | Bin 0 -> 520892 bytes data/sounds/NightFusionLoop.ogg | Bin 0 -> 2909174 bytes {data/sounds => extra}/NightFusion.xm | Bin extra/yoink.ebuild | 2 +- extra/yoink.spec.in | 2 + src/Character.cc | 5 +- src/Character.hh | 15 +- src/Hud.cc | 6 +- src/Moof/Camera.hh | 2 +- src/Moof/Engine.cc | 12 +- src/Moof/Engine.hh | 1 - src/Moof/Log.hh | 1 - src/Moof/Math.hh | 2 + src/Moof/Mippleton.hh | 4 +- src/Moof/Octree.hh | 6 +- src/Moof/OpenGL.hh | 2 +- src/Moof/Sound.cc | 431 ++++++++++++++++++++------ src/Moof/Sound.hh | 37 +-- src/Moof/Timer.cc | 8 +- src/YoinkApp.cc | 173 ++--------- src/YoinkApp.hh | 6 +- 23 files changed, 431 insertions(+), 310 deletions(-) create mode 100644 TODO create mode 100644 data/sounds/NightFusionIntro.ogg create mode 100644 data/sounds/NightFusionLoop.ogg rename {data/sounds => extra}/NightFusion.xm (100%) diff --git a/TODO b/TODO new file mode 100644 index 0000000..90c8f4d --- /dev/null +++ b/TODO @@ -0,0 +1,3 @@ + +The man page (doc/yoink.6) may have a list. + diff --git a/configure.ac b/configure.ac index 5a7791d..a87d981 100644 --- a/configure.ac +++ b/configure.ac @@ -83,30 +83,33 @@ AC_ARG_WITH([log-level], if test x$developer = xyes then debug=yes - profile=yes - extra_warnings=yes log_level=4 + + if test x$WIN32 != xyes + then + profile=yes + fi fi if test x$debug = xyes then - CFLAGS="$CFLAGS -Wall -O0 -g -DDEBUG" - CXXFLAGS="$CXXFLAGS -Wall -O0 -g -DDEBUG" + CFLAGS="$CFLAGS -Wall -O0 -gstabs -DDEBUG" + CXXFLAGS="$CXXFLAGS -Wall -O0 -gstabs -DDEBUG" else - CFLAGS="$CFLAGS -O2 -DNDEBUG" - CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" + CFLAGS="$CFLAGS -O2 -DNDEBUG" + CXXFLAGS="$CXXFLAGS -O2 -DNDEBUG" fi if test x$profile = xyes then - CFLAGS="$CFLAGS -pg" - CXXFLAGS="$CXXFLAGS -pg" + CFLAGS="$CFLAGS -pg" + CXXFLAGS="$CXXFLAGS -pg" fi if test x$extra_warnings = xyes then - CFLAGS="$CFLAGS -Wextra" - CXXFLAGS="$CXXFLAGS -Wextra" + CFLAGS="$CFLAGS -Wextra -Wno-unused-parameter" + CXXFLAGS="$CXXFLAGS -Wextra -Wno-unused-parameter" fi AC_DEFINE_UNQUOTED([YOINK_LOGLEVEL], [$log_level], diff --git a/data/sounds/NightFusionIntro.ogg b/data/sounds/NightFusionIntro.ogg new file mode 100644 index 0000000000000000000000000000000000000000..785ad8ab4f42bf59aaaefdf53ff7cc7bda0b9427 GIT binary patch literal 520892 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