Ported to Windows.

Added --windowed for desktop builds.
This commit is contained in:
Aloshi 2013-05-13 14:53:28 -05:00
parent 149c1bcbdd
commit ffe573d1d6
24 changed files with 483 additions and 75 deletions

View file

@ -0,0 +1,20 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual C++ Express 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "EmulationStation_vs2010", "EmulationStation_vs2010\EmulationStation_vs2010.vcxproj", "{0AB5C397-7B64-4AAD-92AD-E6B72FEDE8C3}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0AB5C397-7B64-4AAD-92AD-E6B72FEDE8C3}.Debug|Win32.ActiveCfg = Debug|Win32
{0AB5C397-7B64-4AAD-92AD-E6B72FEDE8C3}.Debug|Win32.Build.0 = Debug|Win32
{0AB5C397-7B64-4AAD-92AD-E6B72FEDE8C3}.Release|Win32.ActiveCfg = Release|Win32
{0AB5C397-7B64-4AAD-92AD-E6B72FEDE8C3}.Release|Win32.Build.0 = Release|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View file

@ -0,0 +1,126 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{0AB5C397-7B64-4AAD-92AD-E6B72FEDE8C3}</ProjectGuid>
<RootNamespace>EmulationStation_vs2010</RootNamespace>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries>
<WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>MultiByte</CharacterSet>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="lib_paths.props" />
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
<Import Project="lib_paths.props" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup />
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>Disabled</Optimization>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
</Link>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ClCompile>
<WarningLevel>Level3</WarningLevel>
<Optimization>MaxSpeed</Optimization>
<FunctionLevelLinking>true</FunctionLevelLinking>
<IntrinsicFunctions>true</IntrinsicFunctions>
</ClCompile>
<Link>
<GenerateDebugInformation>true</GenerateDebugInformation>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
<OptimizeReferences>true</OptimizeReferences>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="..\..\src\AudioManager.cpp" />
<ClCompile Include="..\..\src\components\GuiAnimation.cpp" />
<ClCompile Include="..\..\src\components\GuiBox.cpp" />
<ClCompile Include="..\..\src\components\GuiDetectDevice.cpp" />
<ClCompile Include="..\..\src\components\GuiFastSelect.cpp" />
<ClCompile Include="..\..\src\components\GuiGameList.cpp" />
<ClCompile Include="..\..\src\components\GuiImage.cpp" />
<ClCompile Include="..\..\src\components\GuiInputConfig.cpp" />
<ClCompile Include="..\..\src\components\GuiMenu.cpp" />
<ClCompile Include="..\..\src\components\GuiTheme.cpp" />
<ClCompile Include="..\..\src\FolderData.cpp" />
<ClCompile Include="..\..\src\Font.cpp" />
<ClCompile Include="..\..\src\GameData.cpp" />
<ClCompile Include="..\..\src\Gui.cpp" />
<ClCompile Include="..\..\src\InputConfig.cpp" />
<ClCompile Include="..\..\src\InputManager.cpp" />
<ClCompile Include="..\..\src\Log.cpp" />
<ClCompile Include="..\..\src\main.cpp" />
<ClCompile Include="..\..\src\MathExp.cpp" />
<ClCompile Include="..\..\src\platform.cpp" />
<ClCompile Include="..\..\src\pugiXML\pugixml.cpp" />
<ClCompile Include="..\..\src\Renderer_draw_gl.cpp" />
<ClCompile Include="..\..\src\Renderer_init.cpp" />
<ClCompile Include="..\..\src\Sound.cpp" />
<ClCompile Include="..\..\src\SystemData.cpp" />
<ClCompile Include="..\..\src\Window.cpp" />
<ClCompile Include="..\..\src\XMLReader.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\AudioManager.h" />
<ClInclude Include="..\..\src\components\GuiAnimation.h" />
<ClInclude Include="..\..\src\components\GuiBox.h" />
<ClInclude Include="..\..\src\components\GuiDetectDevice.h" />
<ClInclude Include="..\..\src\components\GuiFastSelect.h" />
<ClInclude Include="..\..\src\components\GuiGameList.h" />
<ClInclude Include="..\..\src\components\GuiImage.h" />
<ClInclude Include="..\..\src\components\GuiInputConfig.h" />
<ClInclude Include="..\..\src\components\GuiList.h" />
<ClInclude Include="..\..\src\components\GuiMenu.h" />
<ClInclude Include="..\..\src\components\GuiTheme.h" />
<ClInclude Include="..\..\src\FileData.h" />
<ClInclude Include="..\..\src\FolderData.h" />
<ClInclude Include="..\..\src\Font.h" />
<ClInclude Include="..\..\src\GameData.h" />
<ClInclude Include="..\..\src\Gui.h" />
<ClInclude Include="..\..\src\InputConfig.h" />
<ClInclude Include="..\..\src\InputManager.h" />
<ClInclude Include="..\..\src\Log.h" />
<ClInclude Include="..\..\src\MathExp.h" />
<ClInclude Include="..\..\src\platform.h" />
<ClInclude Include="..\..\src\pugiXML\pugiconfig.hpp" />
<ClInclude Include="..\..\src\pugiXML\pugixml.hpp" />
<ClInclude Include="..\..\src\Renderer.h" />
<ClInclude Include="..\..\src\Sound.h" />
<ClInclude Include="..\..\src\SystemData.h" />
<ClInclude Include="..\..\src\Window.h" />
<ClInclude Include="..\..\src\XMLReader.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View file

