Browse Source

First Commit

master
Fincer 8 years ago
commit
05776ee78b
18 changed files with 1522 additions and 0 deletions
  1. +93
    -0
      Readme.md
  2. +67
    -0
      arch_linux/PKGBUILD
  3. +12
    -0
      arch_linux/makefile-mcs.patch
  4. +11
    -0
      arch_linux/openra-bleed-tibsunra2.install
  5. +110
    -0
      arch_linux/ra2-csproj.patch
  6. +134
    -0
      arch_linux/tibsun_ra2.patch
  7. +325
    -0
      ubuntu/install.sh
  8. BIN
      ubuntu/nuget-14.04-14.10/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb
  9. BIN
      ubuntu/nuget-14.04-14.10/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb
  10. +12
    -0
      ubuntu/patches/makefile-mcs.patch
  11. +110
    -0
      ubuntu/patches/ra2-csproj.patch
  12. +134
    -0
      ubuntu/patches/tibsun_ra2.patch
  13. +34
    -0
      windows/BEFORE-INSTALLATION.txt
  14. +126
    -0
      windows/data/install.ps1
  15. +257
    -0
      windows/data/openra-srcpatch.patch
  16. BIN
      windows/data/patch.exe
  17. +1
    -0
      windows/install.bat
  18. +96
    -0
      windows/windows-manual-installation.txt

+ 93
- 0
Readme.md View File

@ -0,0 +1,93 @@
Introduction
==============
This Github repository provides a bunch of scripts for installing TS/RA2 on OpenRA.
The following operating systems are currently supported:
- Windows 7
- Ubuntu (14.04 LTS, 14.10, 15.04 LTS, 15.10 & 16.04 LTS)
- Linux Mint
- Arch Linux
A lot of people are willing to play Tiberian Sun and Red Alert 2 mods in OpenRA, no matter if they're at unfinished state or not. Personally, I feel the official OpenRA wiki may be really hard to understand for novice people who just want to play these titles and show little interest in cryptic compilation processes.
That's why, as not official support is not provided yet, I decided to do something about this TS/RA2 issue/dilemma: I made a bunch of scripts and instructions that should make life for an average user a bit easier and help installation of these two awesome titles (TS/RA2) on OpenRA.
**Installation instructions**
--------------
**Windows**
1) Make sure you have .NET Framework 4.5 installed on your computer
( Read *BEFORE-INSTALLATION.txt* for further information)
2) Double click *install.bat*
3) Follow the instructions
**Ubuntu & Ubuntu Variants (Linux Mint, Lubuntu, Xubuntu, Kubuntu etc.)**
1) Double click install.sh and select "Run in terminal". A new terminal window opens. Type
```
bash install.sh
```
2) Follow the instructions
**Arch Linux**
1) Open terminal
2) Navigate to the folder where you have openra-bleed-tibsunra2.install, tibsun_ra2.patch & PKGBUILD
3) Run the following commands:
```
updpkgsums
makepkg
```
You may need to install missing dependencies at this point.
4) Install OpenRA by typing
```
sudo pacman -U openra-bleed-tibsunra2-r*.tar.xz
```
5) Once the game is installed, please follow the instructions about how to install Red Alert 2 mix files, given in the end of the installation process.
6) Play the game by typing 'openra' in terminal or using a desktop file.
**Post-installation instructions**
--------------
**To play Tiberian Sun**
Launch the game and download the required asset files from the web when the game asks you to do so.
**To play Red Alert 2**
You must install language.mix, multi.mix, ra2.mix and theme.mix into '$HOME/.openra/Content/ra2/' folder. You find these files from original RA2 installation media (CD's):
- theme.mix, multi.mix = RA2 CD Root folder
- ra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file)
**Multiplayer**
It's recommended to use exactly same OpenRA binary for multiplayer usage to minimize possible version differences/conflicts between players. If your friends compiles this package with another operating system, please make sure they use exactly same source files for their OpenRA compilation process.
**Uninstallation**
--------------
For uninstallation, please see specific instructions for your Operating System below.
**Windows**
Since the game has been compiled from source and no additional setup programs are provided, all you need to do is to delete the contents of 'OpenRA-bleed-tibsunra2' folder and \My Documents\OpenRA\.
**Ubuntu/Linux Mint**
If you want to remove OpenRA, just run 'sudo apt-get purge --remove openra-bleed-tibsunra2' (without quotations) in your terminal window.
**Arch Linux**
Run 'sudo pacman -Rs openra-bleed-tibsunra2' (without quotations) in your terminal window.

+ 67
- 0
arch_linux/PKGBUILD View File

