Merge pull request #4038 from Mailaender/fallbacks

Fallback to no sound and OpenGL renderer
This commit is contained in:
Paul Chote
2013-11-09 14:06:18 -08:00
6 changed files with 36 additions and 12 deletions

View File

@@ -285,6 +285,7 @@ namespace OpenRA
Log.AddChannel("sync", "syncreport.log");
Log.AddChannel("server", "server.log");
Log.AddChannel("sound", "sound.log");
Log.AddChannel("graphics", "graphics.log");
if (Settings.Server.DiscoverNatDevices)
UPnP.TryNatDiscovery();
@@ -295,14 +296,38 @@ namespace OpenRA
}
FileSystem.Mount("."); // Needed to access shaders
Renderer.Initialize( Game.Settings.Graphics.Mode );
var renderers = new [] { Settings.Graphics.Renderer, "Sdl2", "Gl", "Cg" };
foreach (var r in renderers)
{
Settings.Graphics.Renderer = r;
try
{
Renderer.Initialize(Settings.Graphics.Mode);
break;
}
catch (Exception e)
{
Log.Write("graphics", "{0}", e);
Console.WriteLine("Renderer initialization failed. Fallback in place. Check graphics.log for details.");
}
}
Renderer = new Renderer();
try
{
Sound.Create(Settings.Sound.Engine);
}
catch (Exception e)
{
Log.Write("sound", "{0}", e);
Console.WriteLine("Creating the sound engine failed. Fallback in place. Check sound.log for details.");
Settings.Sound.Engine = "Null";
Sound.Create(Settings.Sound.Engine);
}
Console.WriteLine("Available mods:");
foreach(var mod in Mod.AllMods)
Console.WriteLine("\t{0}: {1} ({2})", mod.Key, mod.Value.Title, mod.Value.Version);
Sound.Create(Settings.Sound.Engine);
InitializeWithMods(Settings.Game.Mods);
if (Settings.Server.DiscoverNatDevices)

View File

@@ -137,10 +137,10 @@ namespace OpenRA.Graphics
FixOSX();
var resolution = GetResolution(windowMode);
string renderer = Game.Settings.Server.Dedicated ? "Null" : Game.Settings.Graphics.Renderer;
var renderer = Game.Settings.Server.Dedicated ? "Null" : Game.Settings.Graphics.Renderer;
var rendererPath = Path.GetFullPath("OpenRA.Renderer.{0}.dll".F(renderer));
device = CreateDevice(Assembly.LoadFile(rendererPath), resolution.Width, resolution.Height, windowMode);
}

View File

@@ -22,7 +22,7 @@ namespace OpenRA.Renderer.Cg
{
public IGraphicsDevice Create(Size size, WindowMode windowMode)
{
Console.WriteLine("Using Cg renderer");
Console.WriteLine("Using SDL 1.2 with Cg renderer");
return new GraphicsDevice(size, windowMode);
}
}
@@ -43,9 +43,9 @@ namespace OpenRA.Renderer.Cg
static Tao.Cg.Cg.CGerrorCallbackFuncDelegate errorCallback = () =>
{
var err = Tao.Cg.Cg.cgGetError();
var msg = "CG Error: {0}: {1}".F(err, Tao.Cg.Cg.cgGetErrorString(err));
var msg = "Cg Error: {0}: {1}".F(err, Tao.Cg.Cg.cgGetErrorString(err));
ErrorHandler.WriteGraphicsLog(msg);
throw new InvalidOperationException("CG Error. See graphics.log for details");
throw new InvalidOperationException("Cg Error. See graphics.log for details");
};
public GraphicsDevice(Size size, WindowMode window)

View File

@@ -21,7 +21,7 @@ namespace OpenRA.Renderer.Glsl
{
public IGraphicsDevice Create(Size size, WindowMode windowMode)
{
Console.WriteLine("Using Gl renderer");
Console.WriteLine("Using SDL 1.2 with OpenGL renderer");
return new GraphicsDevice(size, windowMode);
}
}

View File

@@ -25,7 +25,7 @@ namespace OpenRA.Renderer.Sdl2
{
public IGraphicsDevice Create(Size size, WindowMode windowMode)
{
Console.WriteLine("Using SDL2 renderer");
Console.WriteLine("Using SDL 2 with OpenGL renderer");
return new Sdl2GraphicsDevice(size, windowMode);
}
}

View File

@@ -48,7 +48,6 @@ namespace OpenRA.Renderer.SdlCommon
public static void WriteGraphicsLog(string message)
{
Log.AddChannel("graphics", "graphics.log");
Log.Write("graphics", message);
Log.Write("graphics", "");
Log.Write("graphics", "OpenGL Information:");