@ -0,0 +1,192 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms</Extensions>
</Filter>
<Filter Include="components">
<UniqueIdentifier>{31a8e8d1-9795-42bf-99fd-500e57ac87d4}</UniqueIdentifier>
</Filter>
<Filter Include="PugiXML">
<UniqueIdentifier>{bec1ca52-69f2-42eb-b134-57016057661a}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\src\AudioManager.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\FolderData.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Font.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\GameData.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Gui.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\InputConfig.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\InputManager.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Log.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\main.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\MathExp.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Renderer_draw_gl.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Renderer_init.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Sound.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\SystemData.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\Window.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\XMLReader.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\GuiAnimation.cpp">
<Filter>components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\GuiTheme.cpp">
<Filter>components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\GuiBox.cpp">
<Filter>components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\GuiDetectDevice.cpp">
<Filter>components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\GuiFastSelect.cpp">
<Filter>components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\GuiGameList.cpp">
<Filter>components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\GuiImage.cpp">
<Filter>components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\GuiInputConfig.cpp">
<Filter>components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\components\GuiMenu.cpp">
<Filter>components</Filter>
</ClCompile>
<ClCompile Include="..\..\src\pugiXML\pugixml.cpp">
<Filter>PugiXML</Filter>
</ClCompile>
<ClCompile Include="..\..\src\platform.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\src\AudioManager.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\FileData.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\FolderData.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\Font.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\GameData.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\Gui.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\InputConfig.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\InputManager.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\Log.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\MathExp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\platform.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\Renderer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\Sound.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\SystemData.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\Window.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\XMLReader.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiTheme.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiAnimation.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiBox.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiDetectDevice.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiFastSelect.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiGameList.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiImage.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiInputConfig.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiList.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\components\GuiMenu.h">
<Filter>components</Filter>
</ClInclude>
<ClInclude Include="..\..\src\pugiXML\pugiconfig.hpp">
<Filter>PugiXML</Filter>
</ClInclude>
<ClInclude Include="..\..\src\pugiXML\pugixml.hpp">
<Filter>PugiXML</Filter>
</ClInclude>
</ItemGroup>
</Project>

View file

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets" />
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<IncludePath>C:\Games\VC++ Includes\freetype-2.3.5-1-bin\include\freetype2;C:\Games\VC++ Includes\SDL_mixer-1.2.12\include;C:\Games\VC++ Includes\FreeImage\Dist;C:\boost_1_53_0;C:\Games\VC++ Includes\SDL-1.2.15\include;$(IncludePath)</IncludePath>
<LibraryPath>C:\Games\VC++ Includes\freetype-2.3.5-1-bin\lib;C:\Games\VC++ Includes\SDL_mixer-1.2.12\lib\x86;C:\Games\VC++ Includes\FreeImage\Dist;C:\boost_1_53_0\stage\lib;C:\Games\VC++ Includes\SDL-1.2.15\lib\x86;$(LibraryPath)</LibraryPath>
</PropertyGroup>
<ItemDefinitionGroup>
<ClCompile>
<PreprocessorDefinitions>_DESKTOP_;%(PreprocessorDefinitions)</PreprocessorDefinitions>
</ClCompile>
<Link>
<AdditionalDependencies>SDLmain.lib;SDL.lib;FreeImage.lib;freetype.lib;opengl32.lib;SDL_mixer.lib;%(AdditionalDependencies)</AdditionalDependencies>
<SubSystem>Windows</SubSystem>
</Link>
</ItemDefinitionGroup>
<ItemGroup />
</Project>

View file

@ -2,7 +2,7 @@ CXX=g++
CXXFLAGS=-Wall -g -O2 CXXFLAGS=-Wall -g -O2
LDFLAGS= LDFLAGS=
SRC_SOURCES=AudioManager.cpp Window.cpp InputConfig.cpp Log.cpp FolderData.cpp Font.cpp GameData.cpp Gui.cpp InputManager.cpp main.cpp MathExp.cpp Renderer_draw_gl.cpp Renderer_init.cpp Sound.cpp SystemData.cpp XMLReader.cpp components/GuiAnimation.cpp components/GuiBox.cpp components/GuiFastSelect.cpp components/GuiGameList.cpp components/GuiImage.cpp components/GuiMenu.cpp components/GuiTheme.cpp components/GuiInputConfig.cpp components/GuiDetectDevice.cpp pugiXML/pugixml.cpp SRC_SOURCES=platform.cpp AudioManager.cpp Window.cpp InputConfig.cpp Log.cpp FolderData.cpp Font.cpp GameData.cpp Gui.cpp InputManager.cpp main.cpp MathExp.cpp Renderer_draw_gl.cpp Renderer_init.cpp Sound.cpp SystemData.cpp XMLReader.cpp components/GuiAnimation.cpp components/GuiBox.cpp components/GuiFastSelect.cpp components/GuiGameList.cpp components/GuiImage.cpp components/GuiMenu.cpp components/GuiTheme.cpp components/GuiInputConfig.cpp components/GuiDetectDevice.cpp pugiXML/pugixml.cpp
SOURCES=$(addprefix src/,$(SRC_SOURCES)) SOURCES=$(addprefix src/,$(SRC_SOURCES))
OBJECTS=$(SOURCES:.cpp=.o) OBJECTS=$(SOURCES:.cpp=.o)
DEPS=$(SOURCES:.cpp=.d) DEPS=$(SOURCES:.cpp=.d)

View file

@ -1,3 +1,7 @@
May 13, 2013
-Ported to Windows. You'll need to change the lib_paths property sheet Include and Library directories (I didn't include dependencies!).
-Added --windowed (only works for desktop builds).
April 13, 2013 April 13, 2013
-Finally merged the unstable branch, which means better input everything! -Finally merged the unstable branch, which means better input everything!
-Can now use multiple joysticks. -Can now use multiple joysticks.

View file