@ -0,0 +1,67 @@
# Maintainer: Fincer <fincer89 at hotmail dot com>
pkgname=openra-bleed-tibsunra2
pkgver=r19983.ddea517
pkgrel=1
pkgdesc="An open-source implementation of the Red Alert engine using .NET/mono and OpenGL (git version)"
arch=("any")
url="http://openra.net"
license=("GPL3")
depends=("mono" "ttf-dejavu" "openal" "libgl" "freetype2" "sdl2" "lua51" "hicolor-icon-theme" "desktop-file-utils" "xdg-utils")
makedepends=("git" "nuget")
provides=("openra" "openra-dedicated-bleed")
conflicts=("openra-bleed" "openra" "openra-dedicated-bleed" "openra-playtest")
install=openra-bleed-tibsunra2.install
source=("$pkgname-src::git+https://github.com/OpenRA/OpenRA.git#branch=bleed"
"git://github.com/OpenRA/ra2.git"
ra2-csproj.patch
makefile-mcs.patch
tibsun_ra2.patch)
sha1sums=('SKIP'
'SKIP'
'70a45c14874e4454bacb45b5d0c917d452cf4e84'
'ae7f0a7e0dd9617e8ea95f22d3fd8188067c6da2'
'e2ad63fa53f992a55f620c1c67d51e4b2593a921')
pkgver() {
cd "$srcdir/$pkgname-src"
printf "r%s.%s" "$(git rev-list --count HEAD)" "$(git rev-parse --short HEAD)"
}
prepare() {
cd "$srcdir/$pkgname-src"
patch -Np1 -i "$srcdir/makefile-mcs.patch"
}
build() {
# Move Red Alert 2 Github files to the right place:
cd "$srcdir/ra2"
mv ./OpenRA.Mods.RA2 "$srcdir/$pkgname-src/"
mkdir -p "$srcdir/$pkgname-src/mods/ra2/"
mv ./* "$srcdir/$pkgname-src/mods/ra2/"
# Patch OpenRA core files for Tiberian Sun & Red Alert 2
cd "$srcdir/$pkgname-src"
patch -Np1 -i "$srcdir/tibsun_ra2.patch"
patch -Np1 -i "$srcdir/ra2-csproj.patch"
mkdir $srcdir/$pkgname-src/mods/ra2/bits/{vehicles,themes}
cd "$srcdir/$pkgname-src"
make version
make dependencies
make all [DEBUG=true]
}
package() {
cd "$srcdir/$pkgname-src"
make prefix=/usr DESTDIR="$pkgdir" install-all
make prefix=/usr DESTDIR="$pkgdir" install-linux-shortcuts
echo -e "\n***OpenRA compilation script completed.\nPlease see further instructions below.***"
sleep 2
echo -e "Install OpenRA by typing 'sudo pacman -U openra-bleed-tibsunra2-r*.tar.xz' in this terminal window\n"
sleep 4
echo -e "***TIBERIAN SUN & RED ALERT 2 - HOWTO***\n\nTO PLAY TIBERIAN SUN: Launch the game and download the required asset files from the web when the game asks you to do so.\n\nTO PLAY RED ALERT 2: You must install language.mix, multi.mix, ra2.mix and theme.mix into '$HOME/.openra/Content/ra2/' folder. You find these files from original RA2 installation media (CD's):\n\n-theme.mix, multi.mix = RA2 CD Root folder\n-ra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file)\n\n***LAUNCHING OPENRA***\n\nTo launch OpenRA, simply type 'openra' (without quotations) in your terminal or use a desktop shortcut file.\n\n***UNINSTALLATION***\n\nIf you want to remove OpenRA, just type 'sudo apt-get purge --remove $PACKAGE_NAME'\n\nYou can find deb package of $PACKAGE_NAME at '$HOME' for further usage.\n\n***MULTIPLAYER***\n\nIt's recommended to use exactly same deb installation package for multiplayer usage to minimize possible version differences/conflicts between players. If your friends compiles this package with another operating system, please make sure they use exactly same source files for their OpenRA compilation process.\n\nHave fun!\n"
}

+ 12
- 0
arch_linux/makefile-mcs.patch View File

@ -0,0 +1,12 @@
--- a/Makefile
+++ b/Makefile
@@ -42,7 +42,7 @@
############################## TOOLCHAIN ###############################
#
-CSC = mcs -sdk:4.0
+CSC = mcs
CSFLAGS = -nologo -warn:4 -codepage:utf8 -unsafe -warnaserror
DEFINE = TRACE
COMMON_LIBS = System.dll System.Core.dll System.Data.dll System.Data.DataSetExtensions.dll System.Drawing.dll System.Xml.dll thirdparty/download/ICSharpCode.SharpZipLib.dll thirdparty/download/FuzzyLogicLibrary.dll thirdparty/download/Mono.Nat.dll thirdparty/download/MaxMind.Db.dll thirdparty/download/MaxMind.GeoIP2.dll thirdparty/download/Eluant.dll thirdparty/download/SmarIrc4net.dll

+ 11
- 0
arch_linux/openra-bleed-tibsunra2.install View File

@ -0,0 +1,11 @@
post_install() {
xdg-icon-resource forceupdate --theme hicolor &> /dev/null
}
post_upgrade() {
post_install
}
post_remove() {
post_install
}

+ 110
- 0
arch_linux/ra2-csproj.patch View File

@ -0,0 +1,110 @@
--- a/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj
+++ b/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj
@@ -1,33 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
- <ProjectGuid>{7E1263D2-BA04-48D0-85DB-26C68B782608}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>10.0.0</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{7E1263D2-BA04-48D0-85DB-26C68B782608}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>OpenRA.Mods.RA2</RootNamespace>
<AssemblyName>OpenRA.Mods.RA2</AssemblyName>
- <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
- <OutputPath>..</OutputPath>
</PropertyGroup>
- <PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>TRACE;DEBUG</DefineConstants>
<PlatformTarget>x86</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CustomCommands>
+ <CustomCommands>
+ <Command type="AfterBuild" command="cp ${TargetFile} ../mods/ra2" workingdir="${ProjectDir}" />
+ <Command type="AfterBuild" command="cp ${TargetFile}.mdb ../mods/ra2" workingdir="${ProjectDir}" />
+ </CustomCommands>
+ </CustomCommands>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DebugType>full</DebugType>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
- <DebugSymbols>True</DebugSymbols>
- <DebugType>Full</DebugType>
- <Optimize>False</Optimize>
- <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
- <DebugSymbols>False</DebugSymbols>
- <DebugType>None</DebugType>
- <Optimize>True</Optimize>
- <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x86</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <Optimize>true</Optimize>
+ <CustomCommands>
+ <CustomCommands>
+ <Command type="AfterBuild" command="cp ${TargetFile} ../mods/ra2" workingdir="${ProjectDir}" />
+ <Command type="AfterBuild" command="cp ${TargetFile}.mdb ../mods/ra2" workingdir="${ProjectDir}" />
+ </CustomCommands>
+ </CustomCommands>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="Eluant">
+ <HintPath>..\thirdparty\download\Eluant.dll</HintPath>
+ <Private>False</Private>
+ </Reference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <ItemGroup>
+ <ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
+ <Project>{0DFB103F-2962-400F-8C6D-E2C28CCBA633}</Project>
+ <Name>OpenRA.Game</Name>
+ <Private>False</Private>
+ </ProjectReference>
+ <ProjectReference Include="..\OpenRA.Mods.Common\OpenRA.Mods.Common.csproj">
+ <Project>{fe6c8cc0-2f07-442a-b29f-17617b3b7fc6}</Project>
+ <Name>OpenRA.Mods.Common</Name>
+ <Private>False</Private>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Stub.cs" />
+ </ItemGroup>
+ <ItemGroup>
<Reference Include="Microsoft.CSharp">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
@@ -52,8 +93,9 @@
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
</ItemGroup>
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <ItemGroup>
- <Compile Include="Stub.cs" />
- </ItemGroup>
-</Project>
+ <PropertyGroup>
+ <PostBuildEvent>mkdir "$(SolutionDir)mods/ra2/"
+copy "$(TargetPath)" "$(SolutionDir)mods/ra2/"
+cd "$(SolutionDir)"</PostBuildEvent>
+ </PropertyGroup>
+</Project>
\ No newline at end of file

+ 134
- 0
arch_linux/tibsun_ra2.patch View File

@ -0,0 +1,134 @@
--- a/Makefile
+++ b/Makefile
@@ -187,6 +187,15 @@
PROGRAMS += mod_ts
mod_ts: $(mod_ts_TARGET)
+# Red Alert 2
+mod_ra2_SRCS := $(shell find OpenRA.Mods.RA2/ -iname '*.cs')
+mod_ra2_TARGET = mods/ra2/OpenRA.Mods.RA2.dll
+mod_ra2_KIND = library
+mod_ra2_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET)
+mod_ra2_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET)
+PROGRAMS += mod_ra2
+mod_ra2: $(mod_ra2_TARGET)
+
check-scripts:
@echo
@echo "Checking for Lua syntax errors..."
@@ -222,6 +231,9 @@
@echo "Checking for code style violations in OpenRA.Mods.TS..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.TS
@echo
+ @echo "Checking for code style violations in OpenRA.Mods.RA2..."
+ @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.RA2
+ @echo
@echo "Checking for code style violations in OpenRA.Utility..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Utility
@echo
@@ -255,6 +267,9 @@
@echo "Testing Tiberian Sun mod MiniYAML..."
@mono --debug OpenRA.Utility.exe ts --check-yaml
@echo
+ @echo "Testing Red Alert 2 mod MiniYAML..."
+ @mono --debug OpenRA.Utility.exe ra2 --check-yaml
+ @echo
@echo "Testing Dune 2000 mod MiniYAML..."
@mono --debug OpenRA.Utility.exe d2k --check-yaml
@echo
@@ -320,7 +335,7 @@
package: all-dependencies core tools docs version
-mods: mod_common mod_ra mod_cnc mod_d2k mod_ts
+mods: mod_common mod_ra mod_cnc mod_d2k mod_ts mod_ra2
all: dependencies core tools
@@ -389,6 +404,10 @@
@$(CP_R) mods/d2k "$(DATA_INSTALL_DIR)/mods/"
@$(INSTALL_PROGRAM) $(mod_d2k_TARGET) "$(DATA_INSTALL_DIR)/mods/d2k"
@$(CP_R) mods/modchooser "$(DATA_INSTALL_DIR)/mods/"
+ @$(CP_R) mods/ts "$(DATA_INSTALL_DIR)/mods/"
+ @$(INSTALL_PROGRAM) $(mod_ts_TARGET) "$(DATA_INSTALL_DIR)/mods/ts"
+ @$(CP_R) mods/ra2 "$(DATA_INSTALL_DIR)/mods/"
+ @$(INSTALL_PROGRAM) $(mod_ra2_TARGET) "$(DATA_INSTALL_DIR)/mods/ra2"
@$(INSTALL_DATA) "global mix database.dat" "$(DATA_INSTALL_DIR)/global mix database.dat"
@$(INSTALL_DATA) "GeoLite2-Country.mmdb.gz" "$(DATA_INSTALL_DIR)/GeoLite2-Country.mmdb.gz"
--- a/make.ps1
+++ b/make.ps1
@@ -136,6 +136,8 @@
echo "Testing mods..."
echo "Testing Tiberian Sun mod MiniYAML..."
./OpenRA.Utility.exe ts --check-yaml
+ echo "Testing Red Alert 2 mod MiniYAML..."
+ ./OpenRA.Utility.exe ra2 --check-yaml
echo "Testing Dune 2000 mod MiniYAML..."
./OpenRA.Utility.exe d2k --check-yaml
echo "Testing Tiberian Dawn mod MiniYAML..."
@@ -170,6 +172,8 @@
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.D2k
echo "Checking for code style violations in OpenRA.Mods.TS..."
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.TS
+ echo "Checking for code style violations in OpenRA.Mods.RA2..."
+ ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.RA2
echo "Checking for code style violations in OpenRA.Utility..."
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Utility
echo "Checking for code style violations in OpenRA.Test..."
--- a/mods/all/mod.yaml
+++ b/mods/all/mod.yaml
@@ -20,6 +20,7 @@
d2k:OpenRA.Mods.D2k.dll
./mods/cnc/OpenRA.Mods.Cnc.dll
./mods/ts/OpenRA.Mods.TS.dll
+ ./mods/ts/OpenRA.Mods.RA2.dll
ChromeLayout:
--- a/mods/ra2/mod.yaml
+++ b/mods/ra2mod.yaml
@@ -5,7 +5,7 @@
Author: RA2 team
RequiresMods:
- modchooser: {DEV_VERSION}
+
Folders:
.
--- a/OpenRA.sln
+++ b/OpenRA.sln
@@ -17,6 +17,8 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.TS", "OpenRA.Mods.TS\OpenRA.Mods.TS.csproj", "{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.RA2", "OpenRA.Mods.RA2\OpenRA.Mods.RA2.csproj", "{7E1263D2-BA04-48D0-85DB-26C68B782608}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Platforms.Default", "OpenRA.Platforms.Default\OpenRA.Platforms.Default.csproj", "{33D03738-C154-4028-8EA8-63A3C488A651}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.Common", "OpenRA.Mods.Common\OpenRA.Mods.Common.csproj", "{FE6C8CC0-2F07-442A-B29F-17617B3B7FC6}"
@@ -139,6 +141,10 @@
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Debug|x86.Build.0 = Debug|x86
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.ActiveCfg = Release|x86
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.Build.0 = Release|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.ActiveCfg = Debug|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.Build.0 = Debug|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.ActiveCfg = Release|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.Build.0 = Release|x86
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.ActiveCfg = Debug|x86
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.Build.0 = Debug|x86
{33D03738-C154-4028-8EA8-63A3C488A651}.Release|x86.ActiveCfg = Release|x86
--- a/utility.cmd
+++ b/utility.cmd
@@ -16,6 +16,7 @@
if /I "%mod%" EQU "ra" (goto help)
if /I "%mod%" EQU "cnc" (goto help)
if /I "%mod%" EQU "ts" (goto help)
+if /I "%mod%" EQU "ra2" (goto help)
if /I "%mod%" EQU "d2k" (goto help)
echo.
echo Unknown mod: %mod%

+ 325
- 0
ubuntu/install.sh View File

@ -0,0 +1,325 @@
#!/bin/bash
# Allow interruption of the script at any time (Ctrl + C)
trap "exit" INT
#*********************************************************************************************************
## VARIABLES USED IN THE SCRIPT
#
# Package name & version
PACKAGE_NAME=openra-bleed-tibsunra2
PACKAGE_VERSION=1
PACKAGE=$PACKAGE_NAME-$PACKAGE_VERSION
# Find out used Linux distribution
RELEASE=$(lsb_release -d | sed 's/Description:\t//g')
# Check if the used OS is Ubuntu 14.04 LTS/14.10 or Linux Mint
RELEASE_VERSION=$(lsb_release -r | sed 's/[^0-9]*//g')
RELEASE_MINT=$(lsb_release -i 2>/dev/null |grep -c "Mint")
# Check for critical build dependencies (especially for Ubuntu 14.04 LTS/14.10 & Linux Mint)
PKG1_CHECK=$(dpkg-query -W -f='${Status}' libnuget-core-cil 2>/dev/null | grep -c "ok installed")
PKG2_CHECK=$(dpkg-query -W -f='${Status}' mono-devel 2>/dev/null | grep -c "ok installed")
PKG3_CHECK=$(dpkg-query -W -f='${Status}' nuget 2>/dev/null | grep -c "ok installed")
# Do we have any OpenRA packages on the system?
PKG4_CHECK=$(dpkg-query -W -f='${Status}' openra 2>/dev/null | grep -c "ok installed")
PKG5_CHECK=$(dpkg-query -W -f='${Status}' openra-playtest 2>/dev/null | grep -c "ok installed")
PKG6_CHECK=$(dpkg-query -W -f='${Status}' openra-bleed 2>/dev/null | grep -c "ok installed")
# Check for missing RA2 directories.
RA2_MISSINGDIR1="$HOME/openra-master/$PACKAGE/mods/ra2/bits/vehicles"
RA2_MISSINGDIR2="$HOME/openra-master/$PACKAGE/mods/ra2/bits/themes"
# Check if we already have sudo password in memory (timeout/timestamp check)
SUDO_CHECK=$(sudo -n uptime 2>&1|grep "load"|wc -l)
BASH_CHECK=$(ps | grep `echo $$` | awk '{ print $4 }')
bold_in='\e[1m'
line_in='\e[4m'
dim_in='\e[2m'
green_in='\e[32m'
red_in='\e[91m'
out='\e[0m'
#*********************************************************************************************************
## PRE-CHECK
#
# Check if we're using bash or sh to run the script. If bash, OK. If sh, ask user to run the script with bash.
if [ ! $BASH_CHECK = "bash" ]; then
echo "\nPlease run this script using bash (/usr/bin/bash).\n"
exit 1
fi
# Check if we are root or not. If yes, then terminate the script.
if [[ $UID = 0 ]]; then
echo -e "\nPlease run this script as a regular user. Do not use root or sudo. Some commands used in the script require regular user permissions.\n"
exit 1
fi
#If package dir exists already, delete it.
if [ -d "$HOME/openra-master/" ]; then
rm -rf "$HOME/openra-master"
fi
#If deb package exists already, delete it.
if [ -f $HOME/$PACKAGE_NAME*.deb ]; then
rm -f $HOME/$PACKAGE_NAME*.deb
fi
# Stop execution if we encounter an error
set -e
#*********************************************************************************************************
## PART 1/7
#
## Installation of OpenRA compilation dependencies and user notification message
echo -e "\n$bold_in***Welcome Comrade*** $out\n"
echo -e "This script compiles and installs OpenRA from source with Tiberian Sun & Red Alert 2.\n
- The script is NOT made by official developers of OpenRA and may contain bugs.
- The script works only on Ubuntu, Linux Mint and similar Linux distributions. It creates a deb installation package using OpenRA source code and additional Red Alert 2 mod files from Github.\n\nNOTE: As the development of OpenRA & Red Alert 2 continues, this script will likely become unusable some day. Please, feel free to modify it if necessary."
echo -e "$line_in\nThe script has been tested on:\n\nDistribution\t\tStatus$out\nUbuntu 16.04 LTS$green_in\tOK$out\nUbuntu 15.10$green_in\t\tOK$out\nUbuntu 15.04 LTS$green_in\tOK$out\nUbuntu 14.10$green_in\t\tOK$out\nUbuntu 14.04 LTS$green_in\tOK$out\nLinux Mint 17.3$green_in\t\tOK$out\nLinux Mint 17.2$green_in\t\tOK$out\nLinux Mint 17.1$green_in\t\tOK$out\nLinux Mint 16$red_in\t\tFailure$out$dim_in (can't find required packages)$out\n"
echo -e "You are using $RELEASE.\n"
read -r -p "Do you want to continue? [y/N] " response
if [[ $response =~ ^([yY][eE][sS]|[yY])$ ]]; then
sleep 1
echo -e "\nAllright, let's continue. Do you want $bold_in\n\n1.$out manually check which OpenRA build dependencies (packages) will be installed on your system? $dim_in(manual apt-get + deb packages installation)$bold_in\n2.$out automatically accept the installation of the OpenRA build dependencies during the script execution? $dim_in(apt-get with -y option + automatic .deb packages installation)$out\n"
read -r -p "Please type 1 or 2: " number
sleep 1
if [[ $number -eq 1 ]]; then
METHOD=''
echo -e "\nSelected installation method:$bold_in Manual$out"
else
METHOD=-y
echo -e "\nSelected installation method:$bold_in Automatic$out"
fi
if [ $SUDO_CHECK -eq 0 ]; then
if [ -z $METHOD ]; then
echo -e "\nOpenRA compilation requires that you install some packages first. Your permission for installation is asked (yes/no) everytime it's needed. This script asks for a required root password now, so you don't have to type it multiple times later on while the script is running.\n\nPlease type sudo/root password now.\n"
else
echo -e "\nOpenRA compilation requires that you install some packages first. This script asks for a required root password now, so you don't have to type it multiple times later on while the script is running.\n\nPlease type sudo/root password now.\n"
fi
sudo echo -e "\nRoot password OK."
sleep 1
else
true
fi
## Check if the user is running Ubuntu 14.04 LTS/14.10 or Linux Mint and whether required nuget packages are installed if these Linux versions are being used.
if [ $RELEASE_VERSION == 1404 ] || [ $RELEASE_VERSION == 1410 ] || [ $RELEASE_MINT -eq 1 ] ; then
echo -e "\nYou are running Ubuntu 14.04 LTS/14.10 or Linux Mint. We need to check if you have required NuGet packages installed.\nThese packages are not (longer available) from the official repository but they are provided by this package.\n"
read -r -p "Press ENTER to proceed." enter
if [ ${#enter} -eq 0 ]; then
echo -e "$line_in\nChecking NuGet packages$out"
fi
#-----------------------------------------------------------------------------------------------------------------------------------------------------------
## Check existence of 'nuget', 'libnuget-core-lib' & 'mono-devel' packages on Ubuntu 14.04 LTS/14.10/Linux Mint based system.
if [ $PKG2_CHECK -eq 1 ]; then
echo -e "$green_in\nOK$out - 'mono-devel' found."
else
echo -e "$red_in\nWARNING$out - 'mono-devel' not found."
fi
if [ $PKG1_CHECK -eq 1 ]; then
echo -e "$green_in\nOK$out - 'libnuget-core-cil' found."
else
echo -e "$red_in\nWARNING$out - 'libnuget-core-cil' not found."
fi
if [ $PKG3_CHECK -eq 1 ]; then
echo -e "$green_in\nOK$out - 'nuget' found."
else
echo -e "$red_in\nWARNING$out - 'nuget' not found."
fi
if [ ! $PKG2_CHECK -eq 1 ]; then
echo -e "$red_in\nWARNING$out - NuGet requires 'mono-devel' package which was not found.\n\nInstalling 'mono-devel' now."
sleep 5
echo -e "\nUpdating package lists with APT.\n"
sleep 2
sudo apt-get update && \
sudo apt-get $METHOD install mono-devel
fi
if [ ! $PKG1_CHECK -eq 1 ]; then
if [ $number = 1 ]; then
echo
read -r -p "Install 'libnuget-core-cil' now? [y/N] " response2
if [[ $response2 =~ ^([yY][eE][sS]|[yY])$ ]]; then
sudo dpkg -i ./nuget-14.04-14.10/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb
else
echo -e "\nOpenRA installation can't continue. Aborting.\n"
exit 1
fi
else
sudo dpkg -i ./nuget-14.04-14.10/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb
fi
fi
PKG1_RECHECK=$(dpkg-query -W -f='${Status}' libnuget-core-cil 2>/dev/null | grep -c "ok installed")
if [ ! $PKG3_CHECK -eq 1 ]; then
if [ $number = 1 ]; then
echo
read -r -p "Install 'nuget' now? [y/N] " response3
if [[ $response3 =~ ^([yY][eE][sS]|[yY])$ ]]; then
sudo dpkg -i ./nuget-14.04-14.10/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb
else
echo -e "\nOpenRA installation can't continue. Aborting.\n"
exit 1
fi
else
sudo dpkg -i ./nuget-14.04-14.10/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb
fi
fi
PKG3_RECHECK=$(dpkg-query -W -f='${Status}' nuget 2>/dev/null | grep -c "ok installed")
if [ $PKG1_RECHECK -eq 1 ] && [ $PKG3_RECHECK -eq 1 ]; then
echo -e "$green_in\nOK$out - All required NuGet packages are installed."
else
echo -e "$red_in\nWARNING$out - Can't find all required NuGet packages. Aborting.\n"
exit 1
fi
else
true
fi
sleep 2
#-----------------------------------------------------------------------------------------------------------------------------------------------------------
echo -e "$bold_in\n1/7 ***OpenRA build dependencies***\n$out"
sleep 2
echo -e "Updating package lists with APT.\n"
sleep 2
sudo apt-get update
echo -e "\nInstalling required OpenRA build dependencies.\n"
sleep 4
sudo apt-get $METHOD install git dpkg-dev dh-make sed mono-devel libfreetype6-dev libopenal-data libopenal1 libsdl2-2.0-0 nuget curl liblua5.1-0-dev zenity xdg-utils build-essential gcc make libfile-fcntllock-perl
mozroots --import --sync && \
sudo apt-key update
#*********************************************************************************************************
## PART 2/7
#
## Download the latest OpenRA & Red Alert 2 source files from Github, create build directories to the user's home directory.
## Once Red Alert 2 source files have been downloaded, move them to the OpenRA parent source directory.
## Add several missing directories for Red Alert 2.
echo -e "$bold_in\n2/7 ***Downloading OpenRA source code & Red Alert 2 mod files from Github***\n$out"
sleep 2
echo -e "Part 1 (OpenRA source code):\n"
mkdir -p $HOME/openra-master/{$PACKAGE,ra2} && \
git clone -b bleed https://github.com/OpenRA/OpenRA.git $HOME/openra-master/$PACKAGE
echo -e "\nPart 2 (Red Alert 2 mod files):\n"
git clone -b master https://github.com/OpenRA/ra2.git $HOME/openra-master/ra2 && \
mv $HOME/openra-master/ra2/OpenRA.Mods.RA2 $HOME/openra-master/$PACKAGE && \
mv $HOME/openra-master/ra2 $HOME/openra-master/$PACKAGE/mods/
if [ ! -d "$RA2_MISSINGDIR1" ]; then
mkdir "$RA2_MISSINGDIR1"
fi
if [ ! -d "$RA2_MISSINGDIR2" ]; then
mkdir "$RA2_MISSINGDIR2"
fi
cp ./patches/{tibsun_ra2.patch,makefile-mcs.patch,ra2-csproj.patch} $HOME/openra-master/
#*********************************************************************************************************
## PART 3/7
#
## Patch several OpenRA source files (Makefile and such) for Tiberian Sun & Red Alert 2
echo -e "$bold_in\n3/7 ***Preparing OpenRA source files for Tiberian Sun & Red Alert 2***\n$out"
sleep 2
patch -d $HOME/openra-master/$PACKAGE -Np1 -i $HOME/openra-master/makefile-mcs.patch
patch -d $HOME/openra-master/$PACKAGE -Np1 -i $HOME/openra-master/tibsun_ra2.patch
patch -d $HOME/openra-master/$PACKAGE -Np1 -i $HOME/openra-master/ra2-csproj.patch
#*********************************************************************************************************
## PART 4/7
#
## Compile the game
echo -e "$bold_in\n4/7 ***Starting OpenRA compilation with Tiberian Sun & Red Alert 2***\n$out"
sleep 2
cd $HOME/openra-master/$PACKAGE && \
make version && \
make dependencies && \
make all [DEBUG=false]
echo -e "$bold_in\n5/7 ***Preparing OpenRA deb package. This takes a while. Please wait.***\n$out"
dh_make --createorig -s -y && \
echo -e "\noverride_dh_auto_install:\n\tmake install-all install-linux-shortcuts prefix='$HOME/openra-master/$PACKAGE/debian/$PACKAGE_NAME/usr'\n\tsed -i '2s%.*%cd /usr/lib/openra%' '$HOME/openra-master/$PACKAGE/debian/$PACKAGE_NAME/usr/bin/openra'\noverride_dh_usrlocal:\noverride_dh_auto_test:" >> $HOME/openra-master/$PACKAGE/debian/rules && \
sed -i 's/Depends: ${shlibs:Depends}, ${misc:Depends}/Depends: libopenal1, mono-runtime (>= 2.10), libmono-system-core4.0-cil, libmono-system-drawing4.0-cil, libmono-system-data4.0-cil, libmono-system-numerics4.0-cil, libmono-system-runtime-serialization4.0-cil, libmono-system-xml-linq4.0-cil, libfreetype6, libc6, libasound2, libgl1-mesa-glx, libgl1-mesa-dri, xdg-utils, zenity, libsdl2 | libsdl2-2.0-0, liblua5.1-0/g' $HOME/openra-master/$PACKAGE/debian/control && \
sed -i 's/<insert up to 60 chars description>/A multiplayer re-envisioning of early RTS games by Westwood Studios\nConflicts: openra, openra-playtest, openra-bleed/g' $HOME/openra-master/$PACKAGE/debian/control && \
sed -i 's/ <insert long description, indented with spaces>/ ./g' $HOME/openra-master/$PACKAGE/debian/control && \
dpkg-buildpackage -rfakeroot -b -nc -uc -us
#*********************************************************************************************************
## PART 6/7
#
## Remove temporary OpenRA build files & directories
echo -e "$bold_in\n6/7 ***Compilation process completed. Moving compiled deb package into '$HOME'***\n$out"
sleep 2
mv $HOME/openra-master/$PACKAGE_NAME*.deb $HOME
echo -e "Removing temporary files."
rm -rf $HOME/openra-master
#*********************************************************************************************************
## PART 7/7
#
## Install OpenRA
echo -e "$bold_in\n7/7 ***Starting OpenRA installation process***\n$out"
sleep 2
if [ $PKG4_CHECK -eq 1 ] || [ $PKG5_CHECK -eq 1 ] || [ $PKG6_CHECK -eq 1 ] ; then
echo -e "\nCan't install '$PACKAGE_NAME' because of conflicting packages.\nPlease remove previously installed openra package from your system and try again.\nBuilt $PACKAGE_NAME deb package can be found in '$HOME'.\n"
else
if [ $number = 1 ]; then
read -r -p "Install '$PACKAGE_NAME' now? [y/N] " response4
if [[ $response4 =~ ^([yY][eE][sS]|[yY])$ ]]; then
sudo dpkg -i $HOME/$PACKAGE_NAME*.deb
else
echo -e "\nPlease install '$PACKAGE_NAME' manually. You find the compiled package at '$HOME'."
sleep 2
fi
else
sudo dpkg -i $HOME/$PACKAGE_NAME*.deb
fi
fi
#*********************************************************************************************************
## ADDITIONAL INFORMATION
#
## Messages
echo -e "\n***OpenRA installation script completed.\nPlease see further instructions below.***"
sleep 4
echo -e "$bold_in\n***TIBERIAN SUN & RED ALERT 2 - HOWTO***$out\n\nTO PLAY TIBERIAN SUN: Launch the game and download the required asset files from the web when the game asks you to do so.\n\nTO PLAY RED ALERT 2: You must install language.mix, multi.mix, ra2.mix and theme.mix into '$HOME/.openra/Content/ra2/' folder. You find these files from original RA2 installation media (CD's):\n\n-theme.mix, multi.mix = RA2 CD Root folder\n-ra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file)$bold_in\n\n***LAUNCHING OPENRA***$out\n\nTo launch OpenRA, simply type 'openra' (without quotations) in your terminal or use a desktop shortcut file.$bold_in\n\n***UNINSTALLATION***$out\n\nIf you want to remove OpenRA, just type 'sudo apt-get purge --remove $PACKAGE_NAME'\n\nYou can find deb package of $PACKAGE_NAME at '$HOME' for further usage.$bold_in\n\n***MULTIPLAYER***$out\n\nIt's recommended to use exactly same deb installation package for multiplayer usage to minimize possible version differences/conflicts between players. If your friends compiles this package with another operating system, please make sure they use exactly same source files for their OpenRA compilation process.\n\nHave fun!\n"
else
echo -e "\nAborted.\n"
fi

BIN
ubuntu/nuget-14.04-14.10/libnuget-core-cil_2.8.5+md59+dhx1-1~getdeb1_all.deb View File


BIN
ubuntu/nuget-14.04-14.10/nuget_2.8.5+md59+dhx1-1~getdeb1_all.deb View File


+ 12
- 0
ubuntu/patches/makefile-mcs.patch View File

@ -0,0 +1,12 @@
--- a/Makefile
+++ b/Makefile
@@ -42,7 +42,7 @@
############################## TOOLCHAIN ###############################
#
-CSC = mcs -sdk:4.0
+CSC = mcs
CSFLAGS = -nologo -warn:4 -codepage:utf8 -unsafe -warnaserror
DEFINE = TRACE
COMMON_LIBS = System.dll System.Core.dll System.Data.dll System.Data.DataSetExtensions.dll System.Drawing.dll System.Xml.dll thirdparty/download/ICSharpCode.SharpZipLib.dll thirdparty/download/FuzzyLogicLibrary.dll thirdparty/download/Mono.Nat.dll thirdparty/download/MaxMind.Db.dll thirdparty/download/MaxMind.GeoIP2.dll thirdparty/download/Eluant.dll thirdparty/download/SmarIrc4net.dll

+ 110
- 0
ubuntu/patches/ra2-csproj.patch View File

@ -0,0 +1,110 @@
--- a/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj
+++ b/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj
@@ -1,33 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
- <ProjectGuid>{7E1263D2-BA04-48D0-85DB-26C68B782608}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>10.0.0</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{7E1263D2-BA04-48D0-85DB-26C68B782608}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>OpenRA.Mods.RA2</RootNamespace>
<AssemblyName>OpenRA.Mods.RA2</AssemblyName>
- <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
- <OutputPath>..</OutputPath>
</PropertyGroup>
- <PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>TRACE;DEBUG</DefineConstants>
<PlatformTarget>x86</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CustomCommands>
+ <CustomCommands>
+ <Command type="AfterBuild" command="cp ${TargetFile} ../mods/ra2" workingdir="${ProjectDir}" />
+ <Command type="AfterBuild" command="cp ${TargetFile}.mdb ../mods/ra2" workingdir="${ProjectDir}" />
+ </CustomCommands>
+ </CustomCommands>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DebugType>full</DebugType>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
- <DebugSymbols>True</DebugSymbols>
- <DebugType>Full</DebugType>
- <Optimize>False</Optimize>
- <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
- <DebugSymbols>False</DebugSymbols>
- <DebugType>None</DebugType>
- <Optimize>True</Optimize>
- <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x86</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <Optimize>true</Optimize>
+ <CustomCommands>
+ <CustomCommands>
+ <Command type="AfterBuild" command="cp ${TargetFile} ../mods/ra2" workingdir="${ProjectDir}" />
+ <Command type="AfterBuild" command="cp ${TargetFile}.mdb ../mods/ra2" workingdir="${ProjectDir}" />
+ </CustomCommands>
+ </CustomCommands>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="Eluant">
+ <HintPath>..\thirdparty\download\Eluant.dll</HintPath>
+ <Private>False</Private>
+ </Reference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <ItemGroup>
+ <ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
+ <Project>{0DFB103F-2962-400F-8C6D-E2C28CCBA633}</Project>
+ <Name>OpenRA.Game</Name>
+ <Private>False</Private>
+ </ProjectReference>
+ <ProjectReference Include="..\OpenRA.Mods.Common\OpenRA.Mods.Common.csproj">
+ <Project>{fe6c8cc0-2f07-442a-b29f-17617b3b7fc6}</Project>
+ <Name>OpenRA.Mods.Common</Name>
+ <Private>False</Private>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Stub.cs" />
+ </ItemGroup>
+ <ItemGroup>
<Reference Include="Microsoft.CSharp">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
@@ -52,8 +93,9 @@
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
</ItemGroup>
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <ItemGroup>
- <Compile Include="Stub.cs" />
- </ItemGroup>
-</Project>
+ <PropertyGroup>
+ <PostBuildEvent>mkdir "$(SolutionDir)mods/ra2/"
+copy "$(TargetPath)" "$(SolutionDir)mods/ra2/"
+cd "$(SolutionDir)"</PostBuildEvent>
+ </PropertyGroup>
+</Project>
\ No newline at end of file

+ 134
- 0
ubuntu/patches/tibsun_ra2.patch View File

@ -0,0 +1,134 @@
--- a/Makefile
+++ b/Makefile
@@ -187,6 +187,15 @@
PROGRAMS += mod_ts
mod_ts: $(mod_ts_TARGET)
+# Red Alert 2
+mod_ra2_SRCS := $(shell find OpenRA.Mods.RA2/ -iname '*.cs')
+mod_ra2_TARGET = mods/ra2/OpenRA.Mods.RA2.dll
+mod_ra2_KIND = library
+mod_ra2_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET)
+mod_ra2_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET)
+PROGRAMS += mod_ra2
+mod_ra2: $(mod_ra2_TARGET)
+
check-scripts:
@echo
@echo "Checking for Lua syntax errors..."
@@ -222,6 +231,9 @@
@echo "Checking for code style violations in OpenRA.Mods.TS..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.TS
@echo
+ @echo "Checking for code style violations in OpenRA.Mods.RA2..."
+ @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.RA2
+ @echo
@echo "Checking for code style violations in OpenRA.Utility..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Utility
@echo
@@ -255,6 +267,9 @@
@echo "Testing Tiberian Sun mod MiniYAML..."
@mono --debug OpenRA.Utility.exe ts --check-yaml
@echo
+ @echo "Testing Red Alert 2 mod MiniYAML..."
+ @mono --debug OpenRA.Utility.exe ra2 --check-yaml
+ @echo
@echo "Testing Dune 2000 mod MiniYAML..."
@mono --debug OpenRA.Utility.exe d2k --check-yaml
@echo
@@ -320,7 +335,7 @@
package: all-dependencies core tools docs version
-mods: mod_common mod_ra mod_cnc mod_d2k mod_ts
+mods: mod_common mod_ra mod_cnc mod_d2k mod_ts mod_ra2
all: dependencies core tools
@@ -389,6 +404,10 @@
@$(CP_R) mods/d2k "$(DATA_INSTALL_DIR)/mods/"
@$(INSTALL_PROGRAM) $(mod_d2k_TARGET) "$(DATA_INSTALL_DIR)/mods/d2k"
@$(CP_R) mods/modchooser "$(DATA_INSTALL_DIR)/mods/"
+ @$(CP_R) mods/ts "$(DATA_INSTALL_DIR)/mods/"
+ @$(INSTALL_PROGRAM) $(mod_ts_TARGET) "$(DATA_INSTALL_DIR)/mods/ts"
+ @$(CP_R) mods/ra2 "$(DATA_INSTALL_DIR)/mods/"
+ @$(INSTALL_PROGRAM) $(mod_ra2_TARGET) "$(DATA_INSTALL_DIR)/mods/ra2"
@$(INSTALL_DATA) "global mix database.dat" "$(DATA_INSTALL_DIR)/global mix database.dat"
@$(INSTALL_DATA) "GeoLite2-Country.mmdb.gz" "$(DATA_INSTALL_DIR)/GeoLite2-Country.mmdb.gz"
--- a/make.ps1
+++ b/make.ps1
@@ -136,6 +136,8 @@
echo "Testing mods..."
echo "Testing Tiberian Sun mod MiniYAML..."
./OpenRA.Utility.exe ts --check-yaml
+ echo "Testing Red Alert 2 mod MiniYAML..."
+ ./OpenRA.Utility.exe ra2 --check-yaml
echo "Testing Dune 2000 mod MiniYAML..."
./OpenRA.Utility.exe d2k --check-yaml
echo "Testing Tiberian Dawn mod MiniYAML..."
@@ -170,6 +172,8 @@
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.D2k
echo "Checking for code style violations in OpenRA.Mods.TS..."
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.TS
+ echo "Checking for code style violations in OpenRA.Mods.RA2..."
+ ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.RA2
echo "Checking for code style violations in OpenRA.Utility..."
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Utility
echo "Checking for code style violations in OpenRA.Test..."
--- a/mods/all/mod.yaml
+++ b/mods/all/mod.yaml
@@ -20,6 +20,7 @@
d2k:OpenRA.Mods.D2k.dll
./mods/cnc/OpenRA.Mods.Cnc.dll
./mods/ts/OpenRA.Mods.TS.dll
+ ./mods/ts/OpenRA.Mods.RA2.dll
ChromeLayout:
--- a/mods/ra2/mod.yaml
+++ b/mods/ra2mod.yaml
@@ -5,7 +5,7 @@
Author: RA2 team
RequiresMods:
- modchooser: {DEV_VERSION}
+
Folders:
.
--- a/OpenRA.sln
+++ b/OpenRA.sln
@@ -17,6 +17,8 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.TS", "OpenRA.Mods.TS\OpenRA.Mods.TS.csproj", "{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.RA2", "OpenRA.Mods.RA2\OpenRA.Mods.RA2.csproj", "{7E1263D2-BA04-48D0-85DB-26C68B782608}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Platforms.Default", "OpenRA.Platforms.Default\OpenRA.Platforms.Default.csproj", "{33D03738-C154-4028-8EA8-63A3C488A651}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.Common", "OpenRA.Mods.Common\OpenRA.Mods.Common.csproj", "{FE6C8CC0-2F07-442A-B29F-17617B3B7FC6}"
@@ -139,6 +141,10 @@
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Debug|x86.Build.0 = Debug|x86
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.ActiveCfg = Release|x86
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.Build.0 = Release|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.ActiveCfg = Debug|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.Build.0 = Debug|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.ActiveCfg = Release|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.Build.0 = Release|x86
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.ActiveCfg = Debug|x86
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.Build.0 = Debug|x86
{33D03738-C154-4028-8EA8-63A3C488A651}.Release|x86.ActiveCfg = Release|x86
--- a/utility.cmd
+++ b/utility.cmd
@@ -16,6 +16,7 @@
if /I "%mod%" EQU "ra" (goto help)
if /I "%mod%" EQU "cnc" (goto help)
if /I "%mod%" EQU "ts" (goto help)
+if /I "%mod%" EQU "ra2" (goto help)
if /I "%mod%" EQU "d2k" (goto help)
echo.
echo Unknown mod: %mod%

+ 34
- 0
windows/BEFORE-INSTALLATION.txt View File

@ -0,0 +1,34 @@
DO THIS BEFORE RUNNING INSTALL.BAT
1) Download and install Microsoft .NET Framework 4.5.2. If you already have it, skip this step.
https://www.microsoft.com/en-us/download/confirmation.aspx?id=42643
All .NET 4.X Framework versions:
https://msdn.microsoft.com/en-us/library/5a4x27ek%28v=vs.110%29.aspx
------------------------------------------------
ABOUT INSTALL.BAT
- Automatically compiles OpenRA with Tiberian Sun & Red Alert 2 from the source for you
- This is the file you need to execute if you're looking for installation of OpenRA with Tiberian Sun & Red Alert 2
- Double click to execute it
------------------------------------------------
- Once the install.bat script has compiled the game, there should be many warnings but not a single error
message as output. I got 52 errors if I had only .NET Framework 4.5 installed.
- I got only 13 warnings after I installed Microsoft Windows SDK for Windows 7 and .NET Framework 4
(https://www.microsoft.com/en-us/download/details.aspx?id=8279)
- However, the number of those warning messages didn't affect my gameplay in any way. That's why I'm not sure
if you need to worry about them. I can't really recommend to install 1.7GB of unneeded stuff on your PC
without a very good and valid reason.
- If you feel it important or your game crashes etc., please consider installing that SDK stuff and
re-running the install.bat the game.
------------------------------------------------

+ 126
- 0
windows/data/install.ps1 View File

@ -0,0 +1,126 @@
#------------------------------------------------------
## Prepare the script for possible Ctrl+C termination
while ($true)
{
#------------------------------------------------------
## Initial script messages
"***Welcome Comrade***"
Start-Sleep -s 3
"`nThis script will generate OpenRA with Tiberian Sun & Red Alert 2 for Windows."
Start-Sleep -s 4
"`n- Make sure you have Microsoft .NET Framework 4.5 installed on your computer."
Start-Sleep -s 3
"`n- This script is NOT made by the OpenRA developers and may contain bugs."
Start-Sleep -s 3
"`n- If you worry about what the script is doing, you can always check its code (\data\install.ps1)"
Start-Sleep -s 4
"`n- Press Ctrl+C if you want terminate script execution."
Start-Sleep -s 4
"`n***Starting execution sequence now***"
Start-Sleep -s 3
#------------------------------------------------------
## Remove all old source files if they exist
"`nRemoving all old source files that may exist in the data directory."
Remove-Item .\data\OpenRA-bleed -Force -Recurse -ErrorAction SilentlyContinue
Remove-Item .\data\ra2-master -Force -Recurse -ErrorAction SilentlyContinue
Remove-Item .\data\OpenRA-bleed.zip -Force -ErrorAction SilentlyContinue
Remove-Item .\data\ra2-master.zip -Force -ErrorAction SilentlyContinue
#------------------------------------------------------
## Prepare Github environment for downloading the source
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$client = New-Object System.Net.WebClient
$client.Headers.Add("Authorization","token 1234567890notarealtoken987654321")
$client.Headers.Add("Accept","application/vnd.github.v3.raw")
#------------------------------------------------------
## Download OpenRA-bleed source code
"`nDownloading OpenRA source files from Github. Please Stand By."
$client.DownloadFile("https://github.com/OpenRA/OpenRA/archive/bleed.zip?ref=bleed",".\data\OpenRA-bleed.zip”)
#------------------------------------------------------
## Download Red Alert 2 mod files
"`nDownloading Red Alert 2 mod files from Github. Please Stand By."
$client.DownloadFile("https://github.com/OpenRA/ra2/archive/master.zip?ref=master",".\data\ra2-master.zip”)
#------------------------------------------------------
## Unzip OpenRA-bleed source files
"`nUnzipping OpenRA source files into data folder."
$shell_app=new-object -com shell.application
$filename = "OpenRA-bleed.zip"
$zip_file = $shell_app.namespace((Get-Location).Path + "\data" + "\$filename")
$destination = $shell_app.namespace((Get-Location).Path + "\data")
$destination.Copyhere($zip_file.items())
#------------------------------------------------------
## Unzip Red Alert 2 mod files
"`nUnzipping Red Alert 2 mod files into data folder."
$shell_app=new-object -com shell.application
$filename2 = "ra2-master.zip"
$zip_file2 = $shell_app.namespace((Get-Location).Path + "\data" + "\$filename2")
$destination = $shell_app.namespace((Get-Location).Path + "\data")
$destination.Copyhere($zip_file2.items())
#------------------------------------------------------
## Merge OpenRA source files and Red Alert 2 mod files together
"`nMerging OpenRA source & Red Alert 2 mod files."
move-item ".\data\ra2-master\OpenRA.Mods.RA2" ".\data\OpenRA-bleed\OpenRA.Mods.RA2"
move-item ".\data\ra2-master" ".\data\OpenRA-bleed\mods\ra2"
#------------------------------------------------------
## Prepare OpenRA source code for Tiberian Sun & Red Alert 2
Start-Sleep -s 3
"`nPatching OpenRA source code for Tiberian Sun & Red Alert 2."
cd .\data
.\patch.exe -d OpenRA-bleed -Np1 -i ..\openra-srcpatch.patch
cd ..
#------------------------------------------------------
## Compile OpenRA with Tiberian Sun & Red Alert 2
"`nCompiling OpenRA with Tiberian Sun & Red Alert 2.`n"
cd .\data\OpenRA-bleed\
.\make.cmd dependencies
.\make.cmd all
cd ..
cd ..
move-item ".\data\OpenRA-bleed\" ".\OpenRA-bleed-tibsunra2"
#------------------------------------------------------
## Post-installation messages
"`nCompilation process completed. You find the game inside 'OpenRA-bleed-tibsunra2' folder"
Start-Sleep -s 4
"`nTO PLAY OPENRA: Click OpenRA.exe (maybe you should create a desktop shortcut for it?)"
"`nTO PLAY TIBERIAN SUN: Launch the game and download the required asset files from the web when the game asks you to do so."
"`nTO PLAY RED ALERT 2: you must install language.mix, multi.mix, ra2.mix and theme.mix into \My Documents\OpenRA\Content\ra2\ folder.`nYou find these files from original RA2 installation media (CD's):`n`ntheme.mix, multi.mix = RA2 CD Root folder`nra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file)"
"`nMULTIPLAYER: It's recommended to use exactly same compiled EXE files (and other stuff) for multiplayer usage to minimize possible version differences/conflicts between players. If your friends compiles this package with another operating system, please make sure they use exactly same source files for their OpenRA compilation process."
"`nUNINSTALLATION: Since the game has been compiled from source and no additional setup programs are provided, all you need to do is to delete the contents of 'OpenRA-bleed-tibsunra2' folder and \My Documents\OpenRA\"
"`nHave fun!"
exit
#------------------------------------------------------
## Termination code for the script (Ctrl + C)
if ($Host.UI.RawUI.KeyAvailable -and (3 -eq [int]$Host.UI.RawUI.ReadKey("AllowCtrlC,IncludeKeyUp,NoEcho").Character))
{
write-host "Installation script terminated by user."
$key = $Host.UI.RawUI.ReadKey("NoEcho, IncludeKeyDown")
if ($key.Character -eq "N") { break; }
}
}

+ 257
- 0
windows/data/openra-srcpatch.patch View File

@ -0,0 +1,257 @@
--- a/Makefile
+++ b/Makefile
@@ -42,7 +42,7 @@
############################## TOOLCHAIN ###############################
#
-CSC = mcs -sdk:4.0
+CSC = mcs
CSFLAGS = -nologo -warn:4 -codepage:utf8 -unsafe -warnaserror
DEFINE = TRACE
COMMON_LIBS = System.dll System.Core.dll System.Data.dll System.Data.DataSetExtensions.dll System.Drawing.dll System.Xml.dll thirdparty/download/ICSharpCode.SharpZipLib.dll thirdparty/download/FuzzyLogicLibrary.dll thirdparty/download/Mono.Nat.dll thirdparty/download/MaxMind.Db.dll thirdparty/download/MaxMind.GeoIP2.dll thirdparty/download/Eluant.dll thirdparty/download/SmarIrc4net.dll
--- a/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj
+++ b/OpenRA.Mods.RA2/OpenRA.Mods.RA2.csproj
@@ -1,33 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build">
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
- <ProjectGuid>{7E1263D2-BA04-48D0-85DB-26C68B782608}</ProjectGuid>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
+ <ProductVersion>10.0.0</ProductVersion>
+ <SchemaVersion>2.0</SchemaVersion>
+ <ProjectGuid>{7E1263D2-BA04-48D0-85DB-26C68B782608}</ProjectGuid>
<OutputType>Library</OutputType>
<RootNamespace>OpenRA.Mods.RA2</RootNamespace>
<AssemblyName>OpenRA.Mods.RA2</AssemblyName>
- <TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
- <OutputPath>..</OutputPath>
</PropertyGroup>
- <PropertyGroup Condition=" '$(Platform)' == 'AnyCPU' ">
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Debug\</OutputPath>
+ <DefineConstants>TRACE;DEBUG</DefineConstants>
<PlatformTarget>x86</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CustomCommands>
+ <CustomCommands>
+ <Command type="AfterBuild" command="cp ${TargetFile} ../mods/ra2" workingdir="${ProjectDir}" />
+ <Command type="AfterBuild" command="cp ${TargetFile}.mdb ../mods/ra2" workingdir="${ProjectDir}" />
+ </CustomCommands>
+ </CustomCommands>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <DebugType>full</DebugType>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
</PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
- <DebugSymbols>True</DebugSymbols>
- <DebugType>Full</DebugType>
- <Optimize>False</Optimize>
- <CheckForOverflowUnderflow>True</CheckForOverflowUnderflow>
- <DefineConstants>DEBUG;TRACE</DefineConstants>
- </PropertyGroup>
- <PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
- <DebugSymbols>False</DebugSymbols>
- <DebugType>None</DebugType>
- <Optimize>True</Optimize>
- <CheckForOverflowUnderflow>False</CheckForOverflowUnderflow>
+ <PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|x86'">
+ <DebugSymbols>true</DebugSymbols>
+ <OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
+ <AllowUnsafeBlocks>true</AllowUnsafeBlocks>
+ <DebugType>pdbonly</DebugType>
+ <PlatformTarget>x86</PlatformTarget>
+ <ErrorReport>prompt</ErrorReport>
+ <CodeAnalysisRuleSet>AllRules.ruleset</CodeAnalysisRuleSet>
+ <Optimize>true</Optimize>
+ <CustomCommands>
+ <CustomCommands>
+ <Command type="AfterBuild" command="cp ${TargetFile} ../mods/ra2" workingdir="${ProjectDir}" />
+ <Command type="AfterBuild" command="cp ${TargetFile}.mdb ../mods/ra2" workingdir="${ProjectDir}" />
+ </CustomCommands>
+ </CustomCommands>
</PropertyGroup>
<ItemGroup>
+ <Reference Include="System" />
+ <Reference Include="System.Core" />
+ <Reference Include="System.Drawing" />
+ <Reference Include="Eluant">
+ <HintPath>..\thirdparty\download\Eluant.dll</HintPath>
+ <Private>False</Private>
+ </Reference>
+ </ItemGroup>
+ <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
+ <ItemGroup>
+ <ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
+ <Project>{0DFB103F-2962-400F-8C6D-E2C28CCBA633}</Project>
+ <Name>OpenRA.Game</Name>
+ <Private>False</Private>
+ </ProjectReference>
+ <ProjectReference Include="..\OpenRA.Mods.Common\OpenRA.Mods.Common.csproj">
+ <Project>{fe6c8cc0-2f07-442a-b29f-17617b3b7fc6}</Project>
+ <Name>OpenRA.Mods.Common</Name>
+ <Private>False</Private>
+ </ProjectReference>
+ </ItemGroup>
+ <ItemGroup>
+ <Compile Include="Stub.cs" />
+ </ItemGroup>
+ <ItemGroup>
<Reference Include="Microsoft.CSharp">
<RequiredTargetFramework>4.0</RequiredTargetFramework>
</Reference>
@@ -52,8 +93,9 @@
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
</ItemGroup>
- <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
- <ItemGroup>
- <Compile Include="Stub.cs" />
- </ItemGroup>
-</Project>
+ <PropertyGroup>
+ <PostBuildEvent>mkdir "$(SolutionDir)mods/ra2/"
+copy "$(TargetPath)" "$(SolutionDir)mods/ra2/"
+cd "$(SolutionDir)"</PostBuildEvent>
+ </PropertyGroup>
+</Project>
\ No newline at end of file
--- a/Makefile
+++ b/Makefile
@@ -187,6 +187,15 @@
PROGRAMS += mod_ts
mod_ts: $(mod_ts_TARGET)
+# Red Alert 2
+mod_ra2_SRCS := $(shell find OpenRA.Mods.RA2/ -iname '*.cs')
+mod_ra2_TARGET = mods/ra2/OpenRA.Mods.RA2.dll
+mod_ra2_KIND = library
+mod_ra2_DEPS = $(STD_MOD_DEPS) $(mod_common_TARGET)
+mod_ra2_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_common_TARGET)
+PROGRAMS += mod_ra2
+mod_ra2: $(mod_ra2_TARGET)
+
check-scripts:
@echo
@echo "Checking for Lua syntax errors..."
@@ -222,6 +231,9 @@
@echo "Checking for code style violations in OpenRA.Mods.TS..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.TS
@echo
+ @echo "Checking for code style violations in OpenRA.Mods.RA2..."
+ @mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Mods.RA2
+ @echo
@echo "Checking for code style violations in OpenRA.Utility..."
@mono --debug OpenRA.Utility.exe ra --check-code-style OpenRA.Utility
@echo
@@ -255,6 +267,9 @@
@echo "Testing Tiberian Sun mod MiniYAML..."
@mono --debug OpenRA.Utility.exe ts --check-yaml
@echo
+ @echo "Testing Red Alert 2 mod MiniYAML..."
+ @mono --debug OpenRA.Utility.exe ra2 --check-yaml
+ @echo
@echo "Testing Dune 2000 mod MiniYAML..."
@mono --debug OpenRA.Utility.exe d2k --check-yaml
@echo
@@ -320,7 +335,7 @@
package: all-dependencies core tools docs version
-mods: mod_common mod_ra mod_cnc mod_d2k mod_ts
+mods: mod_common mod_ra mod_cnc mod_d2k mod_ts mod_ra2
all: dependencies core tools
@@ -389,6 +404,10 @@
@$(CP_R) mods/d2k "$(DATA_INSTALL_DIR)/mods/"
@$(INSTALL_PROGRAM) $(mod_d2k_TARGET) "$(DATA_INSTALL_DIR)/mods/d2k"
@$(CP_R) mods/modchooser "$(DATA_INSTALL_DIR)/mods/"
+ @$(CP_R) mods/ts "$(DATA_INSTALL_DIR)/mods/"
+ @$(INSTALL_PROGRAM) $(mod_ts_TARGET) "$(DATA_INSTALL_DIR)/mods/ts"
+ @$(CP_R) mods/ra2 "$(DATA_INSTALL_DIR)/mods/"
+ @$(INSTALL_PROGRAM) $(mod_ra2_TARGET) "$(DATA_INSTALL_DIR)/mods/ra2"
@$(INSTALL_DATA) "global mix database.dat" "$(DATA_INSTALL_DIR)/global mix database.dat"
@$(INSTALL_DATA) "GeoLite2-Country.mmdb.gz" "$(DATA_INSTALL_DIR)/GeoLite2-Country.mmdb.gz"
--- a/make.ps1
+++ b/make.ps1
@@ -136,6 +136,8 @@
echo "Testing mods..."
echo "Testing Tiberian Sun mod MiniYAML..."
./OpenRA.Utility.exe ts --check-yaml
+ echo "Testing Red Alert 2 mod MiniYAML..."
+ ./OpenRA.Utility.exe ra2 --check-yaml
echo "Testing Dune 2000 mod MiniYAML..."
./OpenRA.Utility.exe d2k --check-yaml
echo "Testing Tiberian Dawn mod MiniYAML..."
@@ -170,6 +172,8 @@
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.D2k
echo "Checking for code style violations in OpenRA.Mods.TS..."
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.TS
+ echo "Checking for code style violations in OpenRA.Mods.RA2..."
+ ./OpenRA.Utility.exe cnc --check-code-style OpenRA.Mods.RA2
echo "Checking for code style violations in OpenRA.Utility..."
./OpenRA.Utility.exe cnc --check-code-style OpenRA.Utility
echo "Checking for code style violations in OpenRA.Test..."
--- a/mods/all/mod.yaml
+++ b/mods/all/mod.yaml
@@ -20,6 +20,7 @@
d2k:OpenRA.Mods.D2k.dll
./mods/cnc/OpenRA.Mods.Cnc.dll
./mods/ts/OpenRA.Mods.TS.dll
+ ./mods/ts/OpenRA.Mods.RA2.dll
ChromeLayout:
--- a/mods/ra2/mod.yaml
+++ b/mods/ra2mod.yaml
@@ -5,7 +5,7 @@
Author: RA2 team
RequiresMods:
- modchooser: {DEV_VERSION}
+
Folders:
.
--- a/OpenRA.sln
+++ b/OpenRA.sln
@@ -17,6 +17,8 @@
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.TS", "OpenRA.Mods.TS\OpenRA.Mods.TS.csproj", "{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}"
EndProject
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.RA2", "OpenRA.Mods.RA2\OpenRA.Mods.RA2.csproj", "{7E1263D2-BA04-48D0-85DB-26C68B782608}"
+EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Platforms.Default", "OpenRA.Platforms.Default\OpenRA.Platforms.Default.csproj", "{33D03738-C154-4028-8EA8-63A3C488A651}"
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.Common", "OpenRA.Mods.Common\OpenRA.Mods.Common.csproj", "{FE6C8CC0-2F07-442A-B29F-17617B3B7FC6}"
@@ -139,6 +141,10 @@
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Debug|x86.Build.0 = Debug|x86
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.ActiveCfg = Release|x86
{5457CBF5-4CE4-421E-A8BF-9FD6C9732E1D}.Release|x86.Build.0 = Release|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.ActiveCfg = Debug|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Debug|x86.Build.0 = Debug|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.ActiveCfg = Release|x86
+ {7E1263D2-BA04-48D0-85DB-26C68B782608}.Release|x86.Build.0 = Release|x86
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.ActiveCfg = Debug|x86
{33D03738-C154-4028-8EA8-63A3C488A651}.Debug|x86.Build.0 = Debug|x86
{33D03738-C154-4028-8EA8-63A3C488A651}.Release|x86.ActiveCfg = Release|x86
--- a/utility.cmd
+++ b/utility.cmd
@@ -16,6 +16,7 @@
if /I "%mod%" EQU "ra" (goto help)
if /I "%mod%" EQU "cnc" (goto help)
if /I "%mod%" EQU "ts" (goto help)
+if /I "%mod%" EQU "ra2" (goto help)
if /I "%mod%" EQU "d2k" (goto help)
echo.
echo Unknown mod: %mod%

BIN
windows/data/patch.exe View File


+ 1
- 0
windows/install.bat View File

@ -0,0 +1 @@
start cmd.exe /k @powershell -NoProfile -ExecutionPolicy Unrestricted -File .\data\install.ps1 %*

+ 96
- 0
windows/windows-manual-installation.txt View File

@ -0,0 +1,96 @@
**************************************************************************
OpenRA + Tiberian Sun & Red Alert 2 installation instructions for Windows
**************************************************************************
------------------------------------------------
1) Extract contents of OpenRA-windows.zip
------------------------------------------------
2) Download OpenRA source code & Red Alert 2 mod files from Github:
https://github.com/OpenRA/OpenRA/archive/bleed.zip
https://github.com/OpenRA/ra2/archive/master.zip
------------------------------------------------
3) Extract both Github zip archives to a separate location. (E.G. create 'OpenRA-bleed' and 'ra2-master' parent folders)
------------------------------------------------
4) Go to 'ra2-master' folder. Cut OpenRA.Mods.RA2 directory and put it into OpenRA-bleed parent folder.
------------------------------------------------
5) Cut ra2-master folder into OpenRA-bleed\mods\ and rename it simply "ra2" (ra2-master ->> ra2)
------------------------------------------------
7) Download and install Microsoft .NET Framework 4.5.2. If you already have it, skip this step.
https://www.microsoft.com/en-us/download/confirmation.aspx?id=42643
All .NET 4.X Framework versions:
https://msdn.microsoft.com/en-us/library/5a4x27ek%28v=vs.110%29.aspx
------------------------------------------------
8) You must patch OpenRA source files in order to run Tiberian Sun and Red Alert 2. Open patch.exe in Command Prompt.
In Command Prompt, navigate to the folder where you have patch.exe
(For example C:\Users\Fincer\Desktop\OpenRA-windows\)
Patch is a linux-based program we need to patch critical OpenRA source files.
------------------------------------------------
9) In Command Prompt, navigate to the folder where you have patch.exe.
(For example C:\Users\Fincer\Desktop\OpenRA-windows\)
------------------------------------------------
10) Run
patch.exe -d OpenRA-bleed -Np1 -i ..\patches\openra-srcpatch.patch
where
OpenRA-bleed = OpenRA-bleed parent folder
..\patches\openra-srcpatch.patch = openra-srcpatch.patch file location
------------------------------------------------
11) Once the files have been patched, navigate to OpenRA-bleed folder in Command Prompt
cd OpenRA-bleed
------------------------------------------------
12) In Command Prompt, run
make.cmd
------------------------------------------------
13) Type 'dependencies' at the prompt (without quotations). Select "Run once (R)"
------------------------------------------------
14) run make.cmd again. Now, instead of typing 'dependencies', type 'all' (without quotations, once again).
------------------------------------------------
15) Once the script has run, there should be many warnings but not a single error message.
I got 52 errors if I had only .NET Framework 4.5 installed.
After I installed Microsoft Windows SDK for Windows 7 and .NET Framework 4 (https://www.microsoft.com/en-us/download/details.aspx?id=8279)
I got only 13 warnings.
However, the number of those warning messages didn't affect my gameplay in any way.
That's why I'm not sure if you need to worry about those messages.
And I can't really recommend to install 1.7GB of unneeded stuff on your PC
without a very good and valid reason.
If you feel it important or your game crashes etc., please consider installing that SDK stuff and re-building the game.
------------------------------------------------
16) OpenRA exe files have been compiled now. You can run the game by double-clicking OpenRA.exe in your Openra-Bleed parent folder.
------------------------------------------------
17) To play Red Alert 2, insert theme.mix, language.mix, ra2.mix and multi.mix into \My Documents\OpenRA\Contents\ra2\ folder.
You can find these mix files inside of a Red Alert 2 original installation media (CD).
theme.mix, multi.mix = RA2 CD root folder
ra2.mix, language.mix = RA2 CD Root/INSTALL/Game1.CAB (inside that archive file)

Loading…
Cancel
Save