You can subscribe to this list here.
| 2009 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(25) |
Jul
(288) |
Aug
(119) |
Sep
(31) |
Oct
(59) |
Nov
(458) |
Dec
(359) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2010 |
Jan
(268) |
Feb
(26) |
Mar
(36) |
Apr
(48) |
May
(119) |
Jun
(37) |
Jul
(173) |
Aug
(429) |
Sep
(137) |
Oct
(156) |
Nov
(59) |
Dec
(45) |
| 2011 |
Jan
(398) |
Feb
(257) |
Mar
(49) |
Apr
(5) |
May
(34) |
Jun
(11) |
Jul
(38) |
Aug
(12) |
Sep
(1) |
Oct
(49) |
Nov
(5) |
Dec
(10) |
| 2012 |
Jan
(21) |
Feb
(32) |
Mar
(20) |
Apr
(1) |
May
(2) |
Jun
|
Jul
(173) |
Aug
|
Sep
(25) |
Oct
(6) |
Nov
(44) |
Dec
|
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:37
|
Module: performous Branch: joinmenu Commit: 25c741381324761dc21dccd299cad150934eacb0 Author: John Stumpo <st...@js...> Date: Sat Jun 26 03:10:36 2010 -0400 Add a script to generate a simple NSIS installer from the staged installation. As it is, it works (it installs and uninstalls just fine) but could use a bit of extra love. (Start menu entries and an Add/Remove Programs entry come to mind.) --- win32/cross-from-debian/makepackage.py | 111 ++++++++++++++++++++++++++++++++ 1 files changed, 111 insertions(+), 0 deletions(-) diff --git a/win32/cross-from-debian/makepackage.py b/win32/cross-from-debian/makepackage.py new file mode 100755 index 0000000..2ad6342 --- /dev/null +++ b/win32/cross-from-debian/makepackage.py @@ -0,0 +1,111 @@ +#!/usr/bin/env python +# NSIS script generator for Performous. +# Copyright (C) 2010 John Stumpo +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import os +import subprocess +import sys + +try: + makensis = subprocess.Popen([os.environ['MAKENSIS'], '-'], stdin=subprocess.PIPE) +except KeyError: + makensis = subprocess.Popen(['makensis', '-'], stdin=subprocess.PIPE) + +if not os.path.isdir('dist'): + os.mkdir('dist') +os.chdir('stage') + +# Find the version number. +try: + resources = subprocess.Popen([os.environ['WINDRES'], 'bin/performous.exe'], stdout=subprocess.PIPE) +except: + try: + resources = subprocess.Popen(['windres', 'bin/performous.exe'], stdout=subprocess.PIPE) + except: + resources = subprocess.Popen(['i586-mingw32msvc-windres', 'bin/performous.exe'], stdout=subprocess.PIPE) +for line in resources.stdout.readlines(): + if not line.strip().startswith('VALUE'): + continue + if 'ProductVersion' in line: + version = line.strip().split('"')[-2] + break +else: + version = 'unknown' + + +makensis.stdin.write(r'''!include "MUI2.nsh" + +!define VERSION "%s" + +Name "Performous ${VERSION}" +OutFile "dist\Performous-${VERSION}-win32.exe" + +SetCompressor /SOLID lzma + +ShowInstDetails show +ShowUninstDetails show + +InstallDir "$PROGRAMFILES\Performous" +InstallDirRegKey HKLM "Software\Performous" "" + +RequestExecutionLevel admin + +!insertmacro MUI_PAGE_WELCOME +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +!insertmacro MUI_UNPAGE_WELCOME +!insertmacro MUI_UNPAGE_CONFIRM +!insertmacro MUI_UNPAGE_INSTFILES +!insertmacro MUI_UNPAGE_FINISH + +!insertmacro MUI_LANGUAGE "English" + +Section +''' % version) + +for root, dirs, files in os.walk('.'): + makensis.stdin.write(' SetOutPath "$INSTDIR\\%s"\n' % root.replace('/', '\\')) + for file in files: + makensis.stdin.write(' File "%s"\n' % os.path.join('stage', root, file).replace('/', '\\')) + +makensis.stdin.write(r''' WriteRegStr HKLM "Software\Performous" "" "$INSTDIR" + WriteUninstaller "$INSTDIR\uninst.exe" +SectionEnd + +Section Uninstall +''') + +for root, dirs, files in os.walk('.', topdown=False): + for dir in dirs: + makensis.stdin.write(' RmDir "$INSTDIR\\%s"\n' % os.path.join(root, dir).replace('/', '\\')) + for file in files: + makensis.stdin.write(' Delete "$INSTDIR\\%s"\n' % os.path.join(root, file).replace('/', '\\')) + makensis.stdin.write(' RmDir "$INSTDIR\\%s"\n' % root.replace('/', '\\')) + +makensis.stdin.write(r''' Delete "$INSTDIR\uninst.exe" + RmDir "$INSTDIR" + DeleteRegKey /ifempty HKLM "Software\Performous" +SectionEnd +''') + +makensis.stdin.close() +if makensis.wait() != 0: + print >>sys.stderr, 'Installer compilation failed.' + sys.exit(1) +else: + print '\ndist/Performous-%s-win32.exe is ready.' % version |
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:34
|
Module: performous
Branch: joinmenu
Commit: 63b6b919986640641e0da358b58e4ce6d0f619a7
Author: John Stumpo <st...@js...>
Date: Sat Jun 26 02:19:13 2010 -0400
Tell cmake where it can find windres so we get the icon in a cross-build.
---
win32/cross-from-debian/Toolchain.cmake | 2 ++
1 files changed, 2 insertions(+), 0 deletions(-)
diff --git a/win32/cross-from-debian/Toolchain.cmake b/win32/cross-from-debian/Toolchain.cmake
index 0b79ba4..41cf6f8 100644
--- a/win32/cross-from-debian/Toolchain.cmake
+++ b/win32/cross-from-debian/Toolchain.cmake
@@ -14,3 +14,5 @@ set(CMAKE_FIND_ROOT_PATH /usr/i586-mingw32msvc ${CMAKE_CURRENT_SOURCE_DIR}/win32
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
+
+set(WINDRES i586-mingw32msvc-windres)
|
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:32
|
Module: performous Branch: joinmenu Commit: 1cdc9b4b77e0ac89a4acf3ee3f5d35ae4eddba65 Author: John Stumpo <st...@js...> Date: Fri Jun 25 22:45:37 2010 -0400 Add a script to copy the necessary dependency DLLs into what will become the released package. --- win32/cross-from-debian/copydlls.py | 116 +++++++++++++++++++++++++++++++++++ 1 files changed, 116 insertions(+), 0 deletions(-) diff --git a/win32/cross-from-debian/copydlls.py b/win32/cross-from-debian/copydlls.py new file mode 100755 index 0000000..ac2b8b3 --- /dev/null +++ b/win32/cross-from-debian/copydlls.py @@ -0,0 +1,116 @@ +#!/usr/bin/env python +# DLL dependency resolution and copying script. +# Copyright (C) 2010 John Stumpo +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import os +import shutil +import struct +import sys + +if len(sys.argv) != 3: + sys.stderr.write('''Usage: %s [source] [destination] +Copies DLLs in source needed by PE executables in destination to destination. +Both source and destination should be directories. +''' % sys.argv[0]) + sys.exit(1) + +def is_pe_file(file): + f = open(file, 'rb') + if f.read(2) != 'MZ': + return False # DOS magic number not present + f.seek(60) + peoffset = struct.unpack('<L', f.read(4))[0] + f.seek(peoffset) + if f.read(4) != 'PE\0\0': + return False # PE magic number not present + return True + +def get_imports(file): + f = open(file, 'rb') + # We already know it's a PE, so don't bother checking again. + f.seek(60) + pe_header_offset = struct.unpack('<L', f.read(4))[0] + + # Get sizes of tables we need. + f.seek(pe_header_offset + 6) + number_of_sections = struct.unpack('<H', f.read(2))[0] + f.seek(pe_header_offset + 116) + number_of_data_directory_entries = struct.unpack('<L', f.read(4))[0] + data_directory_offset = f.tell() # it's right after the number of entries + + # Where is the import table? + f.seek(data_directory_offset + 8) + rva_of_import_table = struct.unpack('<L', f.read(4))[0] + + # Get the section ranges so we can convert RVAs to file offsets. + f.seek(data_directory_offset + 8 * number_of_data_directory_entries) + sections = [] + for i in range(number_of_sections): + section_descriptor_data = f.read(40) + name, size, va, rawsize, offset = struct.unpack('<8sLLLL', section_descriptor_data[:24]) + sections.append({'min': va, 'max': va+rawsize, 'offset': offset}) + + def seek_to_rva(rva): + for s in sections: + if s['min'] <= rva and rva < s['max']: + f.seek(rva - s['min'] + s['offset']) + return + raise ValueError, 'Could not find section for RVA.' + + # Walk the import table and get RVAs to the null-terminated names of DLLs this file uses. + # The table is terminated by an all-zero entry. + seek_to_rva(rva_of_import_table) + dll_rvas = [] + while True: + import_descriptor = f.read(20) + if import_descriptor == '\0' * 20: + break + dll_rvas.append(struct.unpack('<L', import_descriptor[12:16])[0]) + + # Read the DLL names from the RVAs we found in the import table. + dll_names = [] + for rva in dll_rvas: + seek_to_rva(rva) + name = '' + while True: + c = f.read(1) + if c == '\0': + break + name += c + dll_names.append(name) + + return dll_names + + +src_contents = os.listdir(sys.argv[1]) +dest_contents = os.listdir(sys.argv[2]) +for dest_name in dest_contents: + dest_fname = os.path.join(sys.argv[2], dest_name) + if os.path.isfile(dest_fname) and is_pe_file(dest_fname): + print dest_name + for dll in get_imports(dest_fname): + print '- %s' % dll, + if dll.lower() in [n.lower() for n in dest_contents]: + print '(already present)' + else: + for n in src_contents: + if n.lower() == dll.lower(): + shutil.copyfile(os.path.join(sys.argv[1], n), os.path.join(sys.argv[2], n)) + dest_contents.append(n) + print '(copied)' + break + else: + print '(assumed to be provided by operating system)' |
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:29
|
Module: performous Branch: joinmenu Commit: c58a0953eda8e8a207c283eafa0b5c4490a6c1a0 Author: John Stumpo <st...@js...> Date: Fri Jun 25 20:12:54 2010 -0400 Add a script that runs cmake with the right arguments. --- win32/cross-from-debian/makebuilddir.sh | 4 ++++ 1 files changed, 4 insertions(+), 0 deletions(-) diff --git a/win32/cross-from-debian/makebuilddir.sh b/win32/cross-from-debian/makebuilddir.sh new file mode 100755 index 0000000..3c469b9 --- /dev/null +++ b/win32/cross-from-debian/makebuilddir.sh @@ -0,0 +1,4 @@ +#!/bin/sh -e +mkdir -pv build +cd build +exec env PATH="`pwd`/../deps/bin:$PATH" cmake -DCMAKE_TOOLCHAIN_FILE=../Toolchain.cmake -DENABLE_TOOLS=OFF -DCMAKE_INSTALL_PREFIX="`pwd`/../stage" "$@" ../../.. |
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:27
|
Module: performous Branch: joinmenu Commit: a755874fcf1d1f1f816fffaa4a4865cef935ae11 Author: John Stumpo <st...@js...> Date: Fri Jun 25 19:23:57 2010 -0400 Split portmidi into portmidi and porttime so the cmake scripts detect it correctly. --- win32/cross-from-debian/makedeps.sh | 7 ++++--- 1 files changed, 4 insertions(+), 3 deletions(-) diff --git a/win32/cross-from-debian/makedeps.sh b/win32/cross-from-debian/makedeps.sh index f92de94..355a4d2 100755 --- a/win32/cross-from-debian/makedeps.sh +++ b/win32/cross-from-debian/makedeps.sh @@ -269,9 +269,10 @@ if test ! -f "$PREFIX"/build-stamps/portmidi; then download http://download.sourceforge.net/portmedia/portmidi-src-200.zip unzip -o portmidi-src-200.zip cd portmidi - $CROSS_GCC -g -O2 -W -Wall -Ipm_common -Iporttime -DNDEBUG -D_WINDLL -mdll -o portmidi.dll -Wl,--out-implib,libportmidi.a pm_win/pmwin.c pm_win/pmwinmm.c porttime/ptwinmm.c pm_common/pmutil.c pm_common/portmidi.c -lwinmm - cp -v portmidi.dll "$PREFIX"/bin - cp -v libportmidi.a "$PREFIX"/lib + $CROSS_GCC -g -O2 -W -Wall -Iporttime -DNDEBUG -D_WINDLL -mdll -o porttime.dll -Wl,--out-implib,libporttime.a porttime/ptwinmm.c -lwinmm + $CROSS_GCC -g -O2 -W -Wall -Ipm_common -Iporttime -DNDEBUG -D_WINDLL -mdll -o portmidi.dll -Wl,--out-implib,libportmidi.a pm_win/pmwin.c pm_win/pmwinmm.c pm_common/pmutil.c pm_common/portmidi.c -L. -lporttime -lwinmm + cp -v portmidi.dll porttime.dll "$PREFIX"/bin + cp -v libportmidi.a libporttime.a "$PREFIX"/lib cp -v pm_common/portmidi.h porttime/porttime.h "$PREFIX"/include cd .. touch "$PREFIX"/build-stamps/portmidi |
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:24
|
Module: performous Branch: joinmenu Commit: a996445812c4443df84e9cdc56362d181a10e0ea Author: John Stumpo <st...@js...> Date: Fri Jun 25 01:39:55 2010 -0400 Use stamp files to skip building things already built. --- win32/cross-from-debian/makedeps.sh | 692 +++++++++++++++++++++-------------- 1 files changed, 412 insertions(+), 280 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:21
|
Module: performous Branch: joinmenu Commit: 2e78b09c8b10343b7bc524f5dfc6d237a6becc2a Author: John Stumpo <st...@js...> Date: Wed Jun 23 05:22:14 2010 -0400 Add commentary and genericity to the cross-makedeps script. --- win32/cross-from-debian/makedeps.sh | 180 ++++++++++++++++++++++++++-------- 1 files changed, 137 insertions(+), 43 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:18
|
Module: performous
Branch: joinmenu
Commit: 3e6108e10242d57d3cce2df270dd1fb76188f0bf
Author: John Stumpo <st...@js...>
Date: Wed Jun 23 03:15:48 2010 -0400
Fix a case-sensitivity bug keeping OpenGL from being detected by cross-compilers to Windows.
---
cmake/Modules/FindOpenGL.cmake | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/cmake/Modules/FindOpenGL.cmake b/cmake/Modules/FindOpenGL.cmake
index 7ac1128..be991ab 100644
--- a/cmake/Modules/FindOpenGL.cmake
+++ b/cmake/Modules/FindOpenGL.cmake
@@ -20,12 +20,12 @@ find_path(OpenGL_INCLUDE_DIR
)
find_library(OpenGL_GL_LIBRARY
- NAMES GL libOpenGL32.a OpenGL32
+ NAMES GL libopengl32.a opengl32
PATHS ${OpenGL_PKGCONF_LIBRARY_DIRS}
)
find_library(OpenGL_GLU_LIBRARY
- NAMES GLU libGLU32.a GLU32
+ NAMES GLU libglu32.a glu32
PATHS ${OpenGL_PKGCONF_LIBRARY_DIRS}
)
|
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:16
|
Module: performous Branch: joinmenu Commit: 6399a773b019f449031ed0b30ee82feca0f5e354 Author: John Stumpo <st...@js...> Date: Fri Jun 18 02:17:53 2010 -0400 Add a script to cross-compile the dependency libraries for Windows. --- win32/cross-from-debian/Toolchain.cmake | 16 ++ win32/cross-from-debian/makedeps.sh | 371 +++++++++++++++++++++++++++++++ 2 files changed, 387 insertions(+), 0 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-08-03 11:36:13
|
Module: performous
Branch: joinmenu
Commit: c72033b9e17ea640563625b818bf63d9d2a07b3d
Author: John Stumpo <st...@js...>
Date: Fri Jun 25 23:01:21 2010 -0400
Fix an include for Linux-to-Windows cross-compilation.
---
game/fs.cc | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/game/fs.cc b/game/fs.cc
index 32163d0..5047c36 100644
--- a/game/fs.cc
+++ b/game/fs.cc
@@ -9,7 +9,7 @@
#ifdef _WIN32
#include <windows.h>
-#include <Shlobj.h>
+#include <shlobj.h>
#endif
fs::path getHomeDir() {
|
|
From: Tapio V. <aa...@us...> - 2010-08-02 21:29:08
|
Module: performous
Branch: joinmenu
Commit: 13325f573b4661a51c84af000e66d922ded29e4d
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 3 00:28:01 2010 +0300
Fix instrument cursor rendering and don't crash with more than 5 menu items.
---
game/guitargraph.cc | 4 ++--
game/instrumentgraph.cc | 7 +++++--
game/menu.cc | 3 +--
3 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 5a47ce7..e98db01 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -293,8 +293,8 @@ void GuitarGraph::engine() {
// Menu keys
if (menuOpen()) {
// Check first regular keys
- if (ev.type == input::Event::PRESS && ev.button >= 0 && ev.button < 5) {
- int sel = m_drums ? ((ev.button + 5 - 1) % 5) : ev.button;
+ if (ev.type == input::Event::PRESS && ev.button >= 0 && ev.button < m_pads) {
+ int sel = m_drums ? ((ev.button + m_pads - 1) % m_pads) : ev.button;
m_menu.select(sel);
m_menu.action();
}
diff --git a/game/instrumentgraph.cc b/game/instrumentgraph.cc
index 6d25b26..a4f207a 100644
--- a/game/instrumentgraph.cc
+++ b/game/instrumentgraph.cc
@@ -80,8 +80,8 @@ void InstrumentGraph::drawMenu() {
for (MenuOptions::const_iterator it = m_menu.begin(); it != m_menu.end(); ++it, ++i) {
SvgTxtTheme* txt = &th.option;
// Draw the key hints
- if (getGraphType() != input::DANCEPAD) {
- int fret = (getGraphType() == input::DRUMS ? ((i + 1) % 5) : i);
+ if (getGraphType() != input::DANCEPAD && i < m_pads) {
+ int fret = (getGraphType() == input::DRUMS ? ((i + 1) % m_pads) : i);
glColor4fv(color(fret));
m_button.dimensions.middle(x - button_margin).center(y).stretch(0.05, 0.05);
m_button.draw();
@@ -97,12 +97,15 @@ void InstrumentGraph::drawMenu() {
w = std::max(w, txt->w() + 2 * step + button_margin * 2); // Calculate the widest entry
y += step;
}
+ // Draw comment text
if (cur->getComment() != "") {
//th.comment_bg.dimensions.middle().screenBottom(-0.2);
//th.comment_bg.draw();
th.comment.dimensions.middle(offsetX).screenBottom(-0.12);
th.comment.draw(cur->getComment());
}
+ m_button.dimensions.stretch(1.0, 1.0);
+ // Save the calculated menu dimensions
m_menu.dimensions.stretch(w, h);
}
diff --git a/game/menu.cc b/game/menu.cc
index 3081598..30ca24d 100644
--- a/game/menu.cc
+++ b/game/menu.cc
@@ -2,8 +2,7 @@
#include "screen.hh"
#include "surface.hh"
#include "fs.hh"
-#include "configuration.hh"
-#include "instrumentgraph.hh"
+
MenuOption::MenuOption(const std::string& nm, const std::string& comm):
type(CLOSE_SUBMENU),
|
|
From: Tapio V. <aa...@us...> - 2010-08-02 21:13:58
|
Module: performous
Branch: joinmenu
Commit: 07bd39363234da32765fa7025a3ab11ba701710c
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 3 00:11:58 2010 +0300
Change instrumenthelp image texts.
---
themes/default/instrumenthelp.svg | 33 +++++++++++----------------------
1 files changed, 11 insertions(+), 22 deletions(-)
diff --git a/themes/default/instrumenthelp.svg b/themes/default/instrumenthelp.svg
index 01690c1..ca8c77a 100644
--- a/themes/default/instrumenthelp.svg
+++ b/themes/default/instrumenthelp.svg
@@ -65,11 +65,11 @@
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
- inkscape:zoom="0.5"
- inkscape:cx="287.72345"
- inkscape:cy="261.06756"
+ inkscape:zoom="1"
+ inkscape:cx="602.01716"
+ inkscape:cy="358.48892"
inkscape:window-x="58"
- inkscape:window-y="13"
+ inkscape:window-y="24"
inkscape:current-layer="svg5215"
inkscape:window-maximized="0" />
<text
@@ -322,28 +322,17 @@
<text
xml:space="preserve"
style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;text-anchor:start;opacity:0.95;fill:#ffffff;fill-opacity:0.95;fill-rule:nonzero;stroke:#000000;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;font-family:Verdana;-inkscape-font-specification:Verdana"
- x="562.48071"
- y="372.84677"
+ x="548.48071"
+ y="373.84677"
id="text3235"><tspan
sodipodi:role="line"
- x="562.48071"
- y="372.84677"
+ x="548.48071"
+ y="373.84677"
id="tspan3239"
- style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.89999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">Choose your level</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.95;fill:#ffffff;fill-opacity:0.95;fill-rule:nonzero;stroke:#000000;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;font-family:Verdana;-inkscape-font-specification:Verdana"
- x="483.65076"
- y="424.65451"
- id="text3241"><tspan
- sodipodi:role="line"
- x="483.65076"
- y="424.65451"
- id="tspan3245"
- style="fill-rule:nonzero;stroke-width:0.89999998;stroke-miterlimit:4;stroke-dasharray:none">Switch instruments</tspan></text>
+ style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.89999998;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none">Navigate guitar menu</tspan></text>
<path
- style="fill:none;stroke:#000000;stroke-width:1.98199999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
- d="m 494.78718,355.56651 c 33.7918,36.90148 32.13332,41.46233 32.13332,41.46233"
+ style="fill:none;stroke:#000000;stroke-width:1.98200011;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
+ d="M 557.1897,348.34804 C 504.84576,364.89347 501.307,360.2599 501.307,360.2599"
id="path3253" />
<path
style="fill:none;stroke:#000000;stroke-width:1.98199999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
|
|
From: Tapio V. <aa...@us...> - 2010-08-02 21:13:56
|
Module: performous
Branch: joinmenu
Commit: 2941e0d385b2075dbab3c32d05024745f957573a
Author: Tapio Vierros <tap...@gm...>
Date: Tue Aug 3 00:06:30 2010 +0300
Revert "Document lefty mode in instrument selection screen."
This reverts commit cf97cf631b2b650e57eef46a69462fc17e11698a.
Reason: Lefty-mode is now selected through the menu.
---
themes/default/instrumenthelp.svg | 51 ++----------------------------------
1 files changed, 3 insertions(+), 48 deletions(-)
diff --git a/themes/default/instrumenthelp.svg b/themes/default/instrumenthelp.svg
index de5d706..01690c1 100644
--- a/themes/default/instrumenthelp.svg
+++ b/themes/default/instrumenthelp.svg
@@ -49,20 +49,6 @@
inkscape:vp_y="0 : 1000 : 0"
inkscape:vp_x="0 : 0.5 : 1"
sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2902"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
- <inkscape:perspective
- id="perspective2935"
- inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
- inkscape:vp_z="1 : 0.5 : 1"
- inkscape:vp_y="0 : 1000 : 0"
- inkscape:vp_x="0 : 0.5 : 1"
- sodipodi:type="inkscape:persp3d" />
</defs>
<sodipodi:namedview
inkscape:window-height="791"
@@ -79,9 +65,9 @@
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
- inkscape:zoom="1.4142136"
- inkscape:cx="525.81157"
- inkscape:cy="402.48892"
+ inkscape:zoom="0.5"
+ inkscape:cx="287.72345"
+ inkscape:cy="261.06756"
inkscape:window-x="58"
inkscape:window-y="13"
inkscape:current-layer="svg5215"
@@ -477,35 +463,4 @@
x="297.83939"
y="495.83029"
style="text-align:center;text-anchor:start;stroke-width:1.01400006;stroke-miterlimit:4;stroke-dasharray:none">TO JOIN THE GAME</tspan></text>
- <text
- xml:space="preserve"
- style="font-size:28px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;opacity:0.95;fill:#ffffff;fill-opacity:0.95;fill-rule:nonzero;stroke:#000000;stroke-width:0.89999998;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;font-family:Verdana;-inkscape-font-specification:Verdana"
- x="695.70026"
- y="310.90945"
- id="text3241-6"><tspan
- sodipodi:role="line"
- x="695.70026"
- y="310.90945"
- id="tspan3245-4"
- style="fill-rule:nonzero;stroke-width:0.89999998;stroke-miterlimit:4;stroke-dasharray:none">+ Lefty mode</tspan></text>
- <path
- sodipodi:type="arc"
- style="fill:#ffff00;fill-opacity:0.87058824;fill-rule:nonzero;stroke:none"
- id="path2925"
- sodipodi:cx="152.38152"
- sodipodi:cy="418.5715"
- sodipodi:rx="38.537319"
- sodipodi:ry="14.849242"
- d="m 190.91883,418.5715 a 38.537319,14.849242 0 1 1 -77.07463,0 38.537319,14.849242 0 1 1 77.07463,0 z"
- transform="matrix(0.41518197,0,0,1.0774961,606.80752,-150.6452)" />
- <path
- sodipodi:type="arc"
- style="fill:#0000ff;fill-opacity:0.87058824;fill-rule:nonzero;stroke:none"
- id="path2925-8"
- sodipodi:cx="152.38152"
- sodipodi:cy="418.5715"
- sodipodi:rx="38.537319"
- sodipodi:ry="14.849242"
- d="m 190.91883,418.5715 a 38.537319,14.849242 0 1 1 -77.07463,0 38.537319,14.849242 0 1 1 77.07463,0 z"
- transform="matrix(0.41518197,0,0,1.0774961,678.48896,-150.6452)" />
</svg>
|
|
From: Tapio V. <aa...@us...> - 2010-08-02 20:59:04
|
Module: performous
Branch: joinmenu
Commit: 2489bb8dd85212d2f24f251ce49387f66152bead
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 2 23:55:40 2010 +0300
Instrument menu items are selected with frets.
* Color is shown next to the item for clarity.
* Strum+start alternative navigation disabled.
* Assumes there are max 5 options in the menu.
* Dance uses old navigation.
---
game/guitargraph.cc | 44 +++++++++++++++-----------------------------
game/guitargraph.hh | 2 --
game/instrumentgraph.cc | 34 +++++++++++++++++++++++++++++++---
game/instrumentgraph.hh | 4 ++++
game/menu.cc | 5 +++++
game/menu.hh | 2 ++
6 files changed, 57 insertions(+), 34 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 117b1dc..5a47ce7 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -59,7 +59,6 @@ namespace {
GuitarGraph::GuitarGraph(Audio& audio, Song const& song, bool drums, int number, bool practmode):
InstrumentGraph(audio, song, drums ? input::DRUMS : input::GUITAR),
- m_button(getThemePath("button.svg")),
m_tail(getThemePath("tail.svg")),
m_tail_glow(getThemePath("tail_glow.svg")),
m_tail_drumfill(getThemePath("tail_drumfill.svg")),
@@ -181,6 +180,7 @@ void GuitarGraph::changeTrack(int dir) {
difficultyAuto(true);
updateNeck();
setupJoinMenu();
+ m_menu.select(1); // Restore selection to the track menu item
}
/// Set specific track
@@ -190,6 +190,7 @@ void GuitarGraph::setTrack(const std::string& track) {
difficultyAuto(true);
updateNeck();
setupJoinMenu();
+ m_menu.select(1); // Restore selection to the track menu item
}
/// Get the difficulty as displayable string
@@ -284,7 +285,7 @@ void GuitarGraph::engine() {
if (ev.type == input::Event::WHAMMY) whammy = (1.0 + ev.button + 2.0*(rand()/double(RAND_MAX))) / 4.0;
} else {
// Handle drum lefty-mode
- if (m_leftymode.b() && ev.button > 0) ev.button = m_pads - ev.button;
+ if (m_leftymode.b() && ev.button > 0 && !menuOpen()) ev.button = m_pads - ev.button;
}
// Keypress anims
if (ev.type == input::Event::PRESS) m_pressed_anim[!m_drums + ev.button].setValue(1.0);
@@ -292,17 +293,19 @@ void GuitarGraph::engine() {
// Menu keys
if (menuOpen()) {
// Check first regular keys
- if (ev.type == input::Event::PRESS && ev.button == 0) m_menu.action(1);
- else if (ev.type == input::Event::PRESS && ev.button == (m_drums ? 4 : 1)) m_menu.action(-1);
- else if (ev.type == input::Event::PRESS && ev.button == (m_drums ? 1 : 2)) m_menu.move(1);
- else if (ev.type == input::Event::PRESS && ev.button == (m_drums ? 2 : 3)) m_menu.move(-1);
- // Strum (strum of keyboard as guitar doesn't generate nav-events)
- else if (ev.type == input::Event::PICK && ev.button == 0) m_menu.move(1);
- else if (ev.type == input::Event::PICK && ev.button == 1) m_menu.move(-1);
- else { // Try nav keys (arrows)
- if (ev.nav == input::DOWN || ev.nav == input::RIGHT) m_menu.move(1);
- else if (ev.nav == input::UP || ev.nav == input::LEFT) m_menu.move(-1);
+ if (ev.type == input::Event::PRESS && ev.button >= 0 && ev.button < 5) {
+ int sel = m_drums ? ((ev.button + 5 - 1) % 5) : ev.button;
+ m_menu.select(sel);
+ m_menu.action();
}
+ // Strum (strum of keyboard as guitar doesn't generate nav-events)
+ //else if (ev.type == input::Event::PICK && ev.button == 0) m_menu.move(1);
+ //else if (ev.type == input::Event::PICK && ev.button == 1) m_menu.move(-1);
+ //else { // Try nav keys (arrows)
+ // if (ev.nav == input::START) m_menu.action();
+ // else if (ev.nav == input::DOWN || ev.nav == input::RIGHT) m_menu.move(1);
+ // else if (ev.nav == input::UP || ev.nav == input::LEFT) m_menu.move(-1);
+ //}
// See if anything changed
if (m_selectedTrack.s() != getTrack()) setTrack(m_selectedTrack.s());
else if (m_selectedDifficulty.i() != m_level) difficulty(Difficulty(m_selectedDifficulty.i()));
@@ -692,23 +695,6 @@ void GuitarGraph::guitarPlay(double time, input::Event const& ev) {
}
}
-/// Get a color based on fret index
-glutil::Color const& GuitarGraph::color(int fret) const {
- static glutil::Color fretColors[5] = {
- glutil::Color(0.0f, 0.9f, 0.0f),
- glutil::Color(0.9f, 0.0f, 0.0f),
- glutil::Color(0.9f, 0.9f, 0.0f),
- glutil::Color(0.0f, 0.0f, 1.0f),
- glutil::Color(0.9f, 0.4f, 0.0f)
- };
- if (fret < 0 || fret >= m_pads) throw std::logic_error("Invalid fret number in GuitarGraph::getColor");
- if (m_drums) {
- if (fret == 0) fret = 4;
- else if (fret == 4) fret = 0;
- }
- return fretColors[fret];
-}
-
/// Modify color based on things like GodMode and solos
glutil::Color const GuitarGraph::colorize(glutil::Color c, double time) const {
const static glutil::Color godmodeC(0.5f, 0.5f, 1.0f); // Color for full GodMode
diff --git a/game/guitargraph.hh b/game/guitargraph.hh
index 2a69547..5c2a06b 100644
--- a/game/guitargraph.hh
+++ b/game/guitargraph.hh
@@ -79,7 +79,6 @@ class GuitarGraph: public InstrumentGraph {
void guitarPlay(double time, input::Event const& ev);
// Media
- Surface m_button;
Texture m_tail;
Texture m_tail_glow;
Texture m_tail_drumfill;
@@ -121,7 +120,6 @@ class GuitarGraph: public InstrumentGraph {
unsigned m_holds[max_panels]; /// active hold notes
// Graphics functions
- glutil::Color const& color(int fret) const;
glutil::Color const colorize(glutil::Color c, double time) const;
void drawBar(double time, float h);
void drawNote(int fret, glutil::Color, float tBeg, float tEnd, float whammy = 0, bool tappable = false, bool hit = false, double hitAnim = 0.0, double releaseTime = 0.0);
diff --git a/game/instrumentgraph.cc b/game/instrumentgraph.cc
index b6e1443..6d25b26 100644
--- a/game/instrumentgraph.cc
+++ b/game/instrumentgraph.cc
@@ -18,6 +18,7 @@ InstrumentGraph::InstrumentGraph(Audio& audio, Song const& song, input::DevType
m_stream(),
m_cx(0.0, 0.2), m_width(0.5, 0.4),
m_menu(),
+ m_button(getThemePath("button.svg")),
m_text(getThemePath("sing_timetxt.svg"), config["graphic/text_lod"].f()),
m_selectedTrack(""),
m_selectedDifficulty(0),
@@ -65,17 +66,27 @@ void InstrumentGraph::drawMenu() {
double w = m_menu.dimensions.w();
const double offsetX = 0.5f * (dimensions.x1() + dimensions.x2());
const float txth = th.option.h();
+ const float button_margin = 0.05f;
const float step = txth * 0.7f;
const float h = m_menu.getOptions().size() * step + step;
float y = -h * .5f + step;
- float x = -w * .5f + step + offsetX;
+ float x = -w * .5f + step + offsetX + button_margin * 1.5f;
// Background
th.bg.dimensions.middle(offsetX).center(0).stretch(w, h);
th.bg.draw();
// Loop through menu items
w = 0;
- for (MenuOptions::const_iterator it = m_menu.begin(); it != m_menu.end(); ++it) {
+ int i = 0;
+ for (MenuOptions::const_iterator it = m_menu.begin(); it != m_menu.end(); ++it, ++i) {
SvgTxtTheme* txt = &th.option;
+ // Draw the key hints
+ if (getGraphType() != input::DANCEPAD) {
+ int fret = (getGraphType() == input::DRUMS ? ((i + 1) % 5) : i);
+ glColor4fv(color(fret));
+ m_button.dimensions.middle(x - button_margin).center(y).stretch(0.05, 0.05);
+ m_button.draw();
+ }
+ // Selected item?
if (cur == it) {
//th.back_h.dimensions.middle(0.05 + offsetX).center(y);
//th.back_h.draw();
@@ -83,7 +94,7 @@ void InstrumentGraph::drawMenu() {
}
txt->dimensions.middle(x).center(y);
txt->draw(it->getName());
- w = std::max(w, txt->w() + 2 * step); // Calculate the widest entry
+ w = std::max(w, txt->w() + 2 * step + button_margin * 2); // Calculate the widest entry
y += step;
}
if (cur->getComment() != "") {
@@ -112,3 +123,20 @@ void InstrumentGraph::handleCountdown(double time, double beginTime) {
--m_countdown;
}
}
+
+
+glutil::Color const& InstrumentGraph::color(int fret) const {
+ static glutil::Color fretColors[5] = {
+ glutil::Color(0.0f, 0.9f, 0.0f),
+ glutil::Color(0.9f, 0.0f, 0.0f),
+ glutil::Color(0.9f, 0.9f, 0.0f),
+ glutil::Color(0.0f, 0.0f, 1.0f),
+ glutil::Color(0.9f, 0.4f, 0.0f)
+ };
+ if (fret < 0 || fret >= m_pads) throw std::logic_error("Invalid fret number in InstrumentGraph::color");
+ if (getGraphType() == input::DRUMS) {
+ if (fret == 0) fret = 4;
+ else if (fret == 4) fret = 0;
+ }
+ return fretColors[fret];
+}
diff --git a/game/instrumentgraph.hh b/game/instrumentgraph.hh
index 0489814..5d853b3 100644
--- a/game/instrumentgraph.hh
+++ b/game/instrumentgraph.hh
@@ -121,7 +121,11 @@ class InstrumentGraph {
void drawPopups(double offsetX);
void handleCountdown(double time, double beginTime);
+ // Functions not really shared, but needed here
+ glutil::Color const& color(int fret) const;
+
// Media
+ Surface m_button;
SvgTxtTheme m_text;
boost::scoped_ptr<SvgTxtThemeSimple> m_popupText;
boost::scoped_ptr<ThemeInstrumentMenu> m_menuTheme;
diff --git a/game/menu.cc b/game/menu.cc
index 7d44b35..3081598 100644
--- a/game/menu.cc
+++ b/game/menu.cc
@@ -78,6 +78,11 @@ void Menu::move(int dir) {
else if (dir < 0 && selection_stack.back() > 0) --selection_stack.back();
}
+void Menu::select(unsigned sel) {
+ if (sel < menu_stack.back()->size())
+ selection_stack.back() = sel;
+}
+
void Menu::action(int dir) {
switch (current().type) {
case MenuOption::OPEN_SUBMENU:
diff --git a/game/menu.hh b/game/menu.hh
index a2be1c2..a04a11b 100644
--- a/game/menu.hh
+++ b/game/menu.hh
@@ -59,6 +59,8 @@ struct Menu {
void add(MenuOption opt);
/// move the selection
void move(int dir = 1);
+ /// set selection
+ void select(unsigned sel);
/// adjust the selected value
void action(int dir = 1);
/// clear items
|
|
From: Tapio V. <aa...@us...> - 2010-08-02 17:24:24
|
Module: performous
Branch: joinmenu
Commit: 6d757abe88d70767e5149b93fed23a12caaa5a14
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 2 20:23:26 2010 +0300
Better horizontal position & size calculation for instrument menu + comment.
---
game/instrumentgraph.cc | 11 ++++++++---
game/menu.cc | 1 +
game/menu.hh | 2 ++
game/opengl_text.hh | 2 ++
game/screen_sing.cc | 11 ++++++++---
game/theme.cc | 1 +
6 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/game/instrumentgraph.cc b/game/instrumentgraph.cc
index 76e5455..b6e1443 100644
--- a/game/instrumentgraph.cc
+++ b/game/instrumentgraph.cc
@@ -62,15 +62,18 @@ void InstrumentGraph::drawMenu() {
// Some helper vars
ThemeInstrumentMenu& th = *m_menuTheme;
MenuOptions::const_iterator cur = static_cast<MenuOptions::const_iterator>(&m_menu.current());
+ double w = m_menu.dimensions.w();
const double offsetX = 0.5f * (dimensions.x1() + dimensions.x2());
const float txth = th.option.h();
const float step = txth * 0.7f;
const float h = m_menu.getOptions().size() * step + step;
float y = -h * .5f + step;
+ float x = -w * .5f + step + offsetX;
// Background
- th.bg.dimensions.middle(.05 + offsetX).center(0).stretch(.45, h);
+ th.bg.dimensions.middle(offsetX).center(0).stretch(w, h);
th.bg.draw();
// Loop through menu items
+ w = 0;
for (MenuOptions::const_iterator it = m_menu.begin(); it != m_menu.end(); ++it) {
SvgTxtTheme* txt = &th.option;
if (cur == it) {
@@ -78,16 +81,18 @@ void InstrumentGraph::drawMenu() {
//th.back_h.draw();
txt = &th.option_selected;
}
- txt->dimensions.middle(-0.1 + offsetX).center(y);
+ txt->dimensions.middle(x).center(y);
txt->draw(it->getName());
+ w = std::max(w, txt->w() + 2 * step); // Calculate the widest entry
y += step;
}
if (cur->getComment() != "") {
//th.comment_bg.dimensions.middle().screenBottom(-0.2);
//th.comment_bg.draw();
- th.comment.dimensions.middle(-0.1 + offsetX).screenBottom(-0.12);
+ th.comment.dimensions.middle(offsetX).screenBottom(-0.12);
th.comment.draw(cur->getComment());
}
+ m_menu.dimensions.stretch(w, h);
}
diff --git a/game/menu.cc b/game/menu.cc
index 265ca3f..7d44b35 100644
--- a/game/menu.cc
+++ b/game/menu.cc
@@ -62,6 +62,7 @@ MenuOption::MenuOption(const std::string& nm, const std::string& comm, const std
Menu::Menu():
+ dimensions(),
m_open(true)
{
clear();
diff --git a/game/menu.hh b/game/menu.hh
index ab5e883..a2be1c2 100644
--- a/game/menu.hh
+++ b/game/menu.hh
@@ -77,6 +77,8 @@ struct Menu {
const MenuOptions::const_iterator end() const { return menu_stack.back()->end(); }
const MenuOptions getOptions() const { return *menu_stack.back(); }
+ Dimensions dimensions;
+
private:
MenuOptions root_options;
SubmenuStack menu_stack;
diff --git a/game/opengl_text.hh b/game/opengl_text.hh
index 0a74b05..5dc228c 100644
--- a/game/opengl_text.hh
+++ b/game/opengl_text.hh
@@ -153,6 +153,8 @@ class SvgTxtTheme {
double w() const { return m_texture_width; }
/// height
double h() const { return m_texture_height; }
+ /// set align
+ void setAlign(Align align) { m_align = align; }
private:
boost::ptr_vector<OpenGLText> m_opengl_text;
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index 25a2d34..e7109e6 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -488,27 +488,32 @@ void ScreenSing::drawMenu() {
// Some helper vars
ThemeInstrumentMenu& th = *m_menuTheme;
MenuOptions::const_iterator cur = static_cast<MenuOptions::const_iterator>(&m_menu.current());
+ double w = m_menu.dimensions.w();
const float txth = th.option.h();
const float step = txth * 0.85f;
const float h = m_menu.getOptions().size() * step + step;
float y = -h * .5f + step;
+ float x = -w * .5f + step;
// Background
- th.bg.dimensions.middle(.05).center(0).stretch(.45, h);
+ th.bg.dimensions.middle(0).center(0).stretch(w, h);
th.bg.draw();
// Loop through menu items
+ w = 0;
for (MenuOptions::const_iterator it = m_menu.begin(); it != m_menu.end(); ++it) {
SvgTxtTheme* txt = &th.option;
if (cur == it) {
txt = &th.option_selected;
}
- txt->dimensions.middle(-0.1).center(y);
+ txt->dimensions.middle(x).center(y);
txt->draw(it->getName());
+ w = std::max(w, txt->w() + 2 * step); // Calculate the widest entry
y += step;
}
if (cur->getComment() != "") {
- th.comment.dimensions.middle(-0.1).screenBottom(-0.12);
+ th.comment.dimensions.middle(0).screenBottom(-0.12);
th.comment.draw(cur->getComment());
}
+ m_menu.dimensions.stretch(w, h);
}
diff --git a/game/theme.cc b/game/theme.cc
index ac90a57..73b07b1 100644
--- a/game/theme.cc
+++ b/game/theme.cc
@@ -66,4 +66,5 @@ ThemeInstrumentMenu::ThemeInstrumentMenu():
//comment_bg(getThemePath("menu_comment_bg.svg"))
{
back_h.dimensions.fixedHeight(0.08f);
+ comment.setAlign(SvgTxtTheme::CENTER);
}
|
|
From: Tapio V. <aa...@us...> - 2010-08-02 16:01:06
|
Module: performous
Branch: joinmenu
Commit: 97e4b9531588305391ac7ae56e248b23c8250b75
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 2 18:59:26 2010 +0300
Hide lyrics and instrument "cursor" when menu is open (overlap with menu comments).
---
game/guitargraph.cc | 30 ++++++++++---------
game/layout_singer.cc | 76 +++++++++++++++++++++++++------------------------
game/layout_singer.hh | 2 +
game/screen_sing.cc | 2 +
4 files changed, 59 insertions(+), 51 deletions(-)
diff --git a/game/guitargraph.cc b/game/guitargraph.cc
index 9cbd7e3..117b1dc 100644
--- a/game/guitargraph.cc
+++ b/game/guitargraph.cc
@@ -785,20 +785,22 @@ void GuitarGraph::draw(double time) {
}
// Draw the cursor
- float level = m_pressed_anim[0].get();
- glColor3f(level, level, level);
- drawBar(0.0, 0.01f);
- // Fret buttons on cursor
- for (int fret = m_drums; fret < m_pads; ++fret) {
- float x = getFretX(fret);
- float l = m_pressed_anim[fret + !m_drums].get();
- // Get a color for the fret and adjust it if GodMode is on
- glColor4fv(colorize(color(fret), time));
- m_button.dimensions.center(time2y(0.0)).middle(x);
- m_button.draw();
- glColor3f(l, l, l);
- m_tap.dimensions = m_button.dimensions;
- m_tap.draw();
+ if (!menuOpen()) {
+ float level = m_pressed_anim[0].get();
+ glColor3f(level, level, level);
+ drawBar(0.0, 0.01f);
+ // Fret buttons on cursor
+ for (int fret = m_drums; fret < m_pads; ++fret) {
+ float x = getFretX(fret);
+ float l = m_pressed_anim[fret + !m_drums].get();
+ // Get a color for the fret and adjust it if GodMode is on
+ glColor4fv(colorize(color(fret), time));
+ m_button.dimensions.center(time2y(0.0)).middle(x);
+ m_button.draw();
+ glColor3f(l, l, l);
+ m_tap.dimensions = m_button.dimensions;
+ m_tap.draw();
+ }
}
// Draw the notes
diff --git a/game/layout_singer.cc b/game/layout_singer.cc
index 0419a93..02ec959 100644
--- a/game/layout_singer.cc
+++ b/game/layout_singer.cc
@@ -9,7 +9,7 @@
#include <boost/format.hpp>
LayoutSinger::LayoutSinger(VocalTrack& vocals, Database& database, boost::shared_ptr<ThemeSing> theme):
- m_vocals(vocals), m_noteGraph(vocals),m_lyricit(vocals.notes.begin()), m_lyrics(), m_database(database), m_theme(theme) {
+ m_vocals(vocals), m_noteGraph(vocals),m_lyricit(vocals.notes.begin()), m_lyrics(), m_database(database), m_theme(theme), m_hideLyrics() {
m_score_text[0].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
m_score_text[1].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
m_score_text[2].reset(new SvgTxtThemeSimple(getThemePath("sing_score_text.svg"), config["graphic/text_lod"].f()));
@@ -103,43 +103,45 @@ void LayoutSinger::draw(double time, Position position) {
}
// Draw the lyrics
- double linespacing = 0.0;
- Dimensions pos;
- switch(position) {
- case LayoutSinger::BOTTOM: // Fullscreen
- pos.screenBottom(-0.1);
- linespacing = 0.06;
- break;
- case LayoutSinger::MIDDLE: // Band mode
- pos.center(-0.05);
- linespacing = 0.04;
- break;
- case LayoutSinger::LEFT:
- case LayoutSinger::RIGHT:
- pos.screenBottom(-0.1);
- linespacing = 0.06;
- break;
- }
- bool dirty;
- do {
- dirty = false;
- if (!m_lyrics.empty() && m_lyrics[0].expired(time)) {
- // Add extra spacing to replace the removed row
- if (m_lyrics.size() > 1) m_lyrics[1].extraspacing.move(m_lyrics[0].extraspacing.get() + 1.0);
- m_lyrics.pop_front();
- dirty = true;
- }
- if (!dirty && m_lyricit != m_vocals.notes.end() && m_lyricit->begin < time + 4.0) {
- m_lyrics.push_back(LyricRow(m_lyricit, m_vocals.notes.end()));
- dirty = true;
+ if (!m_hideLyrics) {
+ double linespacing = 0.0;
+ Dimensions pos;
+ switch(position) {
+ case LayoutSinger::BOTTOM: // Fullscreen
+ pos.screenBottom(-0.1);
+ linespacing = 0.06;
+ break;
+ case LayoutSinger::MIDDLE: // Band mode
+ pos.center(-0.05);
+ linespacing = 0.04;
+ break;
+ case LayoutSinger::LEFT:
+ case LayoutSinger::RIGHT:
+ pos.screenBottom(-0.1);
+ linespacing = 0.06;
+ break;
}
- } while (dirty);
- if (m_theme.get()) // if there is a theme, draw the lyrics with it
- {
- for (size_t i = 0; i < m_lyrics.size(); ++i, pos.move(0.0, linespacing)) {
- pos.move(0.0, m_lyrics[i].extraspacing.get() * linespacing);
- if (i == 0) m_lyrics[0].draw(m_theme->lyrics_now, time, pos);
- else if (i == 1 && position == LayoutSinger::BOTTOM) m_lyrics[1].draw(m_theme->lyrics_next, time, pos);
+ bool dirty;
+ do {
+ dirty = false;
+ if (!m_lyrics.empty() && m_lyrics[0].expired(time)) {
+ // Add extra spacing to replace the removed row
+ if (m_lyrics.size() > 1) m_lyrics[1].extraspacing.move(m_lyrics[0].extraspacing.get() + 1.0);
+ m_lyrics.pop_front();
+ dirty = true;
+ }
+ if (!dirty && m_lyricit != m_vocals.notes.end() && m_lyricit->begin < time + 4.0) {
+ m_lyrics.push_back(LyricRow(m_lyricit, m_vocals.notes.end()));
+ dirty = true;
+ }
+ } while (dirty);
+ if (m_theme.get()) // if there is a theme, draw the lyrics with it
+ {
+ for (size_t i = 0; i < m_lyrics.size(); ++i, pos.move(0.0, linespacing)) {
+ pos.move(0.0, m_lyrics[i].extraspacing.get() * linespacing);
+ if (i == 0) m_lyrics[0].draw(m_theme->lyrics_now, time, pos);
+ else if (i == 1 && position == LayoutSinger::BOTTOM) m_lyrics[1].draw(m_theme->lyrics_next, time, pos);
+ }
}
}
diff --git a/game/layout_singer.hh b/game/layout_singer.hh
index 68a74a4..a2fbceb 100644
--- a/game/layout_singer.hh
+++ b/game/layout_singer.hh
@@ -56,6 +56,7 @@ class LayoutSinger {
void draw(double time, Position position = LayoutSinger::BOTTOM);
void drawScore(Position position);
double lyrics_begin();
+ void hideLyrics(bool hide = true) { m_hideLyrics = hide; };
private:
VocalTrack& m_vocals;
NoteGraph m_noteGraph;
@@ -67,4 +68,5 @@ class LayoutSinger {
Database& m_database;
boost::shared_ptr<ThemeSing> m_theme;
AnimValue m_feedbackFader;
+ bool m_hideLyrics;
};
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index eedfdbb..25a2d34 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -402,6 +402,8 @@ void ScreenSing::draw() {
theme->bg_top.draw();
}
+ m_layout_singer->hideLyrics(m_audio.isPaused());
+
// Dancing
if( !m_dancers.empty() ) {
danceLayout(time);
|
|
From: Tapio V. <aa...@us...> - 2010-08-02 16:01:01
|
Module: performous
Branch: joinmenu
Commit: 78d1f9ff3c756e4bef94b2fbd74f1297132f4743
Author: Tapio Vierros <tap...@gm...>
Date: Mon Aug 2 18:48:59 2010 +0300
Calculate instrument menu background size better.
---
game/instrumentgraph.cc | 13 +++++++------
game/opengl_text.cc | 18 +++++++++---------
game/opengl_text.hh | 6 ++++++
game/screen_sing.cc | 11 ++++++-----
4 files changed, 28 insertions(+), 20 deletions(-)
diff --git a/game/instrumentgraph.cc b/game/instrumentgraph.cc
index 2177dde..76e5455 100644
--- a/game/instrumentgraph.cc
+++ b/game/instrumentgraph.cc
@@ -59,15 +59,16 @@ void InstrumentGraph::drawMenu() {
Dimensions dimensions(1.0); // FIXME: bogus aspect ratio (is this fixable?)
if (getGraphType() == input::DANCEPAD) dimensions.screenTop().middle(m_cx.get()).stretch(m_width.get(), 1.0);
else dimensions.screenBottom().middle(m_cx.get()).fixedWidth(std::min(m_width.get(),0.5));
- double offsetX = 0.5 * (dimensions.x1() + dimensions.x2());
- float step = 0.05;
- float y = -0.6 * m_menu.getOptions().size() * step;
- float h = m_menu.getOptions().size() * step + step;
// Some helper vars
ThemeInstrumentMenu& th = *m_menuTheme;
MenuOptions::const_iterator cur = static_cast<MenuOptions::const_iterator>(&m_menu.current());
+ const double offsetX = 0.5f * (dimensions.x1() + dimensions.x2());
+ const float txth = th.option.h();
+ const float step = txth * 0.7f;
+ const float h = m_menu.getOptions().size() * step + step;
+ float y = -h * .5f + step;
// Background
- th.bg.dimensions.middle(.05 + offsetX).center((y+step)*.5).stretch(.45, h);
+ th.bg.dimensions.middle(.05 + offsetX).center(0).stretch(.45, h);
th.bg.draw();
// Loop through menu items
for (MenuOptions::const_iterator it = m_menu.begin(); it != m_menu.end(); ++it) {
@@ -84,7 +85,7 @@ void InstrumentGraph::drawMenu() {
if (cur->getComment() != "") {
//th.comment_bg.dimensions.middle().screenBottom(-0.2);
//th.comment_bg.draw();
- th.comment.dimensions.middle(-0.1 + offsetX).screenBottom(-0.22);
+ th.comment.dimensions.middle(-0.1 + offsetX).screenBottom(-0.12);
th.comment.draw(cur->getComment());
}
}
diff --git a/game/opengl_text.cc b/game/opengl_text.cc
index 290d572..d46d3b3 100644
--- a/game/opengl_text.cc
+++ b/game/opengl_text.cc
@@ -219,27 +219,27 @@ void SvgTxtTheme::draw(std::vector<TZoomText> const& _text, float alpha) {
}
double text_x = 0.0;
double text_y = 0.0;
- // first compute maximum height and whole length
+ // First compute maximum height and whole length
for (unsigned int i = 0; i < _text.size(); i++ ) {
text_x += m_opengl_text[i].x();
text_y = std::max(text_y, m_opengl_text[i].y());
}
- double texture_ar = text_x/text_y;
- double texture_width = std::min(0.96, text_x/800.);
- double texture_height = texture_width / texture_ar;
+ double texture_ar = text_x / text_y;
+ m_texture_width = std::min(0.96, text_x/800.);
+ m_texture_height = m_texture_width / texture_ar;
double position_x = dimensions.x1();
- if (m_align == CENTER) position_x -= 0.5 * texture_width;
- if (m_align == RIGHT) position_x -= texture_width;
+ if (m_align == CENTER) position_x -= 0.5 * m_texture_width;
+ if (m_align == RIGHT) position_x -= m_texture_width;
for (unsigned int i = 0; i < _text.size(); i++ ) {
double syllable_x = m_opengl_text[i].x();
- double syllable_width = syllable_x * texture_width / text_x;
- double syllable_height = texture_height;
+ double syllable_width = syllable_x * m_texture_width / text_x;
+ double syllable_height = m_texture_height;
double syllable_ar = syllable_width / syllable_height;
Dimensions dim(syllable_ar);
- dim.fixedHeight(texture_height).center(dimensions.y1());
+ dim.fixedHeight(m_texture_height).center(dimensions.y1());
dim.middle(position_x + 0.5 * dim.w());
TexCoords tex;
double factor = _text[i].factor;
diff --git a/game/opengl_text.hh b/game/opengl_text.hh
index 4130fde..0a74b05 100644
--- a/game/opengl_text.hh
+++ b/game/opengl_text.hh
@@ -149,6 +149,10 @@ class SvgTxtTheme {
void draw(std::string _text, float alpha = 1.0f);
/// sets highlight
void setHighlight(std::string _theme_file);
+ /// width
+ double w() const { return m_texture_width; }
+ /// height
+ double h() const { return m_texture_height; }
private:
boost::ptr_vector<OpenGLText> m_opengl_text;
@@ -158,6 +162,8 @@ class SvgTxtTheme {
double m_width;
double m_height;
double m_factor;
+ double m_texture_width;
+ double m_texture_height;
std::string m_cache_text;
TThemeTxtOpenGL m_text;
TThemeTxtOpenGL m_text_highlight;
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index 0fb6dd9..eedfdbb 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -483,14 +483,15 @@ void ScreenSing::draw() {
void ScreenSing::drawMenu() {
if (m_menu.empty()) return;
- float step = 0.075;
- float y = -0.6 * m_menu.getOptions().size() * step;
- float h = m_menu.getOptions().size() * step + step;
// Some helper vars
ThemeInstrumentMenu& th = *m_menuTheme;
MenuOptions::const_iterator cur = static_cast<MenuOptions::const_iterator>(&m_menu.current());
+ const float txth = th.option.h();
+ const float step = txth * 0.85f;
+ const float h = m_menu.getOptions().size() * step + step;
+ float y = -h * .5f + step;
// Background
- th.bg.dimensions.middle(.05).center((y+step)*.5).stretch(.45, h);
+ th.bg.dimensions.middle(.05).center(0).stretch(.45, h);
th.bg.draw();
// Loop through menu items
for (MenuOptions::const_iterator it = m_menu.begin(); it != m_menu.end(); ++it) {
@@ -503,7 +504,7 @@ void ScreenSing::drawMenu() {
y += step;
}
if (cur->getComment() != "") {
- th.comment.dimensions.middle(-0.1).screenBottom(-0.22);
+ th.comment.dimensions.middle(-0.1).screenBottom(-0.12);
th.comment.draw(cur->getComment());
}
}
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-08-01 16:37:32
|
Module: performous
Branch: songwriter
Commit: 7edccbfa1805a9fa686ee01432af6144bb447dba
Author: Lasse Karkkainen <tro...@tr...>
Date: Sun Aug 1 17:30:07 2010 +0300
Added songwriter template for psymin
---
game/screen_sing.cc | 2 ++
game/songwriter.cc | 32 ++++++++++++++++++++++++++++++++
game/songwriter.hh | 5 +++++
3 files changed, 39 insertions(+), 0 deletions(-)
diff --git a/game/screen_sing.cc b/game/screen_sing.cc
index dd822f3..cc526ef 100644
--- a/game/screen_sing.cc
+++ b/game/screen_sing.cc
@@ -11,6 +11,7 @@
#include "guitargraph.hh"
#include "glutil.hh"
#include "i18n.hh"
+#include "songwriter.hh"
#include <boost/format.hpp>
#include <boost/lexical_cast.hpp>
@@ -263,6 +264,7 @@ void ScreenSing::manageEvent(SDL_Event event) {
if (key == SDLK_F4) dispInFlash(++config["audio/round-trip"]);
if (key == SDLK_F5) dispInFlash(--config["audio/controller_delay"]);
if (key == SDLK_F6) dispInFlash(++config["audio/controller_delay"]);
+ if (key == SDLK_z) writeToFile(*m_song, boost::filesystem::path(m_song->path) / "songwriter-test");
bool seekback = false;
if (m_song->danceTracks.empty()) { // Seeking backwards is currently not permitted for dance songs
diff --git a/game/songwriter.cc b/game/songwriter.cc
new file mode 100644
index 0000000..10e11db
--- /dev/null
+++ b/game/songwriter.cc
@@ -0,0 +1,32 @@
+#include "songwriter.hh"
+#include <fstream>
+#include <iostream>
+
+void writeMid(Song const& s, boost::filesystem::path const& filename) {
+ std::ofstream f(filename.string().c_str(), std::ios::binary);
+ // FIXME: The following is just an example and doesn't actually output MID format
+ char buf[1024] = {};
+ Notes const& notes = s.vocals.notes;
+ std::cout << notes.size() << std::endl;
+ for (unsigned int i = 0; i < notes.size(); ++i) {
+ Note const& n = notes[i];
+ buf[0] = 0xFF;
+ buf[1] = n.note; // MIDI note value
+ // Others are n.begin, n.end, n.type etc. (see notes.hh)
+ f.write(buf, 1024);
+ }
+}
+
+void writeIni(Song const& s, boost::filesystem::path const& filename) {
+ std::ofstream f(filename.string().c_str(), std::ios::binary);
+ f << "[song]\n";
+ f << "title=" << s.title << '\n';
+ // ...
+}
+
+void writeToFile(Song const& s, boost::filesystem::path const& path) {
+ create_directory(path);
+ writeIni(s, path / "song.ini");
+ writeMid(s, path / "notes.mid");
+}
+
diff --git a/game/songwriter.hh b/game/songwriter.hh
new file mode 100644
index 0000000..75eb171
--- /dev/null
+++ b/game/songwriter.hh
@@ -0,0 +1,5 @@
+#include "song.hh"
+#include <boost/filesystem.hpp>
+
+void writeToFile(Song const& s, boost::filesystem::path const& path);
+
|
|
From: Lasse Kärkkäi. <tr...@us...> - 2010-08-01 14:33:09
|
Module: performous
Branch: songwriter
Commit: 931c5874d4ca8fcc230a6f5e476cb1548a6e6723
Author: Fredrik Klasson <fr...@li...>
Date: Fri Jul 30 21:40:00 2010 +0200
Load the SVG if loading the cache file fails instead of aborting with a fatal error.
---
game/surface.cc | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/game/surface.cc b/game/surface.cc
index 319e0e7..d93ad08 100644
--- a/game/surface.cc
+++ b/game/surface.cc
@@ -52,7 +52,11 @@ template <typename T> void loader(T& target, fs::path name) {
// SVG file is newer we should update cache
loadSVG(target, filename, cache_filename.string());
} else {
- loadPNG(target, cache_filename.string());
+ try {
+ loadPNG(target, cache_filename.string());
+ }catch (std::runtime_error){
+ loadSVG(target, filename, cache_filename.string());
+ }
}
} else {
loadSVG(target, filename, cache_filename.string());
|
|
From: Yoda-JM <yo...@us...> - 2010-07-31 15:17:50
|
Module: performous Branch: controllers Commit: bfff564635572c25893f21607c1aa0f9c2872fb4 Author: Vincent Le Ligeour <yo...@us...> Date: Sat Jul 31 17:17:37 2010 +0200 Changed half of the internal controller structure (buggy and hacky) --- game/joystick.cc | 199 +++++++++++++++--------------------------------------- 1 files changed, 56 insertions(+), 143 deletions(-) |
|
From: Tapio V. <aa...@us...> - 2010-07-31 09:48:07
|
Module: web Branch: master Commit: 72289a22941e2020f1cb47a3adfb6a81cf17ea36 Author: Tapio Vierros <tap...@gm...> Date: Sat Jul 31 12:32:02 2010 +0300 A status update. --- htdocs-source/index.txt | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/htdocs-source/index.txt b/htdocs-source/index.txt index 2ceeae2..1782de9 100644 --- a/htdocs-source/index.txt +++ b/htdocs-source/index.txt @@ -1,5 +1,12 @@ Announcements +:h2:2010-07-31 - Status update +We have progressed to the point where the new audio engine is pretty much on par with the previous one feature-wise. For merging, it would seem we only need some testing and tweaks to the time code calculation. Due to a bug with pause in the current audio system, the joining menu branch might require the new audio code before taken into use. Some visual clean-up is also in order. In addition, there has been initial work to move the controller mappings out of the executable, to make it much easier to add new ones. + +On packaging side, stump created a script that can easily cross-compile the dependencies and Performous itself for Windows from Debian/Ubuntu. It even produces a working installer. Sadly, the resulting build is very unstable, sometimes allowing singing or dancing, but mostly just crashing when entering the song. This seems somewhat consistent with the earlier expirements when compiling in a native mingw32 environment. So, if you have experience with stabilizing gcc builds for Windows, feel free to pitch in! + +Luckily, Mac OSX side appears brighter - we now have a fresh testing build at the <a href="http://wiki.performous.org/index.php/Nightly_Builds#Mac_OSX">wiki</a>. There are some rough edges that need filing, e.g. some textures disappear in fullscreen mode, but it is certainly usable and ends the era where our last OSX binaries date back to 0.5.0. + :h2:2010-07-16 - Status update The reason why the next 0.6 release isn't out yet is because of lacking Windows and OSX packaging. However, we haven't been sitting still - there has been significant development in various feature branches. One of them, SVG caching that greatly speeds up screen transitions is already merged to the main code. |
|
From: Fredrik K. <sci...@us...> - 2010-07-30 19:41:57
|
Module: performous
Branch: master
Commit: 931c5874d4ca8fcc230a6f5e476cb1548a6e6723
Author: Fredrik Klasson <fr...@li...>
Date: Fri Jul 30 21:40:00 2010 +0200
Load the SVG if loading the cache file fails instead of aborting with a fatal error.
---
game/surface.cc | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/game/surface.cc b/game/surface.cc
index 319e0e7..d93ad08 100644
--- a/game/surface.cc
+++ b/game/surface.cc
@@ -52,7 +52,11 @@ template <typename T> void loader(T& target, fs::path name) {
// SVG file is newer we should update cache
loadSVG(target, filename, cache_filename.string());
} else {
- loadPNG(target, cache_filename.string());
+ try {
+ loadPNG(target, cache_filename.string());
+ }catch (std::runtime_error){
+ loadSVG(target, filename, cache_filename.string());
+ }
}
} else {
loadSVG(target, filename, cache_filename.string());
|
|
From: Yoda-JM <yo...@us...> - 2010-07-27 21:59:53
|
Module: performous Branch: master Commit: 1f900d6846e241ba04623747f25adc66fda5b7bb Author: Vincent Le Ligeour <yo...@us...> Date: Tue Jul 27 23:59:29 2010 +0200 Added EditorOfFire ebuild --- portage-overlay/games-arcade/eof/eof-1.65.ebuild | 45 ++++++++++++++++++++++ 1 files changed, 45 insertions(+), 0 deletions(-) diff --git a/portage-overlay/games-arcade/eof/eof-1.65.ebuild b/portage-overlay/games-arcade/eof/eof-1.65.ebuild new file mode 100644 index 0000000..387898b --- /dev/null +++ b/portage-overlay/games-arcade/eof/eof-1.65.ebuild @@ -0,0 +1,45 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +EAPI=3 + +inherit games + +DESCRIPTION="Song editor for the game Frets On Fire" +HOMEPAGE="http://www.t3-i.com/eof.htm" +SRC_URI="http://www.t3-i.com/apps/${PN}/downloads/${PN}-${PV}-linux.tar.gz" + +LICENSE="" +SLOT="0" +KEYWORDS="~amd64" +IUSE="" + +DEPEND=" + media-libs/allegro + media-sound/vorbis-tools + media-sound/lame +" +RDEPEND="${DEPEND}" + +src_compile() { + cd "${WORKDIR}/src/" + emake -f makefile.linux || die "emake failed" +} + +src_install() { + cd "${WORKDIR}" + cat >> bin/eof.script <<-EOF + #!/bin/bash + TMP_DIR=\`mktemp -d || echo "/tmp/falback"\` + echo ">> Using \\"\${TMP_DIR}\\" as temporary location" + cp /usr/share/eof/* "\${TMP_DIR}" + cd "\${TMP_DIR}" + eof.bin + rm -rf "\${TMP_DIR}" + EOF + newbin bin/eof eof.bin + newbin bin/eof.script eof + insinto "/usr/share/${PN}" + doins bin/eof.dat bin/check.wav +} |
|
From: Tapio V. <aa...@us...> - 2010-07-27 20:09:35
|
Module: performous
Branch: master
Commit: d25e84aab8d0ef95cba85d0931e7f00d7a736fad
Author: Tapio Vierros <tap...@gm...>
Date: Tue Jul 27 23:08:38 2010 +0300
Attempt to work around porttime problems.
---
cmake/Modules/FindPortMidi.cmake | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/cmake/Modules/FindPortMidi.cmake b/cmake/Modules/FindPortMidi.cmake
index f5126d8..e3774ad 100644
--- a/cmake/Modules/FindPortMidi.cmake
+++ b/cmake/Modules/FindPortMidi.cmake
@@ -16,6 +16,12 @@ find_library(PortMidi_LIBRARY NAMES portmidi)
find_library(PortTime_LIBRARY NAMES porttime)
set(PortMidi_PROCESS_INCLUDES PortMidi_INCLUDE_DIR)
-set(PortMidi_PROCESS_LIBS PortMidi_LIBRARY PortTime_LIBRARY)
+set(PortMidi_PROCESS_LIBS PortMidi_LIBRARY)
+# Porttime library is merged to Portmidi in new versions, so
+# we work around problems by adding it only if it's present
+if (${PortTime_LIBRARY})
+ set(PortMidi_PROCESS_LIBS PortMidi_PROCESS_LIBS PortTime_LIBRARY)
+endif (${PortTime_LIBRARY})
+
libfind_process(PortMidi)
|
|
From: Tapio V. <aa...@us...> - 2010-07-27 19:37:54
|
Module: performous Branch: master Commit: 06d781635e345cf2bd6a9a92cce71ace0a670ac6 Author: Tapio Vierros <tap...@gm...> Date: Tue Jul 27 22:36:58 2010 +0300 Add a README to the repo root to make my github mirror prettier. --- README.txt | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/README.txt b/README.txt new file mode 100644 index 0000000..df8fa33 --- /dev/null +++ b/README.txt @@ -0,0 +1,8 @@ +Performous +========== +An open-source karaoke, band and dancing game where one or more players perform a song and the game scores their performances. Supports songs in UltraStar, Frets on Fire and StepMania formats. Microphones and instruments from SingStar, Guitar Hero and Rock Band as well as some dance pads are autodetected. + +Website at http://performous.org +Wiki at http://wiki.performous.org + +For compiling instructions, see docs/Compiling.txt or visit the wiki page: http://wiki.performous.org/index.php/Building_and_installing_from_source |