Initial commit: OpenRA game engine
Some checks failed
Continuous Integration / Linux (.NET 8.0) (push) Has been cancelled
Continuous Integration / Windows (.NET 8.0) (push) Has been cancelled

Fork from OpenRA/OpenRA with one-click launch script (start-ra.cmd)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
let5sne.win10
2026-01-10 21:46:54 +08:00
commit 9cf6ebb986
4065 changed files with 635973 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<runtime>
<loadFromRemoteSources enabled="true" />
</runtime>
</configuration>

View File

@@ -0,0 +1,30 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<AssemblyName>OpenRA</AssemblyName>
<IsPublishable Condition="'$(CopyGenericLauncher)' == 'False'">false</IsPublishable>
</PropertyGroup>
<PropertyGroup Condition="'$(RunConfiguration)' == 'Red Alert'">
<StartAction>Project</StartAction>
<StartArguments>Engine.EngineDir=".." Game.Mod=ra</StartArguments>
</PropertyGroup>
<PropertyGroup Condition="'$(RunConfiguration)' == 'Dune 2000'">
<StartAction>Project</StartAction>
<StartArguments>Engine.EngineDir=".." Game.Mod=d2k</StartArguments>
</PropertyGroup>
<PropertyGroup Condition="'$(RunConfiguration)' == 'Tiberian Dawn'">
<StartAction>Project</StartAction>
<StartArguments>Engine.EngineDir=".." Game.Mod=cnc</StartArguments>
</PropertyGroup>
<PropertyGroup Condition="'$(RunConfiguration)' == 'Tiberian Sun'">
<StartAction>Project</StartAction>
<StartArguments>Engine.EngineDir=".." Game.Mod=ts</StartArguments>
</PropertyGroup>
<ItemGroup>
<None Include="App.config" />
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj" />
<AdditionalFiles Include="Properties/launchSettings.json" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,60 @@
#region Copyright & License Information
/*
* Copyright (c) The OpenRA Developers and Contributors
* This file is part of OpenRA, which is free software. It is made
* available to you under the terms of the GNU General Public License
* as published by the Free Software Foundation, either version 3 of
* the License, or (at your option) any later version. For more
* information, see COPYING.
*/
#endregion
using System;
using System.Diagnostics;
using System.Linq;
namespace OpenRA.Launcher
{
static class Program
{
[STAThread]
static int Main(string[] args)
{
if (Debugger.IsAttached || args.Contains("--just-die"))
{
try
{
return (int)Game.InitializeAndRun(args);
}
catch
{
// Flush logs before rethrowing, i.e. allowing the exception to go unhandled.
// try-finally won't work - an unhandled exception kills our process without running the finally block!
Log.Dispose();
throw;
}
finally
{
Log.Dispose();
}
}
AppDomain.CurrentDomain.UnhandledException += (_, e) => ExceptionHandler.HandleFatalError((Exception)e.ExceptionObject);
try
{
return (int)Game.InitializeAndRun(args);
}
catch (Exception e)
{
ExceptionHandler.HandleFatalError(e);
return (int)RunStatus.Error;
}
finally
{
// Flushing logs in finally block is okay here, as the catch block handles the exception.
Log.Dispose();
}
}
}
}

View File

@@ -0,0 +1,20 @@
{
"profiles": {
"Tiberian Dawn": {
"commandName": "Project",
"commandLineArgs": "Engine.EngineDir=\"..\" Game.Mod=cnc"
},
"Red Alert": {
"commandName": "Project",
"commandLineArgs": "Engine.EngineDir=\"..\" Game.Mod=ra"
},
"Dune 2000": {
"commandName": "Project",
"commandLineArgs": "Engine.EngineDir=\"..\" Game.Mod=d2k"
},
"Tiberian Sun": {
"commandName": "Project",
"commandLineArgs": "Engine.EngineDir=\"..\" Game.Mod=ts"
}
}
}