@ -16,10 +16,11 @@ int Font::getSize() { return mSize; }
std::string Font::getDefaultPath() std::string Font::getDefaultPath()
{ {
int fontCount = 3; const int fontCount = 4;
std::string fonts[] = {"/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf", std::string fonts[fontCount] = { "/usr/share/fonts/truetype/ttf-dejavu/DejaVuSerif.ttf",
"/usr/share/fonts/TTF/DejaVuSerif.ttf", "/usr/share/fonts/TTF/DejaVuSerif.ttf",
"/usr/share/fonts/dejavu/DejaVuSerif.ttf" }; "/usr/share/fonts/dejavu/DejaVuSerif.ttf",
"font.ttf" };
for(int i = 0; i < fontCount; i++) for(int i = 0; i < fontCount; i++)
{ {
@ -226,7 +227,7 @@ void Font::drawText(std::string text, int startx, int starty, int color)
starty += mMaxGlyphHeight; starty += mMaxGlyphHeight;
//padding (another 0.5% is added to the bottom through the sizeText function) //padding (another 0.5% is added to the bottom through the sizeText function)
starty += mMaxGlyphHeight * 0.1; starty += (int)(mMaxGlyphHeight * 0.1f);
int pointCount = text.length() * 2; int pointCount = text.length() * 2;
@ -248,8 +249,8 @@ void Font::drawText(std::string text, int startx, int starty, int color)
int p = 0; int p = 0;
int i = 0; int i = 0;
float x = startx; float x = (float)startx;
float y = starty; float y = (float)starty;
for(; p < pointCount; i++, p++) for(; p < pointCount; i++, p++)
{ {
unsigned char letter = text[i]; unsigned char letter = text[i];
@ -321,10 +322,10 @@ void Font::sizeText(std::string text, int* w, int* h)
*w = cwidth; *w = cwidth;
if(h != NULL) if(h != NULL)
*h = mMaxGlyphHeight + mMaxGlyphHeight * 0.5; *h = (int)(mMaxGlyphHeight + mMaxGlyphHeight * 0.5f);
} }
int Font::getHeight() int Font::getHeight()
{ {
return mMaxGlyphHeight * 1.5; return (int)(mMaxGlyphHeight * 1.5f);
} }

View file

@ -4,6 +4,7 @@
#include "Log.h" #include "Log.h"
#include "pugiXML/pugixml.hpp" #include "pugiXML/pugixml.hpp"
#include <boost/filesystem.hpp> #include <boost/filesystem.hpp>
#include "platform.h"
namespace fs = boost::filesystem; namespace fs = boost::filesystem;
@ -189,7 +190,7 @@ void InputManager::loadConfig()
mNumPlayers = 0; mNumPlayers = 0;
bool configuredDevice[mNumJoysticks]; bool* configuredDevice = new bool[mNumJoysticks];
for(int i = 0; i < mNumJoysticks; i++) for(int i = 0; i < mNumJoysticks; i++)
{ {
mInputConfigs[i]->setPlayerNum(-1); mInputConfigs[i]->setPlayerNum(-1);
@ -232,6 +233,8 @@ void InputManager::loadConfig()
} }
} }
delete[] configuredDevice;
if(mNumPlayers == 0) if(mNumPlayers == 0)
{ {
LOG(LogInfo) << "No input configs loaded. Loading default keyboard config."; LOG(LogInfo) << "No input configs loaded. Loading default keyboard config.";
@ -285,7 +288,7 @@ void InputManager::writeConfig()
std::string InputManager::getConfigPath() std::string InputManager::getConfigPath()
{ {
std::string path = getenv("HOME"); std::string path = getHomePath();
path += "/.emulationstation/es_input.cfg"; path += "/.emulationstation/es_input.cfg";
return path; return path;
} }

View file

@ -2,6 +2,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <iostream> #include <iostream>
#include "platform.h"
LogLevel Log::reportingLevel = LogInfo; LogLevel Log::reportingLevel = LogInfo;
FILE* Log::file = NULL; //fopen(getLogPath().c_str(), "w"); FILE* Log::file = NULL; //fopen(getLogPath().c_str(), "w");
@ -13,7 +14,7 @@ LogLevel Log::getReportingLevel()
std::string Log::getLogPath() std::string Log::getLogPath()
{ {
std::string home = getenv("HOME"); std::string home = getHomePath();
return home + "/.emulationstation/es_log.txt"; return home + "/.emulationstation/es_log.txt";
} }

View file

@ -1,5 +1,5 @@
#include "Renderer.h"
#include "platform.h" #include "platform.h"
#include "Renderer.h"
#include GLHEADER #include GLHEADER
#include <iostream> #include <iostream>
#include "Font.h" #include "Font.h"
@ -28,7 +28,7 @@ namespace Renderer {
void drawRect(int x, int y, int w, int h, unsigned int color) void drawRect(int x, int y, int w, int h, unsigned int color)
{ {
GLfloat points[12]; GLint points[12];
points[0] = x; points [1] = y; points[0] = x; points [1] = y;
points[2] = x; points[3] = y + h; points[2] = x; points[3] = y + h;
@ -46,7 +46,7 @@ namespace Renderer {
glEnableClientState(GL_VERTEX_ARRAY); glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY); glEnableClientState(GL_COLOR_ARRAY);
glVertexPointer(2, GL_FLOAT, 0, points); glVertexPointer(2, GL_INT, 0, points);
glColorPointer(4, GL_UNSIGNED_BYTE, 0, colors); glColorPointer(4, GL_UNSIGNED_BYTE, 0, colors);
glDrawArrays(GL_TRIANGLES, 0, 6); glDrawArrays(GL_TRIANGLES, 0, 6);
@ -90,7 +90,7 @@ namespace Renderer {
return; return;
} }
float fontSizes[] = {0.035, 0.045, 0.1}; float fontSizes[] = {0.035f, 0.045f, 0.1f};
for(unsigned int i = 0; i < 3; i++) for(unsigned int i = 0; i < 3; i++)
{ {
fonts[i] = new Font(fontPath, (unsigned int)(fontSizes[i] * getScreenHeight())); fonts[i] = new Font(fontPath, (unsigned int)(fontSizes[i] * getScreenHeight()));
@ -119,10 +119,9 @@ namespace Renderer {
int w, h; int w, h;
font->sizeText(text, &w, &h); font->sizeText(text, &w, &h);
int x = (int)getScreenWidth() - w; int x = getScreenWidth() - w;
x *= 0.5; x = x / 2;
x += xOffset / 2;
x += xOffset * 0.5;
drawText(text, x, y, color, font); drawText(text, x, y, color, font);
} }

View file

@ -1,12 +1,20 @@
#include "Renderer.h" #include "Renderer.h"
#include <iostream> #include <iostream>
#include "platform.h" #include "platform.h"
#ifdef _WINDOWS_
#include <Windows.h>
#endif
#include GLHEADER #include GLHEADER
#include "Font.h" #include "Font.h"
#include <SDL/SDL.h> #include <SDL.h>
#include "InputManager.h" #include "InputManager.h"
#include "Log.h" #include "Log.h"
extern bool WINDOWED;
namespace Renderer namespace Renderer
{ {
unsigned int display_width = 0; unsigned int display_width = 0;
@ -32,7 +40,7 @@ namespace Renderer
SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8); SDL_GL_SetAttribute(SDL_GL_BLUE_SIZE, 8);
SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16); SDL_GL_SetAttribute(SDL_GL_DEPTH_SIZE, 16);
SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1); SDL_GL_SetAttribute(SDL_GL_DOUBLEBUFFER, 1);
sdlScreen = SDL_SetVideoMode(display_width, display_height, 16, SDL_OPENGL | SDL_FULLSCREEN | SDL_DOUBLEBUF); sdlScreen = SDL_SetVideoMode(display_width, display_height, 16, SDL_OPENGL | (WINDOWED ? 0 : SDL_FULLSCREEN) | SDL_DOUBLEBUF);
if(sdlScreen == NULL) if(sdlScreen == NULL)
{ {
@ -40,6 +48,8 @@ namespace Renderer
return false; return false;
} }
SDL_WM_SetCaption("EmulationStation", NULL);
//usually display width/height are not specified, i.e. zero, which SDL automatically takes as "native resolution" //usually display width/height are not specified, i.e. zero, which SDL automatically takes as "native resolution"
//so, since other things rely on the size of the screen (damn currently unnormalized coordinate system), we set it here //so, since other things rely on the size of the screen (damn currently unnormalized coordinate system), we set it here
//even though the system was already initialized //even though the system was already initialized

View file

@ -4,7 +4,7 @@
#include <boost/filesystem.hpp> #include <boost/filesystem.hpp>
#include <fstream> #include <fstream>
#include <stdlib.h> #include <stdlib.h>
#include <SDL/SDL_joystick.h> #include <SDL_joystick.h>
#include "Renderer.h" #include "Renderer.h"
#include "AudioManager.h" #include "AudioManager.h"
#include "Log.h" #include "Log.h"
@ -30,7 +30,7 @@ SystemData::SystemData(std::string name, std::string descName, std::string start
if(startPath[0] == '~') if(startPath[0] == '~')
{ {
startPath.erase(0, 1); startPath.erase(0, 1);
std::string home = getenv("HOME"); std::string home = getHomePath();
startPath.insert(0, home); startPath.insert(0, home);
} }
@ -292,7 +292,7 @@ void SystemData::deleteSystems()
std::string SystemData::getConfigPath() std::string SystemData::getConfigPath()
{ {
std::string home = getenv("HOME"); std::string home = getHomePath();
if(home.empty()) if(home.empty())
{ {
LOG(LogError) << "$HOME environment variable empty or nonexistant!"; LOG(LogError) << "$HOME environment variable empty or nonexistant!";
@ -316,7 +316,7 @@ std::string SystemData::getGamelistPath(){
if(fs::exists(filePath)) if(fs::exists(filePath))
return filePath; return filePath;
filePath = getenv("HOME"); filePath = getHomePath();
filePath += "/.emulationstation/"+ getName() + "/gamelist.xml"; filePath += "/.emulationstation/"+ getName() + "/gamelist.xml";
if(fs::exists(filePath)) if(fs::exists(filePath))
return filePath; return filePath;

View file

@ -33,15 +33,15 @@ void GuiAnimation::fadeOut(int time)
void GuiAnimation::update(int deltaTime) void GuiAnimation::update(int deltaTime)
{ {
float mult = deltaTime * 0.05; float mult = deltaTime * 0.05f;
if(mMoveX != 0 || mMoveY != 0) if(mMoveX != 0 || mMoveY != 0)
{ {
int offsetx = (mMoveX > mMoveSpeed) ? mMoveSpeed : mMoveX; int offsetx = (mMoveX > mMoveSpeed) ? mMoveSpeed : mMoveX;
int offsety = (mMoveY > mMoveSpeed) ? mMoveSpeed : mMoveY; int offsety = (mMoveY > mMoveSpeed) ? mMoveSpeed : mMoveY;
offsetx *= mult; offsetx = (int)(offsetx * mult);
offsety *= mult; offsety = (int)(offsety * mult);
moveChildren(offsetx, offsety); moveChildren(offsetx, offsety);

View file

@ -83,17 +83,17 @@ void GuiDetectDevice::render()
stream >> playerString; stream >> playerString;
Renderer::drawCenteredText("Press a button on the device for", 0, Renderer::getScreenHeight() / 3, 0x000000FF, font); Renderer::drawCenteredText("Press a button on the device for", 0, Renderer::getScreenHeight() / 3, 0x000000FF, font);
Renderer::drawCenteredText("PLAYER " + playerString, 0, (int)(Renderer::getScreenHeight()*1.5) / 3, 0x333333FF, font); Renderer::drawCenteredText("PLAYER " + playerString, 0, (int)(Renderer::getScreenHeight()*1.5f) / 3, 0x333333FF, font);
if(mWindow->getInputManager()->getNumPlayers() > 0) if(mWindow->getInputManager()->getNumPlayers() > 0)
{ {
Renderer::drawCenteredText("(P1 - hold a button to finish)", 0, (int)(Renderer::getScreenHeight()*2) / 3, (mHoldingFinish ? 0x0000FFFF : 0x000066FF), font); Renderer::drawCenteredText("(P1 - hold a button to finish)", 0, (Renderer::getScreenHeight()*2) / 3, (mHoldingFinish ? 0x0000FFFF : 0x000066FF), font);
} }
if(mWindow->getInputManager()->getNumJoysticks() == 0) if(mWindow->getInputManager()->getNumJoysticks() == 0)
{ {
Renderer::drawCenteredText("No joysticks detected!", 0, Renderer::getScreenHeight()-(font->getHeight()*2)-10, 0xFF0000FF, font); Renderer::drawCenteredText("No joysticks detected!", 0, Renderer::getScreenHeight() - (font->getHeight()*2)-10, 0xFF0000FF, font);
} }
Renderer::drawCenteredText("Press F4 to quit.", 0, Renderer::getScreenHeight()-font->getHeight() - 2 , 0x000000FF, font); Renderer::drawCenteredText("Press F4 to quit.", 0, Renderer::getScreenHeight() - font->getHeight() - 2 , 0x000000FF, font);
} }

View file

@ -24,7 +24,7 @@ GuiFastSelect::GuiFastSelect(Window* window, GuiGameList* parent, GuiList<FileDa
mScrollOffset = 0; mScrollOffset = 0;
unsigned int sw = Renderer::getScreenWidth(), sh = Renderer::getScreenHeight(); unsigned int sw = Renderer::getScreenWidth(), sh = Renderer::getScreenHeight();
mBox = new GuiBox(window, sw * 0.2, sh * 0.2, sw * 0.6, sh * 0.6); mBox = new GuiBox(window, (int)(sw * 0.2f), (int)(sh * 0.2f), (int)(sw * 0.6f), (int)(sh * 0.6f));
mBox->setData(data); mBox->setData(data);
mTextColor = textcolor; mTextColor = textcolor;
@ -41,11 +41,11 @@ void GuiFastSelect::render()
unsigned int sw = Renderer::getScreenWidth(), sh = Renderer::getScreenHeight(); unsigned int sw = Renderer::getScreenWidth(), sh = Renderer::getScreenHeight();
if(!mBox->hasBackground()) if(!mBox->hasBackground())
Renderer::drawRect(sw * 0.2, sh * 0.2, sw * 0.6, sh * 0.6, 0x000FF0FF); Renderer::drawRect((int)(sw * 0.2f), (int)(sh * 0.2f), (int)(sw * 0.6f), (int)(sh * 0.6f), 0x000FF0FF);
mBox->render(); mBox->render();
Renderer::drawCenteredText(LETTERS.substr(mLetterID, 1), 0, sh * 0.5 - (mFont->getHeight() * 0.5), mTextColor, mFont); Renderer::drawCenteredText(LETTERS.substr(mLetterID, 1), 0, (int)(sh * 0.5f - (mFont->getHeight() * 0.5f)), mTextColor, mFont);
} }
void GuiFastSelect::input(InputConfig* config, Input input) void GuiFastSelect::input(InputConfig* config, Input input)

View file

@ -17,9 +17,9 @@ GuiGameList::GuiGameList(Window* window, bool useDetail) : Gui(window)
//Those with smaller displays may prefer the older view. //Those with smaller displays may prefer the older view.
if(mDetailed) if(mDetailed)
{ {
mList = new GuiList<FileData*>(mWindow, Renderer::getScreenWidth() * mTheme->getFloat("listOffsetX"), Renderer::getDefaultFont(Renderer::LARGE)->getHeight() + 2, Renderer::getDefaultFont(Renderer::MEDIUM)); mList = new GuiList<FileData*>(mWindow, (int)(Renderer::getScreenWidth() * mTheme->getFloat("listOffsetX")), Renderer::getDefaultFont(Renderer::LARGE)->getHeight() + 2, Renderer::getDefaultFont(Renderer::MEDIUM));
mScreenshot = new GuiImage(mWindow, Renderer::getScreenWidth() * mTheme->getFloat("gameImageOffsetX"), Renderer::getScreenHeight() * mTheme->getFloat("gameImageOffsetY"), "", mTheme->getFloat("gameImageWidth"), mTheme->getFloat("gameImageHeight"), false); mScreenshot = new GuiImage(mWindow, (int)(Renderer::getScreenWidth() * mTheme->getFloat("gameImageOffsetX")), (int)(Renderer::getScreenHeight() * mTheme->getFloat("gameImageOffsetY")), "", (unsigned int)mTheme->getFloat("gameImageWidth"), (unsigned int)mTheme->getFloat("gameImageHeight"), false);
mScreenshot->setOrigin(mTheme->getFloat("gameImageOriginX"), mTheme->getFloat("gameImageOriginY")); mScreenshot->setOrigin(mTheme->getFloat("gameImageOriginX"), mTheme->getFloat("gameImageOriginY"));
mImageAnimation = new GuiAnimation(); mImageAnimation = new GuiAnimation();
@ -85,7 +85,7 @@ void GuiGameList::render()
{ {
//divider //divider
if(!mTheme->getBool("hideDividers")) if(!mTheme->getBool("hideDividers"))
Renderer::drawRect(Renderer::getScreenWidth() * mTheme->getFloat("listOffsetX") - 4, Renderer::getDefaultFont(Renderer::LARGE)->getHeight() + 2, 8, Renderer::getScreenHeight(), 0x0000FFFF); Renderer::drawRect((int)(Renderer::getScreenWidth() * mTheme->getFloat("listOffsetX")) - 4, Renderer::getDefaultFont(Renderer::LARGE)->getHeight() + 2, 8, Renderer::getScreenHeight(), 0x0000FFFF);
//if we're not scrolling and we have selected a non-folder //if we're not scrolling and we have selected a non-folder
if(!mList->isScrolling() && mList->getSelectedObject() && !mList->getSelectedObject()->isFolder()) if(!mList->isScrolling() && mList->getSelectedObject() && !mList->getSelectedObject()->isFolder())
@ -94,7 +94,7 @@ void GuiGameList::render()
std::string desc = game->getDescription(); std::string desc = game->getDescription();
if(!desc.empty()) if(!desc.empty())
Renderer::drawWrappedText(desc, Renderer::getScreenWidth() * 0.03, mScreenshot->getOffsetY() + mScreenshot->getHeight() + 12, Renderer::getScreenWidth() * (mTheme->getFloat("listOffsetX") - 0.03), mTheme->getColor("description"), mTheme->getDescriptionFont()); Renderer::drawWrappedText(desc, (int)(Renderer::getScreenWidth() * 0.03), mScreenshot->getOffsetY() + mScreenshot->getHeight() + 12, (int)(Renderer::getScreenWidth() * (mTheme->getFloat("listOffsetX") - 0.03)), mTheme->getColor("description"), mTheme->getDescriptionFont());
} }
mScreenshot->render(); mScreenshot->render();
@ -200,7 +200,7 @@ std::string GuiGameList::getThemeFile()
{ {
std::string themePath; std::string themePath;
themePath = getenv("HOME"); themePath = getHomePath();
themePath += "/.emulationstation/" + mSystem->getName() + "/theme.xml"; themePath += "/.emulationstation/" + mSystem->getName() + "/theme.xml";
if(boost::filesystem::exists(themePath)) if(boost::filesystem::exists(themePath))
return themePath; return themePath;
@ -209,7 +209,7 @@ std::string GuiGameList::getThemeFile()
if(boost::filesystem::exists(themePath)) if(boost::filesystem::exists(themePath))
return themePath; return themePath;
themePath = getenv("HOME"); themePath = getHomePath();
themePath += "/.emulationstation/es_theme.xml"; themePath += "/.emulationstation/es_theme.xml";
if(boost::filesystem::exists(themePath)) if(boost::filesystem::exists(themePath))
return themePath; return themePath;
@ -235,13 +235,13 @@ void GuiGameList::updateTheme()
{ {
mList->setCentered(mTheme->getBool("listCentered")); mList->setCentered(mTheme->getBool("listCentered"));
mList->setOffsetX(mTheme->getFloat("listOffsetX") * Renderer::getScreenWidth()); mList->setOffsetX((int)(mTheme->getFloat("listOffsetX") * Renderer::getScreenWidth()));
mList->setTextOffsetX(mTheme->getFloat("listTextOffsetX") * Renderer::getScreenWidth()); mList->setTextOffsetX((int)(mTheme->getFloat("listTextOffsetX") * Renderer::getScreenWidth()));
mScreenshot->setOffsetX(mTheme->getFloat("gameImageOffsetX") * Renderer::getScreenWidth()); mScreenshot->setOffsetX((int)(mTheme->getFloat("gameImageOffsetX") * Renderer::getScreenWidth()));
mScreenshot->setOffsetY(mTheme->getFloat("gameImageOffsetY") * Renderer::getScreenHeight()); mScreenshot->setOffsetY((int)(mTheme->getFloat("gameImageOffsetY") * Renderer::getScreenHeight()));
mScreenshot->setOrigin(mTheme->getFloat("gameImageOriginX"), mTheme->getFloat("gameImageOriginY")); mScreenshot->setOrigin(mTheme->getFloat("gameImageOriginX"), mTheme->getFloat("gameImageOriginY"));
mScreenshot->setResize(mTheme->getFloat("gameImageWidth"), mTheme->getFloat("gameImageHeight"), false); mScreenshot->setResize((int)mTheme->getFloat("gameImageWidth"), (int)mTheme->getFloat("gameImageHeight"), false);
} }
} }
@ -252,7 +252,7 @@ void GuiGameList::updateDetailData()
if(mList->getSelectedObject() && !mList->getSelectedObject()->isFolder()) if(mList->getSelectedObject() && !mList->getSelectedObject()->isFolder())
{ {
mScreenshot->setOffset((mTheme->getFloat("gameImageOffsetX") - 0.05) * Renderer::getScreenWidth(), mTheme->getFloat("gameImageOffsetY") * Renderer::getScreenHeight()); mScreenshot->setOffset((int)((mTheme->getFloat("gameImageOffsetX") - 0.05) * Renderer::getScreenWidth()), (int)(mTheme->getFloat("gameImageOffsetY") * Renderer::getScreenHeight()));
if(((GameData*)mList->getSelectedObject())->getImagePath().empty()) if(((GameData*)mList->getSelectedObject())->getImagePath().empty())
mScreenshot->setImage(mTheme->getString("imageNotFoundPath")); mScreenshot->setImage(mTheme->getString("imageNotFoundPath"));

View file

@ -200,9 +200,9 @@ void GuiImage::resize()
resizeScaleX = resizeScaleY; resizeScaleX = resizeScaleY;
if(resizeScaleX) if(resizeScaleX)
mDrawWidth *= resizeScaleX; mDrawWidth = (int)(mDrawWidth * resizeScaleX);
if(resizeScaleY) if(resizeScaleY)
mDrawHeight *= resizeScaleY; mDrawHeight = (int)(mDrawHeight * resizeScaleY);
} }
} }

View file

@ -1,11 +1,13 @@
#ifndef _GUIIMAGE_H_ #ifndef _GUIIMAGE_H_
#define _GUIIMAGE_H_ #define _GUIIMAGE_H_
#include "../platform.h"
#include GLHEADER
#include "../Gui.h" #include "../Gui.h"
#include <string> #include <string>
#include <FreeImage.h> #include <FreeImage.h>
#include "../platform.h"
#include GLHEADER
class GuiImage : public Gui class GuiImage : public Gui
{ {

View file

@ -42,7 +42,7 @@ void GuiList<listType>::render()
if((int)mRowVector.size() >= screenCount) if((int)mRowVector.size() >= screenCount)
{ {
startEntry = mSelection - (screenCount * 0.5); startEntry = mSelection - (int)(screenCount * 0.5);
if(startEntry < 0) if(startEntry < 0)
startEntry = 0; startEntry = 0;
if(startEntry >= (int)mRowVector.size() - screenCount) if(startEntry >= (int)mRowVector.size() - screenCount)

View file

@ -1,6 +1,6 @@
#include "GuiMenu.h" #include "GuiMenu.h"
#include <iostream> #include <iostream>
#include <SDL/SDL.h> #include <SDL.h>
#include "../Log.h" #include "../Log.h"
#include "../SystemData.h" #include "../SystemData.h"
#include "GuiGameList.h" #include "GuiGameList.h"
@ -84,6 +84,6 @@ void GuiMenu::update(int deltaTime)
void GuiMenu::render() void GuiMenu::render()
{ {
Renderer::drawRect(Renderer::getScreenWidth() * 0.25, 0, Renderer::getScreenWidth() * 0.5, Renderer::getScreenHeight(), 0x999999); Renderer::drawRect(Renderer::getScreenWidth() / 4, 0, Renderer::getScreenWidth() / 2, Renderer::getScreenHeight(), 0x999999);
mList->render(); mList->render();
} }

View file

@ -97,7 +97,7 @@ void GuiTheme::setDefaults()
mBoolMap["listCentered"] = true; mBoolMap["listCentered"] = true;
mFloatMap["listOffsetX"] = 0.5; mFloatMap["listOffsetX"] = 0.5;
mFloatMap["listTextOffsetX"] = 0.005; mFloatMap["listTextOffsetX"] = 0.005f;
mFloatMap["gameImageOriginX"] = 0.5; mFloatMap["gameImageOriginX"] = 0.5;
mFloatMap["gameImageOriginY"] = 0; mFloatMap["gameImageOriginY"] = 0;
mFloatMap["gameImageOffsetX"] = mFloatMap["listOffsetX"] / 2; mFloatMap["gameImageOffsetX"] = mFloatMap["listOffsetX"] / 2;
@ -204,16 +204,16 @@ void GuiTheme::readXML(std::string path)
mColorMap["description"] = resolveColor(root.child("descColor").text().get(), mColorMap["description"]); mColorMap["description"] = resolveColor(root.child("descColor").text().get(), mColorMap["description"]);
mColorMap["fastSelect"] = resolveColor(root.child("fastSelectColor").text().get(), mColorMap["fastSelect"]); mColorMap["fastSelect"] = resolveColor(root.child("fastSelectColor").text().get(), mColorMap["fastSelect"]);
mBoolMap["hideHeader"] = root.child("hideHeader"); mBoolMap["hideHeader"] = root.child("hideHeader") != 0;
mBoolMap["hideDividers"] = root.child("hideDividers"); mBoolMap["hideDividers"] = root.child("hideDividers") != 0;
//GuiBox theming data //GuiBox theming data
mBoxData.backgroundPath = expandPath(root.child("boxBackground").text().get()); mBoxData.backgroundPath = expandPath(root.child("boxBackground").text().get());
mBoxData.backgroundTiled = root.child("boxBackgroundTiled"); mBoxData.backgroundTiled = root.child("boxBackgroundTiled") != 0;
mBoxData.horizontalPath = expandPath(root.child("boxHorizontal").text().get()); mBoxData.horizontalPath = expandPath(root.child("boxHorizontal").text().get());
mBoxData.horizontalTiled = root.child("boxHorizontalTiled"); mBoxData.horizontalTiled = root.child("boxHorizontalTiled") != 0;
mBoxData.verticalPath = expandPath(root.child("boxVertical").text().get()); mBoxData.verticalPath = expandPath(root.child("boxVertical").text().get());
mBoxData.verticalTiled = root.child("boxVerticalTiled"); mBoxData.verticalTiled = root.child("boxVerticalTiled") != 0;
mBoxData.cornerPath = expandPath(root.child("boxCorner").text().get()); mBoxData.cornerPath = expandPath(root.child("boxCorner").text().get());
//list stuff //list stuff
@ -288,7 +288,7 @@ Gui* GuiTheme::createElement(pugi::xml_node data, Gui* parent)
std::string dim = data.child("dim").text().get(); std::string dim = data.child("dim").text().get();
std::string origin = data.child("origin").text().get(); std::string origin = data.child("origin").text().get();
bool tiled = data.child("tiled"); bool tiled = data.child("tiled") != 0;
//split position and dimension information //split position and dimension information
std::string posX, posY; std::string posX, posY;
@ -301,10 +301,10 @@ Gui* GuiTheme::createElement(pugi::xml_node data, Gui* parent)
splitString(origin, ' ', &originX, &originY); splitString(origin, ' ', &originX, &originY);
//resolve to pixels from percentages/variables //resolve to pixels from percentages/variables
int x = resolveExp(posX) * Renderer::getScreenWidth(); int x = (int)(resolveExp(posX) * Renderer::getScreenWidth());
int y = resolveExp(posY) * Renderer::getScreenHeight(); int y = (int)(resolveExp(posY) * Renderer::getScreenHeight());
int w = resolveExp(dimW) * Renderer::getScreenWidth(); int w = (int)(resolveExp(dimW) * Renderer::getScreenWidth());
int h = resolveExp(dimH) * Renderer::getScreenHeight(); int h = (int)(resolveExp(dimH) * Renderer::getScreenHeight());
float ox = strToFloat(originX); float ox = strToFloat(originX);
float oy = strToFloat(originY); float oy = strToFloat(originY);
@ -327,7 +327,7 @@ Gui* GuiTheme::createElement(pugi::xml_node data, Gui* parent)
std::string GuiTheme::expandPath(std::string path) std::string GuiTheme::expandPath(std::string path)
{ {
if(path[0] == '~') if(path[0] == '~')
path = getenv("HOME") + path.substr(1, path.length() - 1); path = getHomePath() + path.substr(1, path.length() - 1);
else if(path[0] == '.') else if(path[0] == '.')
path = boost::filesystem::path(mPath).parent_path().string() + path.substr(1, path.length() - 1); path = boost::filesystem::path(mPath).parent_path().string() + path.substr(1, path.length() - 1);
@ -344,7 +344,7 @@ float GuiTheme::resolveExp(std::string str, float defaultVal)
exp.setExpression(str); exp.setExpression(str);
//set variables //set variables
exp.setVariable("headerHeight", Renderer::getDefaultFont(Renderer::LARGE)->getHeight() / Renderer::getScreenHeight()); exp.setVariable("headerHeight", (float)(Renderer::getDefaultFont(Renderer::LARGE)->getHeight() / Renderer::getScreenHeight()));
exp.setVariable("infoWidth", mFloatMap["listOffsetX"]); exp.setVariable("infoWidth", mFloatMap["listOffsetX"]);
return exp.eval(); return exp.eval();

View file

@ -1,12 +1,12 @@
//EmulationStation, a graphical front-end for ROM browsing. Created by Alec "Aloshi" Lofquist. //EmulationStation, a graphical front-end for ROM browsing. Created by Alec "Aloshi" Lofquist.
#include <SDL.h>
#include <iostream> #include <iostream>
#include "Renderer.h" #include "Renderer.h"
#include "components/GuiGameList.h" #include "components/GuiGameList.h"
#include "SystemData.h" #include "SystemData.h"
#include <boost/filesystem.hpp> #include <boost/filesystem.hpp>
#include "components/GuiDetectDevice.h" #include "components/GuiDetectDevice.h"
#include <SDL.h>
#include "AudioManager.h" #include "AudioManager.h"
#include "platform.h" #include "platform.h"
#include "Log.h" #include "Log.h"
@ -24,6 +24,7 @@ bool IGNOREGAMELIST = false;
bool DRAWFRAMERATE = false; bool DRAWFRAMERATE = false;
bool DONTSHOWEXIT = false; bool DONTSHOWEXIT = false;
bool DEBUG = false; bool DEBUG = false;
bool WINDOWED = false;
unsigned int DIMTIME = 30*1000; unsigned int DIMTIME = 30*1000;
namespace fs = boost::filesystem; namespace fs = boost::filesystem;
@ -39,11 +40,11 @@ int main(int argc, char* argv[])
if(strcmp(argv[i], "-w") == 0) if(strcmp(argv[i], "-w") == 0)
{ {
width = atoi(argv[i + 1]); width = atoi(argv[i + 1]);
i++; i++; //skip the argument value
}else if(strcmp(argv[i], "-h") == 0) }else if(strcmp(argv[i], "-h") == 0)
{ {
height = atoi(argv[i + 1]); height = atoi(argv[i + 1]);
i++; i++; //skip the argument value
}else if(strcmp(argv[i], "--gamelist-only") == 0) }else if(strcmp(argv[i], "--gamelist-only") == 0)
{ {
PARSEGAMELISTONLY = true; PARSEGAMELISTONLY = true;
@ -63,7 +64,10 @@ int main(int argc, char* argv[])
}else if(strcmp(argv[i], "--dimtime") == 0) }else if(strcmp(argv[i], "--dimtime") == 0)
{ {
DIMTIME = atoi(argv[i + 1]) * 1000; DIMTIME = atoi(argv[i + 1]) * 1000;
i++; i++; //skip the argument value
}else if(strcmp(argv[i], "--windowed") == 0)
{
WINDOWED = true;
}else if(strcmp(argv[i], "--help") == 0) }else if(strcmp(argv[i], "--help") == 0)
{ {
std::cout << "EmulationStation, a graphical front-end for ROM browsing.\n"; std::cout << "EmulationStation, a graphical front-end for ROM browsing.\n";
@ -76,6 +80,11 @@ int main(int argc, char* argv[])
std::cout << "--no-exit don't show the exit option in the menu\n"; std::cout << "--no-exit don't show the exit option in the menu\n";
std::cout << "--debug even more logging\n"; std::cout << "--debug even more logging\n";
std::cout << "--dimtime [seconds] time to wait before dimming the screen (default 30, use 0 for never)\n"; std::cout << "--dimtime [seconds] time to wait before dimming the screen (default 30, use 0 for never)\n";
#ifdef _DESKTOP_
std::cout << "--windowed not fullscreen\n";
#endif
std::cout << "--help summon a sentient, angry tuba\n\n"; std::cout << "--help summon a sentient, angry tuba\n\n";
std::cout << "More information available in README.md.\n"; std::cout << "More information available in README.md.\n";
return 0; return 0;
@ -90,7 +99,7 @@ int main(int argc, char* argv[])
bool running = true; bool running = true;
//make sure the config directory exists //make sure the config directory exists
std::string home = getenv("HOME"); std::string home = getHomePath();
std::string configDir = home + "/.emulationstation"; std::string configDir = home + "/.emulationstation";
if(!fs::exists(configDir)) if(!fs::exists(configDir))
{ {

14
src/platform.cpp Normal file
View file

@ -0,0 +1,14 @@
#include "platform.h"
std::string getHomePath()
{
#ifdef _WIN32
return "C:\\";
#else
const char* home = getenv("HOME");
if(home == NULL)
return "";
else
return home;
#endif
}

View file

@ -2,12 +2,20 @@
//#define _RPI_ //#define _RPI_
//#define _DESKTOP_ //#define _DESKTOP_
#ifdef _RPI_ #ifdef _RPI_
#define GLHEADER <GLES/gl.h> #define GLHEADER <GLES/gl.h>
#endif #endif
#ifdef _DESKTOP_ #ifdef _DESKTOP_
#define GLHEADER <GL/gl.h> //why the hell this naming inconsistency exists is well beyond me
#ifdef _WIN32
#define sleep Sleep
#endif
#define GLHEADER <SDL_opengl.h>
#endif #endif
#include <string>
std::string getHomePath();