put d2k mod stuff into it's own branch

This commit is contained in:
Matthias Mailänder
2012-05-20 15:50:39 +02:00
parent 5a37c84a8b
commit 5426a5fd3c
62 changed files with 1768 additions and 1850 deletions

View File

@@ -5,10 +5,10 @@ COMMON_LIBS = System.dll System.Core.dll System.Drawing.dll System.Xml.dll third
PHONY = core tools package all mods clean distclean
.SUFFIXES:
core: game renderers mod_ra mod_cnc utility
core: game renderers mod_ra mod_cnc mod_d2k utility
tools: editor ralint tsbuild
package: core editor
mods: mod_ra mod_cnc
mods: mod_ra mod_cnc mod_d2k
all: core tools
clean:
@-rm -f *.exe *.dll *.mdb mods/**/*.dll mods/**/*.mdb *.resources
@@ -97,6 +97,16 @@ mod_cnc_EXTRA_CMDS = mono --debug RALint.exe cnc
PROGRAMS += mod_cnc
mod_cnc: $(mod_cnc_TARGET)
# Dune 2000
mod_d2k_SRCS := $(shell find OpenRA.Mods.D2k/ -iname '*.cs')
mod_d2k_TARGET = mods/d2k/OpenRA.Mods.D2k.dll
mod_d2k_KIND = library
mod_d2k_DEPS = $(STD_MOD_DEPS) $(mod_ra_TARGET)
mod_d2k_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_ra_TARGET)
mod_d2k_EXTRA_CMDS = mono --debug RALint.exe d2k
PROGRAMS += mod_d2k
mod_d2k: $(mod_d2k_TARGET)
#
# Tools
#

View File

@@ -0,0 +1,138 @@
#region Copyright & License Information
/*
* Copyright 2007-2010 The OpenRA Developers (see AUTHORS)
* 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. For more information,
* see LICENSE.
*/
#endregion
using System.Collections;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System;
namespace OpenRA.FileFormats
{
public class R8Image
{
public int Width;
public int Height;
public byte FrameWidth;
public byte FrameHeight;
public int ImageHandle;
public int PaletteHandle;
public byte[] Image;
public int OffsetX;
public int OffsetY;
public R8Image(BinaryReader reader, int Frame)
{
var offset = reader.BaseStream.Position;
var ID = reader.ReadByte(); // 0 = no data, 1 = picture with palette, 2 = picture with current palette
while (ID == 0)
ID = reader.ReadByte();
Width = reader.ReadInt32(); //Width of picture
Height = reader.ReadInt32(); //Height of picture
OffsetX = reader.ReadInt32(); //Offset on X axis from left border edge of virtual frame
OffsetY = reader.ReadInt32(); //Offset on Y axis from top border edge of virtual frame
ImageHandle = reader.ReadInt32(); // 0 = no picture
PaletteHandle = reader.ReadInt32(); // 0 = no palette
var Bpp = reader.ReadByte(); // Bits per Pixel
FrameHeight = reader.ReadByte(); // Height of virtual frame
FrameWidth = reader.ReadByte(); // Width of virtual frame
var Align = reader.ReadByte(); //Alignment on even border
Console.WriteLine("Offset: {0}",offset);
Console.WriteLine("ID: {0}",ID);
Console.WriteLine("Width: {0}",Width);
Console.WriteLine("Height: {0}",Height);
Console.WriteLine("OffsetX: {0}",OffsetX);
Console.WriteLine("OffsetY: {0}",OffsetY);
Console.WriteLine("ImageHandle: {0}",ImageHandle);
Console.WriteLine("PaletteHandle: {0}",PaletteHandle);
Console.WriteLine("Bpp: {0}",Bpp);
Console.WriteLine("FrameWidth: {0}",FrameWidth);
Console.WriteLine("FrameHeight: {0}",FrameHeight);
Console.WriteLine("Align: {0}",Align);
// Load image
if (Bpp == 8)
Image = new byte[Width*Height];
else
throw new InvalidDataException("Error: {0} bits per pixel are not supported.".F(Bpp));
if (ID == 1 && PaletteHandle != 0)
{
// read and ignore custom palette
reader.ReadInt32(); //Memory
reader.ReadInt32(); //Handle
for (int i = 0; i < Width*Height; i++)
Image[i] = reader.ReadByte();
for (int i = 0; i < 256; i++)
reader.ReadUInt16();
}
else if (ID == 2 && PaletteHandle != 0)
{
// ignore image with custom palette
for (int i = 0; i < Width*Height; i++)
reader.ReadByte();
}
else //standard palette or 16 Bpp
{
for (int i = 0; i < Width*Height; i++)
Image[i] = reader.ReadByte();
}
}
}
public class R8Reader : IEnumerable<R8Image>
{
private readonly List<R8Image> headers = new List<R8Image>();
public readonly int Frames;
public R8Reader( Stream stream )
{
BinaryReader reader = new BinaryReader( stream );
Frames = 0;
while (reader.BaseStream.Position < stream.Length)
{
try
{
Console.WriteLine("Frame {0}: {1}",Frames, reader.BaseStream.Position);
headers.Add( new R8Image( reader, Frames ) );
Frames++;
}
catch (Exception e)
{
Console.WriteLine(e.Message);
break;
}
}
}
public R8Image this[ int index ]
{
get { return headers[ index ]; }
}
public IEnumerator<R8Image> GetEnumerator()
{
return headers.GetEnumerator();
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
}
}

View File

@@ -81,6 +81,7 @@
<Compile Include="Graphics\IGraphicsDevice.cs" />
<Compile Include="Graphics\IInputHandler.cs" />
<Compile Include="Graphics\PngLoader.cs" />
<Compile Include="Graphics\R8Reader.cs" />
<Compile Include="Graphics\ShpReader.cs" />
<Compile Include="Graphics\ShpWriter.cs" />
<Compile Include="Graphics\Vertex.cs" />

View File

@@ -0,0 +1,81 @@
#region Copyright & License Information
/*
* Copyright 2012 The OpenRA Developers (see AUTHORS)
* 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. For more information,
* see COPYING.
*/
#endregion
using System.Collections.Generic;
using System.Drawing;
using OpenRA.FileFormats;
using OpenRA.Graphics;
using OpenRA.Network;
using OpenRA.Support;
using OpenRA.Widgets;
namespace OpenRA.Mods.D2k
{
public class D2kLoadScreen : ILoadScreen
{
Dictionary<string, string> Info;
static string[] Comments = new[] {"Filling Crates...", "Breeding Sandworms..."};
Stopwatch lastLoadScreen = new Stopwatch();
Rectangle StripeRect;
Sprite Stripe, Logo;
float2 LogoPos;
Renderer r;
public void Init(Dictionary<string, string> info)
{
Info = info;
// Avoid standard loading mechanisms so we
// can display loadscreen as early as possible
r = Game.Renderer;
if (r == null) return;
var s = new Sheet("mods/d2k/uibits/loadscreen.png");
Logo = new Sprite(s, new Rectangle(0,0,256,256), TextureChannel.Alpha);
Stripe = new Sprite(s, new Rectangle(256,0,256,256), TextureChannel.Alpha);
StripeRect = new Rectangle(0, Renderer.Resolution.Height/2 - 128, Renderer.Resolution.Width, 256);
LogoPos = new float2(Renderer.Resolution.Width/2 - 128, Renderer.Resolution.Height/2 - 128);
}
public void Display()
{
if (r == null)
return;
// Update text at most every 0.5 seconds
if (lastLoadScreen.ElapsedTime() < 0.5)
return;
lastLoadScreen.Reset();
var text = Comments.Random(Game.CosmeticRandom);
var textSize = r.Fonts["Bold"].Measure(text);
r.BeginFrame(float2.Zero, 1f);
WidgetUtils.FillRectWithSprite(StripeRect, Stripe);
r.RgbaSpriteRenderer.DrawSprite(Logo, LogoPos);
r.Fonts["Bold"].DrawText(text, new float2(Renderer.Resolution.Width - textSize.X - 20, Renderer.Resolution.Height - textSize.Y - 20), Color.White);
r.EndFrame( new NullInputHandler() );
}
public void StartGame()
{
TestAndContinue();
Game.JoinExternalGame();
}
void TestAndContinue()
{
Ui.ResetAll();
Game.LoadShellMap();
Ui.ResetAll();
Ui.OpenWindow("MAINMENU_BG");
}
}
}

View File

@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="3.5" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>9.0.21022</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{C0B0465C-6BE2-409C-8770-3A9BF64C4344}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>OpenRA.Mods.D2k</RootNamespace>
<AssemblyName>OpenRA.Mods.D2k</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<OutputPath>bin\Debug</OutputPath>
<CustomCommands>
<CustomCommands>
<Command type="AfterBuild" command="cp ${TargetFile} ../mods/d2k" workingdir="${ProjectDir}" />
<Command type="AfterBuild" command="mono RALint.exe d2k" workingdir="${ProjectDir}/../" />
</CustomCommands>
</CustomCommands>
<DefineConstants>DEBUG;</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>none</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release</OutputPath>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
<ConsolePause>false</ConsolePause>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Xml.Linq">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data.DataSetExtensions">
<RequiredTargetFramework>3.5</RequiredTargetFramework>
</Reference>
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
<Reference Include="System.Drawing" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="D2kLoadScreen.cs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">
<Project>{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}</Project>
<Name>OpenRA.FileFormats</Name>
<Private>False</Private>
</ProjectReference>
<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.RA\OpenRA.Mods.RA.csproj">
<Project>{4A8A43B5-A9EF-4ED0-99DD-4BAB10A0DB6E}</Project>
<Name>OpenRA.Mods.RA</Name>
<Private>False</Private>
</ProjectReference>
<ProjectReference Include="..\OpenRA.Mods.Cnc\OpenRA.Mods.Cnc.csproj">
<Project>{2881135D-4D62-493E-8F83-5EEE92CCC6BE}</Project>
<Name>OpenRA.Mods.Cnc</Name>
<Private>False</Private>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
<ItemGroup>
<Folder Include="Properties\" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,39 @@
#region Copyright & License Information
/*
* Copyright 2012 The OpenRA Developers (see AUTHORS)
* 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. For more information,
* see COPYING.
*/
#endregion
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Information about this assembly is defined by the following attributes.
// Change them to the values specific to your project.
[assembly: AssemblyTitle("OpenRA.Mods.D2k")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("OpenRA.Mods.D2k")]
[assembly: AssemblyCopyright("Copyright © 2012")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// The assembly version has the format "{Major}.{Minor}.{Build}.{Revision}".
// The form "{Major}.{Minor}.*" will automatically update the build and revision,
// and "{Major}.{Minor}.{Build}.*" will update just the revision.
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
// The following attributes are used to specify the signing key for the assembly,
// if desired. See the Mono documentation for more information about signing.
//[assembly: AssemblyDelaySign(false)]
//[assembly: AssemblyKeyFile("")]

View File

@@ -1,6 +1,6 @@
#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2012 The OpenRA Developers (see AUTHORS)
* 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. For more information,
@@ -104,6 +104,116 @@ namespace OpenRA.Utility
}
}
public static void ConvertR8ToPng(string[] args)
{
var srcImage = new R8Reader(File.OpenRead(args[1]));
var shouldRemap = args.Contains("--transparent");
var palette = Palette.Load(args[2], shouldRemap);
var startFrame = int.Parse(args[3]);
var endFrame = int.Parse(args[4]) + 1;
var filename = args[5];
var FrameCount = endFrame - startFrame;
var frame = srcImage[startFrame];
var bitmap = new Bitmap(frame.FrameWidth * FrameCount, frame.FrameHeight, PixelFormat.Format8bppIndexed);
bitmap.Palette = palette.AsSystemPalette();
int OffsetX = 0;
int OffsetY = 0;
int x = 0;
if (args.Contains("--vehicle")) //complex resorting to RA/CnC compatible frame order
{
endFrame = endFrame - (FrameCount / 2);
startFrame--;
for (int f = endFrame; f > startFrame; f--)
{
frame = srcImage[f];
OffsetX = frame.FrameWidth/2 - frame.OffsetX;
OffsetY = frame.FrameHeight/2 - frame.OffsetY;
Console.WriteLine("calculated OffsetX: {0}", OffsetX);
Console.WriteLine("calculated OffsetY: {0}", OffsetY);
var data = bitmap.LockBits(new Rectangle(x+OffsetX, 0+OffsetY, frame.Width, frame.Height), ImageLockMode.WriteOnly,
PixelFormat.Format8bppIndexed);
for (var i = 0; i < frame.Height; i++)
Marshal.Copy(frame.Image, i * frame.Width,
new IntPtr(data.Scan0.ToInt64() + i * data.Stride), frame.Width);
bitmap.UnlockBits(data);
x += frame.FrameWidth;
}
endFrame = endFrame + (FrameCount / 2) - 1;
startFrame = startFrame + (FrameCount / 2) + 1;
for (int f = endFrame; f > startFrame; f--)
{
frame = srcImage[f];
OffsetX = frame.FrameWidth/2 - frame.OffsetX;
OffsetY = frame.FrameHeight/2 - frame.OffsetY;
Console.WriteLine("calculated OffsetX: {0}", OffsetX);
Console.WriteLine("calculated OffsetY: {0}", OffsetY);
var data = bitmap.LockBits(new Rectangle(x+OffsetX, 0+OffsetY, frame.Width, frame.Height), ImageLockMode.WriteOnly,
PixelFormat.Format8bppIndexed);
for (var i = 0; i < frame.Height; i++)
Marshal.Copy(frame.Image, i * frame.Width,
new IntPtr(data.Scan0.ToInt64() + i * data.Stride), frame.Width);
bitmap.UnlockBits(data);
x += frame.FrameWidth;
}
}
else
{
for (int f = startFrame; f < endFrame; f++)
{
frame = srcImage[f];
if (args.Contains("--infrantry"))
{
OffsetX = frame.FrameWidth/2 - frame.Width/2;
OffsetY = frame.FrameHeight/2 - frame.Height/2;
}
else if (args.Contains("--projectile"))
{
OffsetX = frame.FrameWidth/2 - frame.OffsetX;
OffsetY = frame.FrameHeight/2 - frame.OffsetY;
}
else if (args.Contains("--building"))
{
if (frame.OffsetX < 0) { frame.OffsetX = 0 - frame.OffsetX; }
if (frame.OffsetY < 0) { frame.OffsetY = 0 - frame.OffsetY; }
OffsetX = 0 + frame.OffsetX;
OffsetY = frame.FrameHeight - frame.OffsetY;
}
Console.WriteLine("calculated OffsetX: {0}", OffsetX);
Console.WriteLine("calculated OffsetY: {0}", OffsetY);
var data = bitmap.LockBits(new Rectangle(x+OffsetX, 0+OffsetY, frame.Width, frame.Height), ImageLockMode.WriteOnly,
PixelFormat.Format8bppIndexed);
for (var i = 0; i < frame.Height; i++)
Marshal.Copy(frame.Image, i * frame.Width,
new IntPtr(data.Scan0.ToInt64() + i * data.Stride), frame.Width);
bitmap.UnlockBits(data);
x += frame.FrameWidth;
}
}
bitmap.Save(filename+".png");
Console.WriteLine(filename+".png saved");
}
public static void ConvertTmpToPng(string[] args)
{
var mods = args[1].Split(',');

View File

@@ -1,6 +1,6 @@
#region Copyright & License Information
/*
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
* Copyright 2007-2012 The OpenRA Developers (see AUTHORS)
* 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. For more information,
@@ -27,6 +27,7 @@ namespace OpenRA.Utility
{ "--extract", Command.ExtractFiles },
{ "--tmp-png", Command.ConvertTmpToPng },
{ "--remap", Command.RemapShp },
{ "--r8", Command.ConvertR8ToPng },
};
if (args.Length == 0) { PrintUsage(); return; }
@@ -53,12 +54,14 @@ namespace OpenRA.Utility
{
Console.WriteLine("Usage: OpenRA.Utility.exe [OPTION] [ARGS]");
Console.WriteLine();
Console.WriteLine(" --settings-value KEY Get value of KEY from settings.yaml");
Console.WriteLine(" --shp PNGFILE FRAMEWIDTH Convert a PNG containing one or more frames to a SHP");
Console.WriteLine(" --png SHPFILE PALETTE [--transparent] Convert a SHP to a PNG containing all of its frames, optionally setting up transparency");
Console.WriteLine(" --extract MOD[,MOD]* FILES Extract files from mod packages");
Console.WriteLine(" --tmp-png MOD[,MOD]* THEATER FILES Extract terrain tiles to PNG");
Console.WriteLine(" --remap SRCMOD:PAL DESTMOD:PAL SRCSHP DESTSHP Remap SHPs to another palette");
Console.WriteLine(" --settings-value KEY Get value of KEY from settings.yaml");
Console.WriteLine(" --shp PNGFILE FRAMEWIDTH Convert a single PNG with multiple frames appended after another to a SHP");
Console.WriteLine(" --png SHPFILE PALETTE [--transparent] Convert a SHP to a PNG containing all of its frames, optionally setting up transparency");
Console.WriteLine(" --extract MOD[,MOD]* FILES Extract files from mod packages");
Console.WriteLine(" --tmp-png MOD[,MOD]* THEATER FILES Extract terrain tiles to PNG");
Console.WriteLine(" --remap SRCMOD:PAL DESTMOD:PAL SRCSHP DESTSHP Remap SHPs to another palette");
Console.WriteLine(" --r8 R8FILE PALETTE STARTFRAME ENDFRAME FILENAME [--transparent] ");
Console.WriteLine(" [--infrantry] [--vehicle] [--projectile] [--building] Convert Dune 2000 DATA.R8 to PNGs choosing start- and endframe as well as unit type for correct offset to append multiple frames to one PNG named by filename optionally setting up transparency");
}
static string GetNamedArg(string[] args, string arg)

99
doc/d2k formatspecs.txt Normal file
View File

@@ -0,0 +1,99 @@
Dune 2000 File Formats Specs. Specially for Programmers, who want make editor(s) for Dune 2000
Date: June 8, 2004
Author: Roman "Siberian GRemlin" Lotchenov
E-Mail #1: slos@scn.ru
E-Mail #2: SibGRem@rambler.ru
*****************************************************************************
Graphics Resources - .R8 and .R16
ImageHeader: Record
ID: Byte; //0 - no data, 1 - picture with pallete,
//2 - picture with current pallete.
Width: LongInt; //Width of picture
Height: LongInt; //Height of picture
X_Offset: LongInt; //Pictures offset on an axis X (from left border(edge) of virtual frame)
Y_Offset: LongInt; //Pictures offset on an axis Y (from top border(edge) of virtual frame)
ImageHandle: LongInt; //Handle to picture (in memory), 0 - image not have picture
PaletteHandle: LongInt; //Handle to pallete (in memory), 0 - image not have pallete,
//and using pallete from palette.bin filr. format - 256*RGB
Bpp: Byte; //Bpp of picture
FrameHeight: Byte; //Height of virtual frame, in which is displayed the picture
FrameWidth: Byte; //Width of virtual frame, in which is displayed the picture
Align: Byte; //Alignment on even border
End;
There is a matrix(array) of pixels by the size further:
For ImageHeader.Bpp = 8: ImageHeader.Width*ImageHeader.Height
For ImageHeader.Bpp = 16: ImageHeader.Width*ImageHeader.Height*2,
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>.
If PaletteOffset <> 0 and ImageHeader.ID = 1, then there is Pallete Header and Pallete
PalHeader: Record
Memory: LongInt; //The memory under a palette was allocated (There is no importance in a file)
PalHandle:LongInt; //Handle to colors array (in memory), if 0 - then game showe error message
End;
Palette: array[0..511] of byte; //Pallete: 256 records of colors
//Color record: 2 bytes - 5 bit red component, 6 bit green component,
//5 bit blue component
Warning: In files UI_ENG.R16 and UI_ENG.R8, cuted ImageHeader.ID
Warning: Files UIBB.R8 and UIBB.R16 is only picture(pixels array) without any headers. Width=640, Height=400
*****************************************************************************
Sound Resources - [Dune2000 Folder]\Data\GameSFX\SOUND.RS
HeaderSize: LongInt; //Size of RSoundHeader
RSoundBody: array[0..56] of record
FileName: Char[0..12]; //File name
Zero: Byte; //Always $00
FileOffset: DWord; //Offfset of WAVE
FileSize: DWord; //Size of Wave file
end;
*****************************************************************************
Text Resources - [Dune2000 Folder]\Data\UI_Data\TEXT.UIB
STUIBHeader: record
Strs: DWord; //Count of strings
end;
STUIBBody: array[0..STUIHeader.Strs] of record
NameCount: Word; //Count of symbols(chars) in string name
StrName: array[0..STUIBBody.NameCount] of char; //String name
StrCount: word; //Count of symbols(chars) in string
Str: array[0..STUIBBody.StrCount] of char; //String
end;
*****************************************************************************
Fonts Resources - .FNT and .FPL
FontHeader of record
FontLoadedFlag: byte; //Must be $00
SpaceSize: byte; //Size of space (in pixels)
FirstSymbol: byte; //Code of first symbol in font
Interval: byte; //Size of interval between symbols (in pixels)
MaxHeight: byte; //Maximum height of symbol
Reserve: array[0..2] of byte; //not used
SymbolsHandle array[0..255] of LongInt; //Handle table to symbols in memory (There is no importance in a file)
end;
Symbols: array[0..255] of record
Width: LongInt; //Width of symbol
Heigth: LongInt; //Heigth of symvol
Pixels: array[1..(Symbols.Width*Symbols.Heigth)] of byte;
end;
Warning: FONTCOL.FNT using pallete from FONTCOL.FPL, Format - 256*RGBF, F=Junk!
Warning: [Dune2000 Folder]\Data\BIN\Font.BIN - is sybmol code(index) table(map)
*****************************************************************************
Thanks to:
Michail Beschetnov for begins in R8 file format description
Magic Team for help with R8 file format and for Dune 2000 Image Converter
be-lam0r for help with FNT, R16 and R8
-=*************=-
Please sorry for my english...

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

174
mods/d2k/chrome.yaml Normal file
View File

@@ -0,0 +1,174 @@
chrome-atreides: chrome-atreides.png
specialbin-top: 0,0,30,51
specialbin-middle: 0,51,30,51
specialbin-bottom: 0,153,30,39
moneybin: 192,0,320,32
tooltip-bg: 0,288,272,136
radar-atreides: chrome-atreides.png
left: 297,31,9,192
right: 498,31,9,192
bottom: 297,223,210,30
bg: 306,31,192,192
power-atreides: chrome-atreides.png
power-indicator: 187,4,4,7
palette-atreides: chrome-atreides.png
top: 297,288,201,9
dock-top: 498,274,14,23
bottom: 297,489,201,9
dock-bottom: 498,489,14,23
bg-0: 297,297,201,48
dock-0: 498,297,14,48
bg-1: 297,345,201,48
dock-1: 498,345,14,48
bg-2: 297,393,201,48
dock-2: 498,393,14,48
bg-3: 297,441,201,48
dock-3: 498,441,14,48
digits-atreides: chrome-atreides.png
0: 32,0,13,17
1: 45,0,13,17
2: 58,0,13,17
3: 71,0,13,17
4: 84,0,13,17
5: 97,0,13,17
6: 110,0,13,17
7: 123,0,13,17
8: 136,0,13,17
9: 149,0,13,17
chrome-harkonnen: chrome-harkonnen.png
specialbin-top: 0,0,30,51
specialbin-middle: 0,51,30,51
specialbin-bottom: 0,153,30,39
moneybin: 192,0,320,32
tooltip-bg: 0,288,272,136
radar-harkonnen: chrome-harkonnen.png
left: 297,31,9,192
right: 498,31,9,192
bottom: 297,223,210,30
bg: 306,31,192,192
power-indicator: 187,4,4,7
power-harkonnen: chrome-harkonnen.png
power-indicator: 187,4,4,7
palette-harkonnen: chrome-harkonnen.png
top: 297,288,201,9
dock-top: 498,274,14,23
bottom: 297,489,201,9
dock-bottom: 498,489,14,23
bg-0: 297,297,201,48
dock-0: 498,297,14,48
bg-1: 297,345,201,48
dock-1: 498,345,14,48
bg-2: 297,393,201,48
dock-2: 498,393,14,48
bg-3: 297,441,201,48
dock-3: 498,441,14,48
digits-harkonnen: chrome-harkonnen.png
0: 32,0,13,17
1: 45,0,13,17
2: 58,0,13,17
3: 71,0,13,17
4: 84,0,13,17
5: 97,0,13,17
6: 110,0,13,17
7: 123,0,13,17
8: 136,0,13,17
9: 149,0,13,17
chrome-ordos: chrome-ordos.png
specialbin-top: 0,0,30,51
specialbin-middle: 0,51,30,51
specialbin-bottom: 0,153,30,39
moneybin: 192,0,320,32
tooltip-bg: 0,288,272,136
radar-ordos: chrome-ordos.png
left: 297,31,9,192
right: 498,31,9,192
bottom: 297,223,210,30
bg: 306,31,192,192
power-ordos: chrome-ordos.png
power-indicator: 187,4,4,7
palette-ordos: chrome-ordos.png
top: 297,288,201,9
dock-top: 498,274,14,23
bottom: 297,489,201,9
dock-bottom: 498,489,14,23
bg-0: 297,297,201,48
dock-0: 498,297,14,48
bg-1: 297,345,201,48
dock-1: 498,345,14,48
bg-2: 297,393,201,48
dock-2: 498,393,14,48
bg-3: 297,441,201,48
dock-3: 498,441,14,48
digits-ordos: chrome-ordos.png
0: 32,0,13,17
1: 45,0,13,17
2: 58,0,13,17
3: 71,0,13,17
4: 84,0,13,17
5: 97,0,13,17
6: 110,0,13,17
7: 123,0,13,17
8: 136,0,13,17
9: 149,0,13,17
tabs-selected: tabs.png
atreides-Building: 0,0,27,41
atreides-Defense: 0,40,27,41
atreides-Infantry: 0,80,27,41
atreides-Vehicle: 0,120,27,41
atreides-Plane: 0,160,27,41
atreides-Ship: 0,200,27,41
harkonnen-Building: 80,0,27,41
harkonnen-Defense: 80,40,27,41
harkonnen-Infantry: 80,80,27,41
harkonnen-Vehicle: 80,120,27,41
harkonnen-Plane: 80,160,27,41
harkonnen-Ship: 80,200,27,41
tabs-ready: tabs.png
atreides-Building: 27,0,27,41
atreides-Defense: 27,40,27,41
atreides-Infantry: 27,80,27,41
atreides-Vehicle: 27,120,27,41
atreides-Plane: 27,160,27,41
atreides-Ship: 27,200,27,41
harkonnen-Building: 107,0,27,41
harkonnen-Defense: 107,40,27,41
harkonnen-Infantry: 107,80,27,41
harkonnen-Vehicle: 107,120,27,41
harkonnen-Plane: 107,160,27,41
harkonnen-Ship: 107,200,27,41
tabs-normal: tabs.png
atreides-Building: 54,0,27,41
atreides-Defense: 54,40,27,41
atreides-Infantry: 54,80,27,41
atreides-Vehicle: 54,120,27,41
atreides-Plane: 54,160,27,41
atreides-Ship: 54,200,27,41
harkonnen-Building: 134,0,27,41
harkonnen-Defense: 134,40,27,41
harkonnen-Infantry: 134,80,27,41
harkonnen-Vehicle: 134,120,27,41
harkonnen-Plane: 134,160,27,41
harkonnen-Ship: 134,200,27,41
flags: buttons.png
atreides: 60,84,30,15
harkonnen: 60,84,30,15
orodos: 60,84,30,15

View File

@@ -1,455 +0,0 @@
Background@SERVER_LOBBY:
Delegate:LobbyDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:800
Height:600
Visible:false
Children:
Label@LOBBY_TITLE:
X:0
Y:20
Align:Center
Width:800
Height:20
Bold:True
Text:OpenRA Multiplayer Lobby
Background@LOBBY_MAP_BG:
X:PARENT_RIGHT-268
Y:39
Width:252
Height:252
Background:dialog3
Children:
MapPreview@LOBBY_MAP_PREVIEW:
X:4
Y:4
Width:244
Height:244
Container@PLAYERS:
X:20
Y:75
Width:500
Height:200
Children:
Container@TEMPLATE_LOCAL:
X:0
Y:0
Width:500
Height:30
Visible:false
Children:
TextField@NAME:
Text:Name
Width:139
Height:25
X:0
Y:0
MaxLength:16
Button@COLOR:
Width:65
Height:25
X:159
Y:0
Children:
ColorBlock@COLORBLOCK:
X:5
Y:7
Width:PARENT_RIGHT-10
Height:PARENT_BOTTOM-12
Button@FACTION:
Width:110
Height:25
X:244
Y:0
Children:
Image@FACTIONFLAG:
Width:30
Height:15
X:5
Y:5
Label@FACTIONNAME:
Text:Faction
Width:60
Height:25
X:40
Y:0
Button@TEAM:
Text:Team
Width:25
Height:25
X:374
Y:0
Checkbox@STATUS:
X:455
Y:2
Width:20
Height:20
Container@TEMPLATE_REMOTE:
X:0
Y:0
Width:500
Height:30
Visible:false
Children:
Label@NAME:
Text:Name
Width:139
Height:25
X:0
Y:0
ColorBlock@COLOR:
X:164
Y:7
Width:55
Height:13
Label@FACTION:
Width:110
Height:25
X:244
Y:0
Children:
Image@FACTIONFLAG:
Width:30
Height:15
X:5
Y:5
Label@FACTIONNAME:
Text:Faction
Width:60
Height:25
X:40
Y:0
Label@TEAM:
Text:Team
Width:70
Height:25
X:351
Y:0
Align:Center
Bold: false
Checkbox@STATUS:
X:455
Y:2
Width:20
Height:20
Container@TEMPLATE_EMPTY:
X:0
Y:0
Width:500
Height:30
Visible:false
Children:
Label@NAME:
Text:Name
Width:139
Height:25
X:0
Y:0
Button@JOIN:
Text:Play in this slot
Width:PARENT_RIGHT - 160
Height:25
X:160
Y:0
Container@TEMPLATE_EMPTY_HOST:
X:0
Y:0
Width:500
Height:30
Visible:false
Children:
Button@NAME: -- TODO: replace with dropdown
Text:Name
Width:155
Height:25
X:0
Y:0
Button@JOIN:
Text:Play in this slot
Width:PARENT_RIGHT - 160
Height:25
X:160
Y:0
Container@LABEL_CONTAINER:
X:30
Y:45
Children:
Label@LABEL_LOBBY_NAME:
Width:139
Height:25
X:0
Y:0
Text:Name
Align:Center
Bold:True
Label@LABEL_LOBBY_COLOR:
Width:65
Height:25
X:159
Y:0
Text:Color
Align:Center
Bold:True
Label@LABEL_LOBBY_FACTION:
Width:110
Height:25
X:244
Y:0
Text:Faction
Align:Center
Bold:True
Label@LABEL_LOBBY_TEAM:
Width:70
Height:25
X:351
Y:0
Text:Team
Align:Center
Bold:True
Label@LABEL_LOBBY_STATUS:
X:432
Y:0
Width:70
Height:25
Text:Ready
Align:Center
Bold:True
Button@CHANGEMAP_BUTTON:
Visible:true
X:PARENT_RIGHT-160
Y:PARENT_BOTTOM-269
Width:120
Height:25
Text:Change Map
Bold:True
ChatDisplay@CHAT_DISPLAY:
Visible:true
X:20
Notification:
Height:230
Y:PARENT_BOTTOM - 289
Width:PARENT_RIGHT - 200
Label@LABEL_CHATTYPE:
Width:65
Height:25
X:0
Y:PARENT_BOTTOM - 50
Text:Chat:
Align:Right
TextField@CHAT_TEXTFIELD:
Visible:true
X:70
Y:PARENT_BOTTOM - 49
Width:550
Height:25
Button@START_GAME_BUTTON:
Visible:true
X:PARENT_RIGHT-160
Y:PARENT_BOTTOM-49
Width:120
Height:25
Text:Start Game
Bold:True
Button@DISCONNECT_BUTTON:
Visible:true
X:PARENT_RIGHT-160
Y:PARENT_BOTTOM-189
Width:120
Height:25
Text:Disconnect
Bold:True
Checkbox@LOCKTEAMS_CHECKBOX:
Visible: true
X: PARENT_RIGHT-160
Y: PARENT_BOTTOM-229
Width: 80
Height: 20
Text: Lock Teams
Background@COLOR_CHOOSER:
Width:500
Height:195
X:(WINDOW_RIGHT - WIDTH)/2 - PARENT_LEFT
Y:100
Visible:false
Children:
Button@BUTTON_OK:
X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45
Width:160
Height:25
Text:Ok
Bold:True
ShpImage@MCV:
X:PARENT_RIGHT - 90
Y:20
Image:mcv
Frame:20
Palette:colorpicker
# ShpImage@FACT:
# X:PARENT_RIGHT - 100
# Y:70
# Image:fact
# Palette:colorpicker
Label@HUE_LABEL:
X:0
Y:30
Width:110
Height:20
Align: Right
Text: Hue:
Slider@HUE:
X:120
Y:30
Width:260
Height:20
Ticks:5
Label@SAT_LABEL:
X:0
Y:60
Width:110
Height:20
Align: Right
Text: Saturation:
Slider@SAT:
X:120
Y:60
Width:260
Height:20
Ticks:5
Label@LUM_LABEL:
X:0
Y:90
Width:110
Height:20
Align: Right
Text: Brightness:
Slider@LUM:
X:120
Y:90
Width:260
Height:20
Ticks:5
Label@RANGE_LABEL:
X:0
Y:120
Width:110
Height:20
Align: Right
Text: Range:
Slider@RANGE:
X:120
Y:120
Width:260
Height:20
Ticks:5
Background@MAP_CHOOSER:
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Delegate:MapChooserDelegate
Width:800
Height:600
Visible:false
Children:
Label@MAPCHOOSER_TITLE:
X:0
Y:20
Align:Center
Width:800
Height:20
Text:Choose Map
Bold:True
ScrollPanel@MAP_LIST:
X:20
Y:50
Width:500
Height:480
Children:
Label@MAP_TEMPLATE:
Width:PARENT_RIGHT-28
Height:25
X:2
Y:0
Visible:false
Background@MAPCHOOSER_MAP_BG:
X:PARENT_RIGHT-268
Y:50
Width:252
Height:252
Background:dialog3
Children:
MapPreview@MAPCHOOSER_MAP_PREVIEW:
X:4
Y:4
Width:244
Height:244
Label@CURMAP_TITLE_LABEL:
X:PARENT_RIGHT - 200 - WIDTH
Y:311
Align:Right
Width:70
Height:20
Text:Title:
Bold:True
Label@CURMAP_TITLE:
X:PARENT_RIGHT - 195
Y:311
Align:Left
Width:70
Height:20
Label@CURMAP_SIZE_LABEL:
X:PARENT_RIGHT - 200 - WIDTH
Y:331
Align:Right
Width:70
Height:20
Text:Size:
Bold:True
Label@CURMAP_SIZE:
X:PARENT_RIGHT - 195
Y:331
Align:Left
Width:70
Height:20
Label@CURMAP_THEATER_LABEL:
X:PARENT_RIGHT - 200 - WIDTH
Y:351
Align:Right
Width:70
Height:20
Text:Theater:
Bold:True
Label@CURMAP_THEATER:
X:PARENT_RIGHT - 195
Y:351
Align:Left
Width:70
Height:20
Label@CURMAP_PLAYERS_LABEL:
X:PARENT_RIGHT - 200 - WIDTH
Y:371
Align:Right
Width:70
Height:20
Text:Players:
Bold:True
Label@CURMAP_PLAYERS:
X:PARENT_RIGHT - 195
Y:371
Align:Left
Width:70
Height:20
Button@BUTTON_OK:
X:PARENT_RIGHT - 360
Y:PARENT_BOTTOM - 45
Width:160
Height:25
Text:Ok
Bold:True
Button@BUTTON_CANCEL:
X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45
Width:160
Height:25
Text:Cancel
Bold:True

View File

@@ -1,247 +0,0 @@
Container@INGAME_ROOT:
Delegate:IngameChromeDelegate
Visible:false
Children:
WorldInteractionController:
X:0
Y:0
Width:WINDOW_RIGHT
Height:WINDOW_BOTTOM
ViewportScrollController:
X:0
Y:0
Width:WINDOW_RIGHT
Height:WINDOW_BOTTOM
Timer@GAME_TIMER:
X: WINDOW_RIGHT/2
Y: 10
Background@POSTGAME_BG:
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:400
Height:100
Background:dialog4
Visible:false
Children:
Label@TEXT:
X:(PARENT_RIGHT - WIDTH)/2
Y:(PARENT_BOTTOM - HEIGHT)/2
Width:200
Height:40
Align:Center
Bold:True
SupportPowerBin@INGAME_POWERS_BIN:
X:0
Y:25
BuildPalette@INGAME_BUILD_PALETTE:
X:WINDOW_RIGHT - 250
Y:280
Width:250
Height:500
Button@INGAME_OPTIONS_BUTTON:
X:0
Y:0
Width:160
Height:25
Text:Options
Bold:True
Button@INGAME_DIPLOMACY_BUTTON:
X:162
Y:0
Width:160
Height:25
Text:Diplomacy
Bold:True
WorldTooltip@INGAME_WORLD_TOOLTIP:
Button@INGAME_DEVELOPERMODE_BUTTON:
X:324
Y:0
Width:160
Height:25
Text:Developer Mode
Visible:false
Bold:True
RadarBin@INGAME_RADAR_BIN:
PowerBin@INGAME_POWER_BIN:
MoneyBin@INGAME_MONEY_BIN:
X:WINDOW_RIGHT - WIDTH
Y:0
Width:320
Height: 32
Children:
OrderButton@SELL:
Delegate:OrderButtonsChromeDelegate
X:3
Y:0
Width:30
Height:30
Image:sell
Description:Sell
LongDesc:Sell buildings, reclaiming a \nproportion of their build cost
OrderButton@POWER_DOWN:
Delegate:OrderButtonsChromeDelegate
X:39
Y:0
Width:30
Height:30
Image:power
Description:Powerdown
LongDesc:Disable unneeded structures so their \npower can be used elsewhere
OrderButton@REPAIR:
Delegate:OrderButtonsChromeDelegate
X:75
Y:0
Width:30
Height:30
Image:repair
Description:Repair
LongDesc:Repair damaged buildings
WorldTooltip:
Background@INGAME_OPTIONS_BG:
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:300
Height:320
Visible:false
Children:
Label@LABEL_TITLE:
X:(PARENT_RIGHT - WIDTH)/2
Y:20
Width:250
Height:25
Text:Options
Align:Center
Bold:True
Button@RESUME:
X:(PARENT_RIGHT - WIDTH)/2
Y:60
Width:160
Height:25
Text:Resume
Bold:True
Button@SETTINGS:
X:(PARENT_RIGHT - WIDTH)/2
Y:100
Width:160
Height:25
Text:Settings
Bold:True
Button@MUSIC:
X:(PARENT_RIGHT - WIDTH)/2
Y:140
Width:160
Height:25
Text:Music
Bold:True
Button@SURRENDER:
X:(PARENT_RIGHT - WIDTH)/2
Y:180
Width:160
Height:25
Text:Surrender
Bold:True
Button@DISCONNECT:
X:(PARENT_RIGHT - WIDTH)/2
Y:220
Width:160
Height:25
Text:Disconnect
Bold:True
Button@QUIT:
X:(PARENT_RIGHT - WIDTH)/2
Y:260
Width:160
Height:25
Text:Quit
Bold:True
Background@DIPLOMACY_BG:
Delegate:DiplomacyDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:450
Height:400
Visible:false
Children:
Label@LABEL_TITLE:
X:(PARENT_RIGHT - WIDTH)/2
Y:20
Width:250
Height:25
Text:Diplomacy
Align:Center
Bold:True
ChatDisplay@CHAT_DISPLAY:
X:250
Y:WINDOW_BOTTOM - HEIGHT - 30
Width: 760
Height: 200
DrawBackground: False
RemoveTime:250
ChatEntry@CHAT_ENTRY:
X:250
Y:WINDOW_BOTTOM - HEIGHT
Width: 760
Height: 30
Background@DEVELOPERMODE_BG:
Delegate:DeveloperModeDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:350
Height:330
Visible:false
Children:
Label@LABEL_TITLE:
X:(PARENT_RIGHT - WIDTH)/2
Y:20
Width:250
Height:25
Text:Developer Mode
Align:Center
Checkbox@CHECKBOX_SHROUD
X:30
Y:50
Height:20
Width:PARENT_RIGHT - 30
Text:Disable Shroud
Checkbox@CHECKBOX_UNITDEBUG:
X:30
Y:80
Width:PARENT_RIGHT - 30
Height:20
Text:Show Occupied Cells
Checkbox@CHECKBOX_PATHDEBUG:
X:30
Y:110
Width:PARENT_RIGHT - 30
Height:20
Text:Show Unit Paths
Button@GIVE_CASH
X:30
Y:140
Width:200
Height:20
Text: Give Cash
Checkbox@INSTANT_BUILD
X:30
Y:170
Width:PARENT_RIGHT - 30
Height:20
Text:Instant Build Speed
Checkbox@INSTANT_CHARGE
X:30
Y:200
Width:PARENT_RIGHT - 30
Height:20
Text:Instant Charge Time (Special Powers)
Checkbox@ENABLE_TECH
X:30
Y:230
Width:PARENT_RIGHT - 30
Height:20
Text:Build Everything
Button@GIVE_EXPLORATION
X:30
Y:260
Width:200
Height:20
Text: Give Exploration

View File

@@ -1,220 +1,266 @@
Background@MAINMENU_BG:
Id:MAINMENU_BG
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:250
Height:290
Delegate:MainMenuButtonsDelegate
Height:420
Visible:true
Logic:MainMenuButtonsLogic
Children:
Label@MAINMENU_LABEL_TITLE:
Id:MAINMENU_LABEL_TITLE
X:0
Y:20
Width:250
Height:25
Text:OpenRA Main Menu
Text:OpenD2k Main Menu
Align:Center
Bold:True
Font:Bold
Button@MAINMENU_BUTTON_JOIN:
Id:MAINMENU_BUTTON_JOIN
X:45
Y:70
Width:160
Height:25
Text:Join Game
Bold:True
Font:Bold
Button@MAINMENU_BUTTON_CREATE:
Id:MAINMENU_BUTTON_CREATE
X:45
Y:110
Width:160
Height:25
Text:Create Game
Bold:True
Button@MAINMENU_BUTTON_SETTINGS:
Font:Bold
Button@MAINMENU_BUTTON_DIRECTCONNECT:
Id:MAINMENU_BUTTON_DIRECTCONNECT
X:45
Y:150
Width:160
Height:25
Text:Settings
Bold:True
Button@MAINMENU_BUTTON_MUSIC:
Text:Direct Connect
Font:Bold
Button@MAINMENU_BUTTON_SETTINGS:
Id:MAINMENU_BUTTON_SETTINGS
X:45
Y:190
Width:160
Height:25
Text:Music
Bold:True
Button@MAINMENU_BUTTON_QUIT:
Text:Settings
Font:Bold
Button@MAINMENU_BUTTON_MODS:
Id:MAINMENU_BUTTON_MODS
X:45
Y:230
Width:160
Height:25
Text:Quit
Bold:True
Button@MAINMENU_BUTTON_VIDEOPLAYER:
Visible:false
Text:Mods
Font:Bold
# Button@MAINMENU_BUTTON_MUSIC:
# Id:MAINMENU_BUTTON_MUSIC
# X:45
# Y:270
# Width:160
# Height:25
# Text:Music
# Font:Bold
Button@MAINMENU_BUTTON_REPLAY_VIEWER:
Id:MAINMENU_BUTTON_REPLAY_VIEWER
X:45
Y:260
Y:310
Width:160
Height:25
Text:Video Player
Bold:True
Label@VERSION_STRING:
X:WINDOW_RIGHT - PARENT_LEFT - WIDTH - 15
Y:WINDOW_BOTTOM - PARENT_TOP - 25
Width:400
Height:35
Text:
Align:Right
Bold:True
Text:Replay Viewer
Font:Bold
Button@MAINMENU_BUTTON_QUIT:
Id:MAINMENU_BUTTON_QUIT
X:45
Y:350
Width:160
Height:25
Text:Quit
Font:Bold
Background@PERF_BG:
ClickThrough:true
Id:PERF_BG
Background:dialog4
Delegate:PerfDebugDelegate
Logic:PerfDebugLogic
X:10
Y:WINDOW_BOTTOM - 250
Width: 210
Height: 250
Children:
PerfGraph@GRAPH:
Id:GRAPH
X:5
Y:5
Width:200
Height:200
Label@TEXT:
Bold: false
Id:TEXT
X:20
Y:205
Width:170
Height:40
Background@MUSIC_MENU:
Delegate:MusicPlayerDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width: 450
Height: 250
Visible: false
Children:
Label@SETTINGS_LABEL_TITLE:
X:0
Y:20
Width:450
Height:25
Text:Music
Align:Center
Bold:True
Button@BUTTON_CLOSE:
X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45
Width:160
Height:25
Text:Close
Bold:True
Container@BUTTONS:
X:PARENT_RIGHT - 150
Y:50
Children:
Button@BUTTON_PLAY:
X:35
Y:0
Width:25
Height:25
Children:
Image@IMAGE_PLAY:
X:0
Y:0
Width:25
Height:25
ImageCollection:music
ImageName:play
Button@BUTTON_PAUSE:
Visible:false
X:35
Y:0
Width:25
Height:25
Children:
Image@IMAGE_PAUSE:
X:0
Y:0
Width:25
Height:25
ImageCollection:music
ImageName:pause
Button@BUTTON_STOP:
X:70
Y:0
Width:25
Height:25
Children:
Image@IMAGE_STOP:
X:0
Y:0
Width:25
Height:25
ImageCollection:music
ImageName:stop
Button@BUTTON_NEXT:
X:105
Y:0
Width:25
Height:25
Children:
Image@IMAGE_NEXT:
X:0
Y:0
Width:25
Height:25
ImageCollection:music
ImageName:next
Button@BUTTON_PREV:
X:0
Y:0
Width:25
Height:25
Children:
Image@IMAGE_PREV:
X:0
Y:0
Width:25
Height:25
ImageCollection:music
ImageName:prev
Label@TIME:
X:PARENT_RIGHT - 150
Y:75
Width:140
Height:25
Align: Center
ScrollPanel@MUSIC_LIST:
X:10
Y:50
Width:280
Height:140
Children:
Label@MUSIC_TEMPLATE:
Width:PARENT_RIGHT-28
Height:25
X:2
Y:0
Visible:false
Children:
Label@TITLE:
X:5
Width:PARENT_RIGHT - 10
Height:PARENT_BOTTOM
Align: Left
Label@LENGTH:
X:5
Width:PARENT_RIGHT - 10
Height:PARENT_BOTTOM
Align: Right
Checkbox@SHUFFLE:
X:PARENT_RIGHT - 150
Y:110
Width:100
Height:20
Text:Shuffle
Checkbox@REPEAT:
X:PARENT_RIGHT - 150
Y:140
Width:100
Height:20
Text:Repeat
#Background@MUSIC_MENU:
# Id:MUSIC_MENU
# Logic:MusicPlayerLogic
# X:(WINDOW_RIGHT - WIDTH)/2
# Y:(WINDOW_BOTTOM - HEIGHT)/2
# Width: 450
# Height: 250
# Visible: true
# Children:
# Label@SETTINGS_LABEL_TITLE:
# Id:SETTINGS_LABEL_TITLE
# X:0
# Y:20
# Width:450
# Height:25
# Text:Music
# Align:Center
# Font:Bold
# Button@BUTTON_INSTALL:
# Id:BUTTON_INSTALL
# X:20
# Y:PARENT_BOTTOM - 45
# Width:160
# Height:25
# Text:Install Music
# Font:Bold
# Button@BUTTON_CLOSE:
# Id:BUTTON_CLOSE
# X:PARENT_RIGHT - 180
# Y:PARENT_BOTTOM - 45
# Width:160
# Height:25
# Text:Close
# Font:Bold
# Container@BUTTONS:
# X:PARENT_RIGHT - 150
# Y:50
# Children:
# Button@BUTTON_PLAY:
# Id:BUTTON_PLAY
# X:35
# Y:0
# Width:25
# Height:25
# Children:
# Image@IMAGE_PLAY:
# Id:IMAGE_PLAY
# X:0
# Y:0
# Width:25
# Height:25
# ImageCollection:music
# ImageName:play
# Button@BUTTON_PAUSE:
# Id:BUTTON_PAUSE
# Visible:false
# X:35
# Y:0
# Width:25
# Height:25
# Children:
# Image@IMAGE_PAUSE:
# Id:IMAGE_PAUSE
# X:0
# Y:0
# Width:25
# Height:25
# ImageCollection:music
# ImageName:pause
# Button@BUTTON_STOP:
# Id:BUTTON_STOP
# X:70
# Y:0
# Width:25
# Height:25
# Children:
# Image@IMAGE_STOP:
# Id:IMAGE_STOP
# X:0
# Y:0
# Width:25
# Height:25
# ImageCollection:music
# ImageName:stop
# Button@BUTTON_NEXT:
# Id:BUTTON_NEXT
# X:105
# Y:0
# Width:25
# Height:25
# Children:
# Image@IMAGE_NEXT:
# Id:IMAGE_NEXT
# X:0
# Y:0
# Width:25
# Height:25
# ImageCollection:music
# ImageName:next
# Button@BUTTON_PREV:
# Id:BUTTON_PREV
# X:0
# Y:0
# Width:25
# Height:25
# Children:
# Image@IMAGE_PREV:
# Id:IMAGE_PREV
# X:0
# Y:0
# Width:25
# Height:25
# ImageCollection:music
# ImageName:prev
# Label@TIME:
# Id:TIME
# X:PARENT_RIGHT - 150
# Y:75
# Width:140
# Height:25
# Align: Center
# ScrollPanel@MUSIC_LIST:
# Id:MUSIC_LIST
# X:10
# Y:50
# Width:280
# Height:140
# Children:
# ScrollItem@MUSIC_TEMPLATE:
# Id:MUSIC_TEMPLATE
# Width:PARENT_RIGHT-27
# Height:25
# X:2
# Y:0
# Visible:false
# Children:
# Label@TITLE:
# Id:TITLE
# X:5
# Width:PARENT_RIGHT - 10
# Height:PARENT_BOTTOM
# Align: Left
# Label@LENGTH:
# Id:LENGTH
# X:5
# Width:PARENT_RIGHT - 10
# Height:PARENT_BOTTOM
# Align: Right
# Checkbox@SHUFFLE:
# Id:SHUFFLE
# X:PARENT_RIGHT - 150
# Y:110
# Width:100
# Height:20
# Text:Shuffle
# Checkbox@REPEAT:
# Id:REPEAT
# X:PARENT_RIGHT - 150
# Y:140
# Width:100
# Height:20
# Text:Loop

View File

@@ -1,325 +0,0 @@
Background@CREATESERVER_BG:
Delegate:CreateServerMenuDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:400
Height:240
Visible:false
Children:
Label@LABEL_TITLE:
X:0
Y:20
Width:400
Height:25
Text:Create Server
Align:Center
Bold:True
Label@GAME_TITLE_LABEL:
X:50
Y:59
Width:95
Height:25
Align: Right
Text:Game Title:
TextField@GAME_TITLE:
X:150
Y:60
Width:210
MaxLength:50
Height:25
Text:OpenRA Game
Label@EXTERNAL_PORT_LABEL:
X:50
Y:94
Width:95
Height:25
Align: Right
Text:External Port:
TextField@EXTERNAL_PORT:
X:150
Y:95
Width:50
MaxLength:5
Height:25
Text:OpenRA Game
Label@LISTEN_PORT_LABEL:
X:210
Y:94
Width:95
Height:25
Align: Right
Text:Listen Port:
TextField@LISTEN_PORT:
X:310
Y:95
Width:50
MaxLength:5
Height:25
Checkbox@CHECKBOX_ONLINE:
X:165
Y:130
Width:300
Height:20
Text:Advertise game Online
Checkbox@CHECKBOX_CHEATS:
X:165
Y:160
Width:300
Height:20
Text:Allow Cheats
Button@BUTTON_START:
X:130
Y:PARENT_BOTTOM - 45
Width:120
Height:25
Text:Create
Bold:True
Button@BUTTON_CANCEL:
X:260
Y:PARENT_BOTTOM - 45
Width:120
Height:25
Text:Cancel
Bold:True
Background@JOINSERVER_BG:
Delegate:ServerBrowserDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:700
Height:410
Visible:false
Children:
Label@JOINSERVER_LABEL_TITLE:
X:0
Y:20
Width:PARENT_RIGHT
Height:25
Text:Join Server
Align:Center
Bold:True
ScrollPanel@SERVER_LIST:
X:20
Y:50
Width:390
Height:300
Children:
Label@SERVER_TEMPLATE:
Width:PARENT_RIGHT-28
Height:25
X:2
Y:0
Visible:false
Label@JOINSERVER_PROGRESS_TITLE:
X:150
Y:PARENT_BOTTOM / 2 - HEIGHT
Width:150
Height:30
Background:dialog4
Text:Fetching games...
Align:Center
Container@SERVER_INFO:
X:0
Y:0
Width:PARENT_RIGHT
Height:PARENT_BOTTOM
Visible:false
Children:
Label@SERVER_IP_LABEL:
X:PARENT_RIGHT - 200 - WIDTH
Y:50
Align:Right
Width:70
Height:20
Text:Server:
Bold:True
Label@SERVER_IP:
X:PARENT_RIGHT - 195
Y:50
Align:Left
Width:70
Height:20
Label@SERVER_MODS_LABEL:
X:PARENT_RIGHT - 200 - WIDTH
Y:70
Align:Right
Width:70
Height:20
Text:Mods:
Bold:True
Label@SERVER_MODS:
X:PARENT_RIGHT - 195
Y:70
Align:Left
Width:70
Height:20
Label@MAP_TITLE_LABEL:
X:PARENT_RIGHT - 200 - WIDTH
Y:90
Align:Right
Width:70
Height:20
Text:Map:
Bold:True
Label@MAP_TITLE:
X:PARENT_RIGHT - 195
Y:90
Align:Left
Width:70
Height:20
Label@MAP_PLAYERS_LABEL:
X:PARENT_RIGHT - 200 - WIDTH
Y:110
Align:Right
Width:70
Height:20
Text:Players:
Bold:True
Label@MAP_PLAYERS:
X:PARENT_RIGHT - 195
Y:110
Align:Left
Width:70
Height:20
MapPreview@MAP_PREVIEW:
X:PARENT_RIGHT-241
Y:140
Width:192
Height:192
Button@DIRECTCONNECT_BUTTON:
X:20
Y:PARENT_BOTTOM - 45
Width:120
Height:25
Text:Direct Connect
Bold:True
Button@REFRESH_BUTTON:
X:160
Y:PARENT_BOTTOM - 45
Width:120
Height:25
Text:Refresh
Bold:True
Button@JOIN_BUTTON:
X:PARENT_RIGHT - 140 - 130
Y:PARENT_BOTTOM - 45
Width:120
Height:25
Text:Join
Bold:True
Button@CANCEL_BUTTON:
X:PARENT_RIGHT - 140
Y:PARENT_BOTTOM - 45
Width:120
Height:25
Text:Cancel
Bold:True
Background@DIRECTCONNECT_BG:
Delegate:ServerBrowserDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:400
Height:155
Visible:false
Children:
Label@DIRECTCONNECT_LABEL_TITLE:
X:0
Y:20
Width:400
Height:25
Text:Direct Connect
Align:Center
Bold:True
Label@ADDRESS_LABEL:
X:50
Y:59
Width:95
Height:25
Align:Right
Text:Server Address:
TextField@SERVER_ADDRESS:
X:150
Y:60
Width:200
MaxLength:50
Height:25
Button@JOIN_BUTTON:
X:130
Y:PARENT_BOTTOM - 45
Width:120
Height:25
Text:Join
Bold:True
Button@CANCEL_BUTTON:
X:260
Y:PARENT_BOTTOM - 45
Width:120
Height:25
Text:Cancel
Bold:True
Background@CONNECTION_FAILED_BG:
Delegate:ConnectionDialogsDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:450
Height:150
Visible:false
Children:
Label@CONNECTION_FAILED_TITLE:
X:0
Y:20
Width:450
Height:25
Text:Connection Failed
Align:Center
Bold:True
Label@CONNECTION_FAILED_DESC:
X:0
Y:60
Width:PARENT_RIGHT
Height:25
Text:Could not connect to AAA.BBB.CCC.DDD:EEEE
Align:Center
Button@CONNECTION_BUTTON_RETRY:
X:PARENT_RIGHT - 360
Y:PARENT_BOTTOM - 45
Width:160
Height:25
Text:Retry
Bold:True
Button@CONNECTION_BUTTON_CANCEL:
X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45
Width:160
Height:25
Text:Cancel
Bold:True
Background@CONNECTING_BG:
Delegate:ConnectionDialogsDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:450
Height:150
Visible:false
Children:
Label@CONNECTING_TITLE:
X:0
Y:20
Width:450
Height:25
Text:Connecting
Align:Center
Bold:True
Label@CONNECTING_DESC:
X:0
Y:60
Width:PARENT_RIGHT
Height:25
Text:Connecting to AAA.BBB.CCC.DDD:EEEE...
Align:Center
Button@CONNECTION_BUTTON_ABORT:
X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45
Width:160
Height:25
Text:Abort
Bold:True

View File

@@ -1,178 +0,0 @@
Background@SETTINGS_MENU:
Delegate:SettingsMenuDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM- HEIGHT)/2
Width: 450
Height: 350
Visible: false
Children:
Label@SETTINGS_LABEL_TITLE:
X:0
Y:20
Width:450
Height:25
Text:Settings
Align:Center
Bold:True
Button@BUTTON_CLOSE:
X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45
Width:160
Height:25
Text:Close
Bold:True
Container@TAB_CONTAINER:
X:0
Y:50
Width:PARENT_RIGHT
Height:25
Children:
Button@GENERAL:
X:45
Y:0
Width:90
Height:25
Text:General
Bold:True
Button@AUDIO:
X:135
Y:0
Width:90
Height:25
Text:Audio
Bold:True
Button@DISPLAY:
X:225
Y:0
Width:90
Height:25
Text:Display
Bold:True
Button@DEBUG:
X:315
Y:0
Width:90
Height:25
Text:Debug
Bold:True
Container@GENERAL_PANE:
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: true
Children:
Label@SETTINGS_PLAYER_NAME:
X:0
Y:10
Text: Player Name:
TextField@NAME:
Text:Name
Width:139
Height:25
X:90
Y:0
MaxLength:16
Checkbox@EDGE_SCROLL:
X:0
Y:30
Width:200
Height:20
Text: Enable Edge Scrolling
Checkbox@INVERSE_SCROLL:
X:0
Y:60
Width:200
Height:20
Text: Invert Mouse Drag Scrolling
Container@AUDIO_PANE:
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: false
Children:
Label@SOUND_VOLUME_LABEL:
X:0
Y:10
Text: Sound Volume
Slider@SOUND_VOLUME:
X:100
Y:0
Width:250
Height:20
Ticks:5
Label@MUSIC_VOLUME_LABEL:
X:0
Y:40
Text: Music Volume
Slider@MUSIC_VOLUME:
X:100
Y:30
Width:250
Height:20
Ticks:5
Container@DISPLAY_PANE:
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: false
Children:
Checkbox@FULLSCREEN_CHECKBOX:
X:0
Y:0
Width:300
Height:20
Text:Fullscreen
Label@RESOLUTION_LABEL:
X:0
Y:50
Text: Window Resolution:
TextField@SCREEN_WIDTH:
Text:Width
Width:50
Height:25
X:130
Y:40
MaxLength:5
Label@X:
Text:x
X:185
Y:50
TextField@SCREEN_HEIGHT:
Text:Height
Width:50
Height:25
X:195
Y:40
MaxLength:5
Label@RESTART:
Text: Restart Game To Apply Changes
X:0
Y:PARENT_BOTTOM - 30
Container@DEBUG_PANE:
X:37
Y:100
Width:PARENT_RIGHT - 37
Height:PARENT_BOTTOM - 100
Visible: false
Children:
Checkbox@PERFDEBUG_CHECKBOX:
X:0
Y:0
Width:300
Height:20
Text:Show Performance Information
Checkbox@SYNCREPORTS_CHECKBOX:
X:0
Y:30
Width:300
Height:20
Text:Collect Sync Reports
Checkbox@GAMETIME_CHECKBOX:
X:0
Y:60
Width:300
Height:20
Text:Show Game Time Counter

View File

@@ -1,67 +0,0 @@
Background@VIDEOPLAYER_MENU:
Delegate:VideoPlayerDelegate
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM- HEIGHT)/2
Width: 700
Height: 680
Visible: false
Children:
Label@VIDEOPLAYER_TITLE:
X:0
Y:20
Align:Center
Width:PARENT_RIGHT
Height:20
Text:Video Player
Bold:True
VqaPlayer:
X:30
Y:50
Width:640
Height:400
ScrollPanel@VIDEO_LIST:
X:20
Y:460
Width:480
Height:200
Children:
Label@VIDEO_TEMPLATE:
Width:PARENT_RIGHT-28
Height:25
X:2
Y:0
Visible:false
Button@BUTTON_PLAYPAUSE:
X:600 - WIDTH - 10
Y:460
Width:25
Height:25
Children:
Image@PLAY:
Width:25
Height:25
ImageCollection:music
ImageName:play
Image@PAUSE:
Width:25
Height:25
ImageCollection:music
ImageName:pause
Button@BUTTON_STOP:
X:610
Y:460
Width:25
Height:25
Children:
Image:
Width:25
Height:25
ImageCollection:music
ImageName:stop
Button@BUTTON_CLOSE:
X:PARENT_RIGHT - 180
Y:PARENT_BOTTOM - 45
Width:160
Height:25
Text:Close
Bold:True

View File

@@ -1,68 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<sequences>
<cursor src="mouse" palette="cursor">
<sequence name="scroll-t" start="1" x="12" y="12" />
<sequence name="scroll-tr" start="2" x="12" y="12" />
<sequence name="scroll-r" start="3" x="12" y="12" />
<sequence name="scroll-br" start="4" x="12" y="12" />
<sequence name="scroll-b" start="5" x="12" y="12" />
<sequence name="scroll-bl" start="6" x="12" y="12" />
<sequence name="scroll-l" start="7" x="12" y="12" />
<sequence name="scroll-tl" start="8" x="12" y="12" />
<sequence name="scroll-t-blocked" start="124" x="12" y="12" />
<sequence name="scroll-tr-blocked" start="125" x="12" y="12" />
<sequence name="scroll-r-blocked" start="126" x="12" y="12" />
<sequence name="scroll-br-blocked" start="127" x="12" y="12" />
<sequence name="scroll-b-blocked" start="128" x="12" y="12" />
<sequence name="scroll-bl-blocked" start="129" x="12" y="12" />
<sequence name="scroll-l-blocked" start="130" x="12" y="12" />
<sequence name="scroll-tl-blocked" start="131" x="12" y="12" />
<sequence name="select" start="15" length="6" x="12" y="12" />
<sequence name="default" start="0" />
<sequence name="default-minimap" start="80" />
<sequence name="generic-blocked" start="9" />
<sequence name="generic-blocked-minimap" start="33" />
<sequence name="move" start="10" length="4" x="12" y="12" />
<sequence name="move-minimap" start="29" length="4" x="12" y="12" />
<sequence name="move-blocked" start="14" x="12" y="12" />
<sequence name="move-blocked-minimap" start="33" x="12" y="12" />
<sequence name="attack" start="195" length="8" x="12" y="12" />
<sequence name="attack-minimap" start="203" length="8" x="12" y="12" />
<sequence name="attackmove" start="21" length="8" x="12" y="12" />
<sequence name="attackmove-minimap" start="134" length="8" x="12" y="12" />
<sequence name="enter" start="113" length="3" x="12" y="12" />
<sequence name="enter-minimap" start="139" length="3" x="12" y="12" />
<sequence name="enter-blocked" start="212" length="1" x="12" y="12" />
<sequence name="enter-blocked-minimap" start="33" />
<sequence name="c4" start="116" length="3" x="12" y="12" />
<sequence name="c4-minimap" start="121" length="3" x="12" y="12" />
<sequence name="guard" start="147" length="1" x="12" y="12" />
<sequence name="guard-minimap" start="146" length="1" x="12" y="12" />
<sequence name="capture" start="164" length="3" x="12" y="12" />
<sequence name="capture-minimap" start="167" length="3" x="12" y="12" />
<sequence name="heal" start="160" length="4" x="12" y="12" />
<sequence name="heal-minimap" start="194" length="1" x="12" y="12" />
<sequence name="ability" start="82" length="8" x="12" y="12" />
<sequence name="ability-minimap" start="214" length="8" x="12" y="12" />
<!-- Want minimap cursors -->
<sequence name="deploy" start="59" length="9" x="12" y="12" />
<sequence name="deploy-blocked" start="211" length="1" x="12" y="12" />
<sequence name="goldwrench" start="170" length="24" x="12" y="12" />
<sequence name="goldwrench-blocked" start="213" length="1" x="12" y="12" />
<sequence name="nuke" start="90" length="7" x="12" y="12" />
<sequence name="chrono-select" start="97" length="8" x="12" y="12" />
<sequence name="chrono-target" start="105" length="8" x="12" y="12" />
<sequence name="sell" start="68" length="12" x="12" y="12" />
<sequence name="sell-blocked" start="119" length="1" x="12" y="12" />
<sequence name="repair" start="35" length="24" x="12" y="12" />
<sequence name="repair-blocked" start="120" length="1" x="12" y="12" />
<sequence name="sell2" start="148" length="12" />
</cursor>
<cursor src="nopower" palette="cursor">
<sequence name="powerdown-blocked" start="0" length="1" x="12" y="12" />
<sequence name="powerdown" start="1" length="3" x="12" y="12" />
</cursor>
</sequences>

BIN
mods/d2k/maps/blank.oramap Normal file

Binary file not shown.

BIN
mods/d2k/maps/test.oramap Normal file

Binary file not shown.

Binary file not shown.

View File

@@ -1,44 +0,0 @@
Selectable: True
MapFormat: 3
Title: Name your map here
Description: Describe your map here
Author: Your name here
PlayerCount: 1
Tileset: ARRAKIS
MapSize: 128,128
TopLeft: 16,16
BottomRight: 112,112
Players:
PlayerReference@Neutral:
Name: Neutral
Palette:
Race: allies
OwnsWorld: True
NonCombatant: True
Playable: False
DefaultStartingUnits: False
Color: 255,238,238,238
Color2: 255,44,28,24
InitialCash: 0
Allies:
Enemies:
Actors:
Waypoints:
wp0: 20,20
Smudges:
Rules:

View File

@@ -1,41 +1,123 @@
Metadata:
Title: Dune 2000
Description: Work in progress d2k port
Version: a0001
Author: The OpenRA Developers
Description: Converting the OpenRA Red Alert Mod one by one to Dune 2000
Version: {DEV_VERSION}
Author: The OpenD2k Developers
Folders:
.
mods/d2k
mods/d2k/bits
mods/ra/uibits
./mods/d2k
./mods/d2k/bits
./mods/d2k/uibits
~^/Content/d2k
./mods/ra
./mods/ra/bits
./mods/ra/uibits
~^/Content/ra
Packages:
~main.mix
redalert.mix
conquer.mix
hires.mix
local.mix
sounds.mix
speech.mix
allies.mix
russian.mix
temperat.mix
snow.mix
interior.mix
~scores.mix
~movies1.mix
~movies2.mix
mods/d2k/bits/arrakis.mix
Rules:
mods/d2k/rules/defaults.yaml
mods/d2k/rules/vehicles.yaml
mods/d2k/rules/system.yaml
mods/d2k/rules/vehicles.yaml
mods/d2k/rules/structures.yaml
mods/d2k/rules/aircraft.yaml
mods/ra/rules/defaults.yaml
mods/ra/rules/system.yaml
mods/ra/rules/vehicles.yaml
mods/ra/rules/structures.yaml
mods/ra/rules/infantry.yaml
mods/ra/rules/civilian.yaml
mods/ra/rules/trees.yaml
mods/ra/rules/aircraft.yaml
mods/ra/rules/ships.yaml
Sequences:
mods/d2k/sequences.yaml
mods/ra/sequences.yaml
Cursors:
mods/d2k/cursors.xml
mods/ra/cursors.yaml
Chrome:
mods/ra/chrome.xml
mods/d2k/chrome.yaml
mods/ra/chrome.yaml
Assemblies:
mods/d2k/OpenRA.Mods.D2k.dll
mods/ra/OpenRA.Mods.RA.dll
ChromeLayout:
mods/d2k/chrome/ingame.yaml
mods/d2k/chrome/mainmenu.yaml
mods/d2k/chrome/videoplayer.yaml
mods/d2k/chrome/settings.yaml
mods/d2k/chrome/gamelobby.yaml
mods/d2k/chrome/serverbrowser.yaml
mods/ra/chrome/gameinit.yaml
mods/ra/chrome/ingame.yaml
mods/ra/chrome/mainmenu.yaml
mods/ra/chrome/settings.yaml
mods/ra/chrome/lobby.yaml
mods/ra/chrome/map-chooser.yaml
mods/ra/chrome/create-server.yaml
mods/ra/chrome/serverbrowser.yaml
mods/ra/chrome/replaybrowser.yaml
mods/ra/chrome/dropdowns.yaml
mods/ra/chrome/modchooser.yaml
Weapons:
mods/ra/weapons.yaml
Voices:
mods/d2k/voices.yaml
mods/ra/voices.yaml
TileSets:
mods/d2k/tilesets/arrakis.yaml
mods/ra/tilesets/snow.yaml
mods/ra/tilesets/interior.yaml
mods/ra/tilesets/temperat.yaml
Music:
Movies:
LoadScreen: NullLoadScreen
ShellmapUid:1e36d6874ef7960ac0e21edf36bbe1490a4650eb
TileSize:32
LoadScreen: D2kLoadScreen
ServerTraits:
LobbyCommands
MasterServerPinger
ChromeMetrics:
mods/ra/metrics.yaml
Fonts:
Regular:
Font:FreeSans.ttf
Size:14
Bold:
Font:FreeSansBold.ttf
Size:14
Title:
Font:titles.ttf
Size:48
BigBold:
Font:FreeSansBold.ttf
Size:24
Tiny:
Font:FreeSans.ttf
Size:10
TinyBold:
Font:FreeSansBold.ttf
Size:10

View File

@@ -0,0 +1,35 @@
CARRYALL:
Inherits: ^Helicopter
Buildable:
Queue: Plane
BuildPaletteOrder: 110
Prerequisites: anyhightech
BuiltAt: hightecha
Owner: atreides
Valued:
Cost: 1200
Tooltip:
Name: Carryall
Description: Fast drop ship.\n Unarmed
Health:
HP: 90
Armor:
Type: Light
RevealsShroud:
Range: 12
Helicopter:
RearmBuildings: hightecha
InitialFacing: 0
ROT: 5
Speed: 12
LandableTerrainTypes: Clear,Rough,Road,Ore,Beach
RenderUnit:
PlayerPalette: d2kplayer
# RenderCargo:
WithShadow:
Cargo:
Types: Vehicle
MaxWeight: 1
PipCount: 1
FallsToEarth:
Explosion: UnitExplode

View File

@@ -1,16 +0,0 @@
^Vehicle:
AppearsOnRadar:
Mobile:
TerrainSpeeds:
Clear: 100%
ROT: 5
Selectable:
Targetable:
TargetTypes: Ground
Repairable:
Passenger:
CargoType: Vehicle
HiddenUnderFog:
GainsExperience:
GivesExperience:
DrawLineToTarget:

View File

@@ -0,0 +1,232 @@
CONYARDA:
Inherits: ^Building
Building:
Power: 0
Footprint: xxx xxx xxx
Dimensions: 3,3
Health:
HP: 1000
Armor:
Type: Heavy
RevealsShroud:
Range: 5
Bib:
Production:
Produces: Building,Defense
IronCurtainable:
Valued:
Cost: 2500
Tooltip:
Name: Atreides Construction Yard
CustomSellValue:
Value: 2500
BaseBuilding:
Transforms:
IntoActor: mcv
Offset:1,1
Facing: 96
ProductionBar:
RenderBuilding:
PlayerPalette: d2kplayer
PWRA:
Inherits: ^Building
Buildable:
Queue: Building
BuildPaletteOrder: 0
Owner: atreides
# Hotkey: p
Valued:
Cost: 300
Tooltip:
Name: Atreides Windtrap
Description: Provides power for other Atreides structures
ProvidesCustomPrerequisite:
Prerequisite: anypower
Building:
Power: 100
Footprint: xx xx
Dimensions: 2,2
Health:
HP: 400
Armor:
Type: Wood
RevealsShroud:
Range: 4
Bib:
RenderBuilding:
PlayerPalette: d2kplayer
BARRA:
Inherits: ^Building
Buildable:
Queue: Building
BuildPaletteOrder: 30
Prerequisites: anypower
Owner: atreides
# Hotkey: b
Valued:
Cost: 400
Tooltip:
Name: Atreides Barracks
Description: Trains infantry
Building:
Power: -20
Footprint: xx xx xx
Dimensions: 2,3
Health:
HP: 800
Armor:
Type: Wood
RevealsShroud:
Range: 5
Bib:
RenderBuilding:
PlayerPalette: d2kplayer
RallyPoint:
Exit@1:
SpawnOffset: -1,19
ExitCell: 0,2
Exit@2:
SpawnOffset: -17,15
ExitCell: 0,2
Production:
Produces: Infantry
PrimaryBuilding:
ProductionBar:
HIGHTECHA:
Inherits: ^Building
Buildable:
Queue: Building
BuildPaletteOrder: 50
Prerequisites: refa
Owner: atreides
Valued:
Cost: 2000
Tooltip:
Name: High Tech Factory
Description: Produces carryalls
ProvidesCustomPrerequisite:
Prerequisite: anyhightech
Building:
Power: -30
Footprint: _x_ xxx xxx
Dimensions: 3,3
Health:
HP: 1500
Armor:
Type: Light
RevealsShroud:
Range: 4
Bib:
RenderBuilding:
PlayerPalette: d2kplayer
RallyPoint:
Exit@1:
SpawnOffset: 5,0
ExitCell: 1,1
Production:
Produces: Plane
PrimaryBuilding:
ProductionBar:
REFA:
Inherits: ^Building
Buildable:
Queue: Building
BuildPaletteOrder: 10
Prerequisites: anypower
Owner: atreides
Valued:
Cost: 1400
Tooltip:
Name: Spice Refinery
Description: Harvesters unload spice here.
Building:
Power: -30
Footprint: _x_ xxx x==
Dimensions: 3,3
Health:
HP: 900
Armor:
Type: Wood
RevealsShroud:
Range: 6
Bib:
RenderBuilding:
PlayerPalette: d2kplayer
OreRefinery:
StoresOre:
PipCount: 17
Capacity: 2000
CustomSellValue:
Value: 600
FreeActor:
Actor: HARV
InitialActivity: FindResources
SpawnOffset: 1,2
Facing: 64
SILOA:
Inherits: ^Building
Buildable:
Queue: Building
BuildPaletteOrder: 40
Prerequisites: refa
Owner: atreides
Valued:
Cost: 150
Tooltip:
Name: Silo
Description: Stores excess harvested Spice
Building:
Power: -10
-GivesBuildableArea:
Health:
HP: 300
Armor:
Type: Wood
RevealsShroud:
Range: 4
# RenderBuildingSilo:
StoresOre:
PipCount: 5
Capacity: 1500
RenderBuilding:
PlayerPalette: d2kplayer
-EmitInfantryOnSell:
LIGHTA:
Inherits: ^Building
Buildable:
Queue: Building
BuildPaletteOrder: 50
Prerequisites: refa
Owner: atreides
Valued:
Cost: 2000
Tooltip:
Name: Light Factory
Description: light vehicles.
Building:
Power: -30
Footprint: xxx xxx
Dimensions: 3,2
Health:
HP: 1500
Armor:
Type: Light
RevealsShroud:
Range: 4
Bib:
RenderBuilding:
PlayerPalette: d2kplayer
RallyPoint:
Exit@1:
SpawnOffset: 5,0
ExitCell: 1,1
Production:
Produces: Vehicle
PrimaryBuilding:
ProductionBar:

View File

@@ -1,79 +1,30 @@
Player:
TechTree:
PlayerResources:
InitialCash: 5000
ActorGroupProxy:
DeveloperMode:
World:
ScreenShaker:
ColorPickerPaletteModifier:
BuildingInfluence:
UnitInfluence:
ChooseBuildTabOnSelect:
PaletteFromCurrentTileset:
Name: terrain
PlayerColorPalette:
BasePalette: units
PlayerColorPalette@d2kplayer:
BasePalette: d2k
BaseName: d2kplayer
PaletteFormat: d2k
PaletteFromFile@units:
Name: units
Filename: units.pal
World:
Country@2:
Name: Atreides
Race: atreides
# Country@3:
# Name: Harkonnen
# Race: harkonnen
# Country@4:
# Name: Ordos
# Race: ordos
PaletteFromFile@d2k:
Name: d2k
Filename: d2k.pal
PaletteFromFile@chrome:
Name: chrome
Filename: temperat.pal
PaletteFromFile@effect:
Name: effect
Filename: temperat.pal
PaletteFromFile@cursor:
Name: cursor
Filename: temperat.pal
PaletteFromRGBA@shadow:
Name: shadow
R: 0
G: 0
B: 0
A: 140
PaletteFromRGBA@highlight:
Name: highlight
R: 255
G: 255
B: 255
A: 128
PaletteFromRGBA@disabled:
Name: disabled
R: 0
G: 0
B: 0
A: 180
ShroudPalette@shroud:
ShroudPalette@fog:
IsFog: yes
Name: fog
Country@0:
Name: Allies
Race: allies
SpawnMapActors:
CreateMPPlayers:
MPStartLocations:
SpawnMPUnits:
EvaAlerts:
RadarUp:
RadarDown:
BuildingSelectAudio:
BuildingReadyAudio:
BuildingCannotPlaceAudio:
UnitSelectAudio:
UnitReadyAudio:
OnHoldAudio:
CancelledAudio:
CashTickUp:
CashTickDown:
LowPower:
SilosNeeded:
PrimaryBuildingSelected:
AbilityInsufficientPower:
LevelUp:
SpatialBins:
BinSize: 4
Shroud:
Filename: d2k.pal
# ResourceType@spice:
# ResourceType: 1
# Palette: d2k
# SpriteNames: spice #?
# ValuePerUnit: 25
# Name: Spice
# PipColor: Yellow
# AllowedTerrainTypes: Sand
# AllowUnderActors: false

View File

@@ -1,21 +1,69 @@
MCV:
Transforms:
IntoActor: conyarda
RenderUnit:
Image: MCV
PlayerPalette: d2kplayer
TRIKE:
Inherits: ^Vehicle
Valued:
Cost: 2000
Cost: 200
Tooltip:
Name: Mobile Construction Vehicle
Description: Deploys into another Construction Yard.\n Unarmed
Name: Scout Trike
Icon: trikeicon
Description: Weak Scout.\n Decent vs. Infantry
Buildable:
BuildPaletteOrder: 15
Prerequisites: lighta
Owner: atreides
Selectable:
Priority: 3
Bounds: 42,42
Bounds: 24,24
Mobile:
ROT: 15
Speed: 20
Health:
HP: 600
HP: 75
Armor:
Type: Light
Mobile:
Speed: 6
RevealsShroud:
Range: 4
Range: 8
AttackFrontal:
PrimaryWeapon: M60mg
PrimaryOffset: 0,0,0,-4
RenderUnit:
MustBeDestroyed:
BaseBuilding:
PlayerPalette: d2kplayer
WithMuzzleFlash:
PrimaryOffset: 0,3,0,0
AutoTarget:
QUAD:
Inherits: ^Vehicle
Valued:
Cost: 400
Tooltip:
Name: Quad
Description: Fast scout vehicle, armed with \nrockets.\n Strong vs Vehicles, Aircraft\n Weak vs Infantry
Buildable:
BuildPaletteOrder: 30
Prerequisites: lighta
Owner: atreides
Mobile:
ROT: 10
Speed: 13
Health:
HP: 120
Armor:
Type: Light
RevealsShroud:
Range: 7
AttackFrontal:
PrimaryWeapon: RedEye
SecondaryWeapon: Dragon
PrimaryOffset: 0,0,0,-2
PrimaryLocalOffset: -4,0,0,0,25, 4,0,0,0,-25
SecondaryOffset: 0,0,0,-2
SecondaryLocalOffset: -4,0,0,0,25, 4,0,0,0,-25
RenderUnit:
PlayerPalette: d2kplayer
AutoTarget:

View File

@@ -3,42 +3,86 @@ mcv:
Start: 0
Facings: 32
moveflsh:
conyarda:
idle:
Start: 0
Length: *
pips:
groups:
Start: 8
Length: 10
medic:
Start: 20
ready:
Start: 3
hold:
Start: 4
pip-empty:
make: conmake
Start: 0
pip-green:
Length: *
damaged-idle:
Start: 1
pip-yellow:
Start: 5
pip-gray:
Start: 6
pip-red:
Start: 7
tag-fake:
Start: 18
tag-primary:
pwra:
idle:
Start: 0
make: wtrpmake
Start: 0
Length: *
damaged-idle:
Start: 1
barra:
idle:
Start: 0
make: barramake
Start: 0
Length: *
damaged-idle:
Start: 1
refa:
idle:
Start: 1
make: refmake
Start: 0
Length: *
damaged-idle:
Start: 2
clock:
siloa:
idle:
Start: 0
# Length: 3
Length: 1
damaged-idle:
Start: 4
Length: 1
make: silomake
Start: 0
Length: *
rank:
rank:
hightecha:
idle:
Start: 0
Length: *
make: highmake
Start: 0
Length: *
damaged-idle:
Start: 1
lighta:
idle:
Start: 1
make: lightmake
Start: 0
Length: *
damaged-idle:
Start: 2
carryall:
idle:
Start: 0
Facings: 32
unload:
Start: 0
Facings: 32
trike:
idle:
Start: 0
Facings: 32
quad:
idle:
Start: 0
Facings: 32

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
mods/d2k/uibits/dialog.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

13
mods/d2k/voices.yaml Normal file
View File

@@ -0,0 +1,13 @@
# Classic Red Alert Mod -- Package Manifest
GenericVoice:
Variants:
atreides: .v01,.v03
harkonnen: .v01,.v03
ordos: .v01,.v03
VehicleVoice:
Variants:
atreides: .v00,.v02
harkonnen: .v00,.v02
ordos: .v00,.v02

Binary file not shown.

View File

@@ -1,35 +0,0 @@
<chrome>
<collection name="dialog2" src="dialog.png">
<image name="background" x="513" y="1" width="126" height="126" />
<image name="border-r" x="639" y="1" width="1" height="126" />
<image name="border-l" x="512" y="1" width="1" height="126" />
<image name="border-b" x="513" y="127" width="126" height="1" />
<image name="border-t" x="513" y="0" width="126" height="1" />
<image name="corner-tl" x="512" y="0" width="1" height="1" />
<image name="corner-tr" x="594" y="0" width="1" height="1" />
<image name="corner-bl" x="512" y="82" width="1" height="1" />
<image name="corner-br" x="594" y="82" width="1" height="1" />
</collection>
<collection name="dialog3" src="dialog.png">
<image name="background" x="641" y="1" width="126" height="126" />
<image name="border-r" x="767" y="1" width="1" height="126" />
<image name="border-l" x="640" y="1" width="1" height="126" />
<image name="border-b" x="641" y="127" width="126" height="1" />
<image name="border-t" x="641" y="0" width="126" height="1" />
<image name="corner-tl" x="640" y="0" width="1" height="1" />
<image name="corner-tr" x="722" y="0" width="1" height="1" />
<image name="corner-bl" x="640" y="82" width="1" height="1" />
<image name="corner-br" x="722" y="82" width="1" height="1" />
</collection>
<collection name="dialog" src="dialog.png">
<image name="background" x="0" y="0" width="480" height="480" />
<image name="border-r" x="489" y="0" width="9" height="192" />
<image name="border-l" x="480" y="0" width="9" height="192" />
<image name="border-b" x="0" y="489" width="191" height="9" />
<image name="border-t" x="0" y="480" width="191" height="9" />
<image name="corner-tl" x="191" y="480" width="9" height="9" />
<image name="corner-tr" x="200" y="480" width="9" height="9" />
<image name="corner-bl" x="191" y="489" width="9" height="9" />
<image name="corner-br" x="200" y="489" width="9" height="9" />
</collection>
</chrome>

View File

@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<sequences>
<cursor src="mouse" palette="cursor">
<sequence name="default" start="0" />
</cursor>
</sequences>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

View File

@@ -1,15 +0,0 @@
Selectable: False
MapFormat: 2
Title: Default Shellmap
Description: A default empty map to use when no custom shellmap is wanted
Author: alzeih
PlayerCount: 0
Tileset: DUMMY
MapSize: 128,128
TopLeft: 16,16
BottomRight: 112,112
Players:
Actors:
Waypoints:
Smudges:
Rules:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 971 B

View File

@@ -1,15 +0,0 @@
Background@MAINMENU_BG:
Id:MAINMENU_BG
X:(WINDOW_RIGHT - WIDTH)/2
Y:(WINDOW_BOTTOM - HEIGHT)/2
Width:250
Height:65
Delegate:MainMenuButtonsDelegate
Children:
Button@MAINMENU_BUTTON_QUIT:
Id:MAINMENU_BUTTON_QUIT
X:45
Y:20
Width:160
Height:25
Text:Quit

View File

@@ -1,24 +0,0 @@
Metadata:
Title: Default Mod Template
Description: Minimal template for creating a base mod
Version: a0001
Author: The OpenRA Developers
Folders:
.
mods/default
Rules:
mods/default/system.yaml
Cursors:
mods/default/cursors.xml
Assemblies:
mods/ra/OpenRA.Mods.RA.dll
TileSets:
mods/default/tileset-dummy.yaml
Chrome:
mods/default/chrome.xml:
ChromeLayout:
mods/default/menus.yaml:
LoadScreen: NullLoadScreen
ShellmapUid: 95c34889e85a903d7dbb41f13d6c373b44a8b62e

Binary file not shown.

View File

@@ -1,9 +0,0 @@
World:
PaletteFromFile@chrome:
Name: chrome
Filename: temperat.pal
PaletteFromFile@cursor:
Name: cursor
Filename: temperat.pal
SpatialBins:
UnitInfluence:

Binary file not shown.

View File

@@ -1,15 +0,0 @@
General:
Name: Dummy
Id: DUMMY
Extensions: .shp, .tem
Palette: temperat.pal
Terrain:
TerrainType@Blank:
Type: Blank
Templates:
Template@255:
Id: 255
Image: bogus
Size: 1,1
Tiles:
0: Blank

Binary file not shown.

Binary file not shown.

View File

@@ -1,13 +0,0 @@
MCV:
RenderUnit:
PlayerPalette: d2kplayer
Player:
PlayerColorPalette@d2k:
BasePalette: d2k
BaseName: d2kplayer
PaletteFormat: d2k
World:
PaletteFromFile@d2k:
Name: d2k
Filename: d2k.pal

View File

@@ -1,11 +0,0 @@
Metadata:
Title: Player Palette Test
Description: Replaces the mcv artwork with the d2k mcv
Version: a0001
Author: The OpenRA Developers
Requires: ra
Folders:
mods/palettetest
Rules:
mods/palettetest/mcv.yaml

267
ripD2kGameFiles.sh Executable file
View File

@@ -0,0 +1,267 @@
#!/bin/bash
R8="/home/matthias/.openra/Content/d2k/DATA.R8"
PAL="mods/d2k/bits/d2k.pal"
mono OpenRA.Utility.exe --r8 $R8 $PAL 194 205 "spice"
mono OpenRA.Utility.exe --shp spice.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 206 457 "rifleinfantry" --infantry
mono OpenRA.Utility.exe --shp rifleinfantry.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 458 693 "rocketinfantry" --infantry
mono OpenRA.Utility.exe --shp rocketinfantry.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 694 929 "fremen" --infantry
mono OpenRA.Utility.exe --shp fremen.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 930 1165 "sardaukar" --infantry
mono OpenRA.Utility.exe --shp sardaukar.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 1166 1221 "engineer" --infantry # death animation 1342..1401
mono OpenRA.Utility.exe --shp engineer.png 48
#rifleinfantry repetitions?
mono OpenRA.Utility.exe --r8 $R8 $PAL 1402 1502 "thumper" --infantry #death animations 1543..1602
mono OpenRA.Utility.exe --shp thumper.png 48
#rifleinfantry repetitions?
mono OpenRA.Utility.exe --r8 $R8 $PAL 1603 1634 "missile" --vehicle
mono OpenRA.Utility.exe --shp missile.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 1635 1666 "trike" --vehicle
mono OpenRA.Utility.exe --shp trike.png 32
mono OpenRA.Utility.exe --r8 $R8 $PAL 1667 1698 "quad" --vehicle
mono OpenRA.Utility.exe --shp quad.png 32
mono OpenRA.Utility.exe --r8 $R8 $PAL 1699 1730 "harvester" --vehicle
mono OpenRA.Utility.exe --shp harvester.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 1731 1762 "combata" --vehicle
mono OpenRA.Utility.exe --shp combata.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 1763 1794 "siege" --vehicle
mono OpenRA.Utility.exe --shp siege.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 1795 1826 "mcv" --vehicle
mono OpenRA.Utility.exe --shp mcv.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 1827 1858 "sonic" --vehicle
mono OpenRA.Utility.exe --shp sonic.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 1859 1890 "combataturret" --vehicle
mono OpenRA.Utility.exe --shp combataturret.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 1891 1922 "siegeturret" --vehicle
mono OpenRA.Utility.exe --shp siegeturret.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 1923 1954 "carryall" --vehicle # requires some reordering (again)
mono OpenRA.Utility.exe --shp carryall.png 64
mono OpenRA.Utility.exe --r8 $R8 $PAL 1955 2050 "orni" --vehicle
mono OpenRA.Utility.exe --shp orni.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 2051 2082 "combath" --vehicle
mono OpenRA.Utility.exe --shp combath.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 2083 2114 "devast" --vehicle
mono OpenRA.Utility.exe --shp devast.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 2115 2146 "combataturret" --vehicle
mono OpenRA.Utility.exe --shp combataturret.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 2147 2148 "deathhandmissile"
mono OpenRA.Utility.exe --shp deathhandmissile.png 24
#rifleinfantry repetitions?
mono OpenRA.Utility.exe --r8 $R8 $PAL 2245 2284 "saboteur" --infantry #death animations 2325..2388
mono OpenRA.Utility.exe --shp saboteur.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 2389 2420 "deviator" --vehicle
mono OpenRA.Utility.exe --shp deviator.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 2421 2452 "raider" --vehicle
mono OpenRA.Utility.exe --shp raider.png 32
mono OpenRA.Utility.exe --r8 $R8 $PAL 2453 2484 "combato" --vehicle
mono OpenRA.Utility.exe --shp combato.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 2485 2516 "combatoturret" --vehicle
mono OpenRA.Utility.exe --shp combatoturret.png 48
mono OpenRA.Utility.exe --r8 $R8 $PAL 2517 2517 "frigate" --vehicle
mono OpenRA.Utility.exe --shp frigate.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 2518 2520 "heavya" --building #2518 is only the gate
mono OpenRA.Utility.exe --shp heavya.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 2521 2522 "radara" --building
mono OpenRA.Utility.exe --shp radara.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 2523 2524 "pwra" --building
mono OpenRA.Utility.exe --shp pwra.png 64
mono OpenRA.Utility.exe --r8 $R8 $PAL 2525 2526 "barra" --building
mono OpenRA.Utility.exe --shp barra.png 80
mono OpenRA.Utility.exe --r8 $R8 $PAL 2527 2558 "wall" --building
mono OpenRA.Utility.exe --shp wall.png 32
mono OpenRA.Utility.exe --r8 $R8 $PAL 2559 2560 "conyarda" --building
mono OpenRA.Utility.exe --shp conyarda.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 2561 2563 "refa" --building # 2561 is fassade, 2562 is silo top, 2563 is silo top broken
mono OpenRA.Utility.exe --shp refa.png 120
mono OpenRA.Utility.exe --r8 $R8 $PAL 2564 2565 "hightecha" --building
mono OpenRA.Utility.exe --shp hightecha.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 2566 2570 "siloa" --building
mono OpenRA.Utility.exe --shp siloa.png 32
mono OpenRA.Utility.exe --r8 $R8 $PAL 2673 2675 "lighta" --building
mono OpenRA.Utility.exe --shp lighta.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 3549 3564 "sandwormmouth"
mono OpenRA.Utility.exe --shp sandwormmouth.png 68
mono OpenRA.Utility.exe --r8 $R8 $PAL 3565 3585 "sandwormdust"
mono OpenRA.Utility.exe --shp sandwormdust.png 68
mono OpenRA.Utility.exe --r8 $R8 $PAL 3586 3600 "wormsigns1"
mono OpenRA.Utility.exe --shp wormsigns1.png 16
mono OpenRA.Utility.exe --r8 $R8 $PAL 3601 3610 "wormsigns2"
mono OpenRA.Utility.exe --shp wormsigns2.png 16
mono OpenRA.Utility.exe --r8 $R8 $PAL 3611 3615 "wormsigns3"
mono OpenRA.Utility.exe --shp wormsigns3.png 16
mono OpenRA.Utility.exe --r8 $R8 $PAL 3616 3620 "wormsigns4"
mono OpenRA.Utility.exe --shp wormsigns4.png 16
mono OpenRA.Utility.exe --r8 $R8 $PAL 3679 3686 "sell"
mono OpenRA.Utility.exe --shp sell.png 48
#explosions and muzzle flash
mono OpenRA.Utility.exe --r8 $R8 $PAL 4011 4011 "infrantryicon"
mono OpenRA.Utility.exe --shp infrantryicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4012 4012 "bazookaicon"
mono OpenRA.Utility.exe --shp bazookaicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4013 4013 "engineericon"
mono OpenRA.Utility.exe --shp engineericon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4014 4014 "thumpericon"
mono OpenRA.Utility.exe --shp thumpericon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4015 4015 "sadaukaricon"
mono OpenRA.Utility.exe --shp sadaukaricon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4016 4016 "trikeicon"
mono OpenRA.Utility.exe --shp trikeicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4017 4017 "raidericon"
mono OpenRA.Utility.exe --shp raidericon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4018 4018 "quadicon"
mono OpenRA.Utility.exe --shp quadicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4019 4019 "harvicon" # = 4044
mono OpenRA.Utility.exe --shp harvicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4020 4020 "combataicon"
mono OpenRA.Utility.exe --shp combataicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4021 4021 "combathicon"
mono OpenRA.Utility.exe --shp combathicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4022 4022 "combatoicon"
mono OpenRA.Utility.exe --shp combatoicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4023 4023 "mcvicon"
mono OpenRA.Utility.exe --shp mcvicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4024 4024 "missileicon"
mono OpenRA.Utility.exe --shp missileicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4025 4025 "deviatoricon"
mono OpenRA.Utility.exe --shp deviatoricon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4026 4026 "siegeicon"
mono OpenRA.Utility.exe --shp siegeicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4027 4027 "sonicicon"
mono OpenRA.Utility.exe --shp sonicicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4028 4028 "devastatoricon"
mono OpenRA.Utility.exe --shp devastatoricon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4029 4029 "carryallicon" # = 4030
mono OpenRA.Utility.exe --shp carryallicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4031 4031 "orniicon" # = 4062
mono OpenRA.Utility.exe --shp orniicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4032 4032 "fremenicon" # = 4033
mono OpenRA.Utility.exe --shp fremenicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4034 4034 "saboteuricon"
mono OpenRA.Utility.exe --shp saboteuricon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4035 4035 "deathhandicon"
mono OpenRA.Utility.exe --shp deathhandicon.png 60
# 4036..4045 = repetitions
mono OpenRA.Utility.exe --r8 $R8 $PAL 4046 4046 "conyardicona" # = 4049
mono OpenRA.Utility.exe --shp conyardicona.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4047 4047 "conyardiconh"
mono OpenRA.Utility.exe --shp conyardiconh.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4048 4048 "conyardicono"
mono OpenRA.Utility.exe --shp conyardicono.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4050 4050 "4plateicon" # = 4051..4052
mono OpenRA.Utility.exe --shp 4plateicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4053 4053 "6plateicon" # = 4054..4055
mono OpenRA.Utility.exe --shp 6plateicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4056 4056 "pwraicon"
mono OpenRA.Utility.exe --shp pwraicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4057 4057 "pwrhicon"
mono OpenRA.Utility.exe --shp pwrhicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4058 4058 "pwroicon"
mono OpenRA.Utility.exe --shp pwroicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4059 4059 "barraicon"
mono OpenRA.Utility.exe --shp barraicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4060 4060 "barrhicon"
mono OpenRA.Utility.exe --shp barrhicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4061 4061 "barroicon"
mono OpenRA.Utility.exe --shp barroicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4063 4063 "wallicon" # = 4061..4062
mono OpenRA.Utility.exe --shp wallicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4066 4066 "refaicon"
mono OpenRA.Utility.exe --shp refaicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4067 4067 "refhicon"
mono OpenRA.Utility.exe --shp refhicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4068 4068 "refoicon"
mono OpenRA.Utility.exe --shp refoicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4069 4069 "turreticon" # = 4070..4071
mono OpenRA.Utility.exe --shp turreticon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4072 4072 "radaraicon"
mono OpenRA.Utility.exe --shp radaraicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4073 4073 "radarhicon"
mono OpenRA.Utility.exe --shp radarhicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4074 4074 "radaroicon"
mono OpenRA.Utility.exe --shp radaroicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4075 4075 "rturreticon" # = 4076..4077
mono OpenRA.Utility.exe --shp rturreticon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4078 4078 "hightechaicon"
mono OpenRA.Utility.exe --shp hightechaicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4079 4079 "hightechhicon"
mono OpenRA.Utility.exe --shp hightechhicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4080 4080 "hightechoicon"
mono OpenRA.Utility.exe --shp hightechoicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4081 4081 "lightaicon"
mono OpenRA.Utility.exe --shp lightaicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4082 4082 "lighthicon"
mono OpenRA.Utility.exe --shp lighthicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4083 4083 "lightoicon"
mono OpenRA.Utility.exe --shp lightoicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4084 4084 "siloaicon"
mono OpenRA.Utility.exe --shp siloaicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4085 4085 "silohicon"
mono OpenRA.Utility.exe --shp silohicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4086 4086 "silooicon"
mono OpenRA.Utility.exe --shp silooicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4087 4087 "heavyaicon"
mono OpenRA.Utility.exe --shp heavyaicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4088 4088 "heavyhicon"
mono OpenRA.Utility.exe --shp heavyhicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4089 4089 "heavyoicon"
mono OpenRA.Utility.exe --shp heavyoicon.png 60
# 4090 = orniicon
# 4091 = heavyhicon
mono OpenRA.Utility.exe --r8 $R8 $PAL 4092 4092 "starportaicon"
mono OpenRA.Utility.exe --shp starportaicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4093 4093 "starporthicon"
mono OpenRA.Utility.exe --shp starporthicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4094 4094 "starportoicon"
mono OpenRA.Utility.exe --shp starportoicon.png 60
# 4095 = orniicon
mono OpenRA.Utility.exe --r8 $R8 $PAL 4096 4096 "repairicon" # = 4097..4098
mono OpenRA.Utility.exe --shp repairicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4099 4099 "researchicon" # = 4100..4101
mono OpenRA.Utility.exe --shp researchicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4102 4102 "palaceaicon"
mono OpenRA.Utility.exe --shp palaceaicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4103 4103 "palacehicon"
mono OpenRA.Utility.exe --shp palacehicon.png 60
mono OpenRA.Utility.exe --r8 $R8 $PAL 4104 4104 "palaceoicon"
mono OpenRA.Utility.exe --shp palaceoicon.png 60
# 4105 = orniicon
# 4106..4107 = radaraicon
# 4108 = conyardaicon
mono OpenRA.Utility.exe --r8 $R8 $PAL 4109 4150 "conmake" --building
mono OpenRA.Utility.exe --shp conmake.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 4151 4174 "wtrpmake" --building
mono OpenRA.Utility.exe --shp wtrpmake.png 64
mono OpenRA.Utility.exe --r8 $R8 $PAL 4175 4194 "barramake" --building
mono OpenRA.Utility.exe --shp barramake.png 80
mono OpenRA.Utility.exe --r8 $R8 $PAL 4231 4253 "refmake" --building
mono OpenRA.Utility.exe --shp refmake.png 120
mono OpenRA.Utility.exe --r8 $R8 $PAL 4274 4294 "highmake" --building
mono OpenRA.Utility.exe --shp highmake.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 4275 4312 "lightmake" --building
mono OpenRA.Utility.exe --shp lightmake.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 4313 4327 "silomake" --building
mono OpenRA.Utility.exe --shp silomake.png 32
mono OpenRA.Utility.exe --r8 $R8 $PAL 4436 4449 "cranea"
mono OpenRA.Utility.exe --shp cranea.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 4450 4463 "craneh"
mono OpenRA.Utility.exe --shp craneh.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 4463 4477 "craneo"
mono OpenRA.Utility.exe --shp craneo.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 4760 4819 "windtrap_anim" --building #?
mono OpenRA.Utility.exe --shp windtrap_anim.png 96
mono OpenRA.Utility.exe --r8 $R8 $PAL 4820 4840 "missile_launch"
mono OpenRA.Utility.exe --shp missile_launch.png 96
mv *.shp mods/d2k/bits