Merge remote-tracking branch 'matt/dune'
5
.gitignore
vendored
@@ -55,6 +55,5 @@ OpenRA.Launcher.Mac/OpenRA.xcodeproj/*.mode1v3
|
||||
# other crap
|
||||
Logs/
|
||||
Replays/
|
||||
settings.yaml
|
||||
\#*
|
||||
.*.sw?
|
||||
\#*
|
||||
.*.sw?
|
||||
|
||||
2
AUTHORS
@@ -12,6 +12,7 @@ The OpenRA developers are:
|
||||
Also thanks to:
|
||||
* Akseli Virtanen (RAGEQUIT)
|
||||
* Andrew Riedi
|
||||
* Barnaby Smith (mvi)
|
||||
* Bellator
|
||||
* Christer Ulfsparre (Holloweye)
|
||||
* Erasmus Schroder (rasco)
|
||||
@@ -22,6 +23,7 @@ Also thanks to:
|
||||
* Lawrence Wang
|
||||
* Mark Olson (markolson)
|
||||
* Matthew Gatland (mgatland)
|
||||
* Matthias Mailänder (Mailaender)
|
||||
* Max Ugrumov (katzsmile)
|
||||
* Max621
|
||||
* Nukem
|
||||
|
||||
45
Makefile
@@ -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 mods utility tsbuild
|
||||
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) $(utility_TARGET)
|
||||
mod_d2k_LIBS = $(COMMON_LIBS) $(STD_MOD_LIBS) $(mod_ra_TARGET) $(utility_TARGET)
|
||||
mod_d2k_EXTRA_CMDS = mono --debug RALint.exe d2k
|
||||
PROGRAMS += mod_d2k
|
||||
mod_d2k: $(mod_d2k_TARGET)
|
||||
|
||||
#
|
||||
# Tools
|
||||
#
|
||||
@@ -127,15 +137,19 @@ ralint: $(ralint_TARGET)
|
||||
|
||||
# Builds and exports tilesets from a bitmap
|
||||
tsbuild_SRCS := $(shell find OpenRA.TilesetBuilder/ -iname '*.cs')
|
||||
tsbuild_TARGET = TilesetBuilder.exe
|
||||
tsbuild_TARGET = OpenRA.TilesetBuilder.exe
|
||||
tsbuild_KIND = winexe
|
||||
tsbuild_DEPS = $(fileformats_TARGET) $(game_TARGET)
|
||||
tsbuild_LIBS = $(COMMON_LIBS) $(tsbuild_DEPS) System.Windows.Forms.dll
|
||||
tsbuild_EXTRA = -resource:OpenRA.TilesetBuilder.Form1.resources
|
||||
tsbuild_EXTRA = -resource:OpenRA.TilesetBuilder.frmBuilder.resources -resource:OpenRA.TilesetBuilder.frmNew.resources -resource:OpenRA.TilesetBuilder.Surface.resources
|
||||
PROGRAMS += tsbuild
|
||||
OpenRA.TilesetBuilder.Form1.resources:
|
||||
resgen2 OpenRA.TilesetBuilder/Form1.resx OpenRA.TilesetBuilder.Form1.resources 1> /dev/null
|
||||
tsbuild: OpenRA.TilesetBuilder.Form1.resources $(tsbuild_TARGET)
|
||||
OpenRA.TilesetBuilder.frmBuilder.resources:
|
||||
resgen2 OpenRA.TilesetBuilder/frmBuilder.resx OpenRA.TilesetBuilder.frmBuilder.resources 1> /dev/null
|
||||
OpenRA.TilesetBuilder.frmNew.resources:
|
||||
resgen2 OpenRA.TilesetBuilder/frmNew.resx OpenRA.TilesetBuilder.frmNew.resources 1> /dev/null
|
||||
OpenRA.TilesetBuilder.Surface.resources:
|
||||
resgen2 OpenRA.TilesetBuilder/Surface.resx OpenRA.TilesetBuilder.Surface.resources 1> /dev/null
|
||||
tsbuild: OpenRA.TilesetBuilder.frmBuilder.resources OpenRA.TilesetBuilder.frmNew.resources OpenRA.TilesetBuilder.Surface.resources $(tsbuild_TARGET)
|
||||
|
||||
#
|
||||
# Launchers / Utilities
|
||||
@@ -188,7 +202,7 @@ BIN_INSTALL_DIR = $(DESTDIR)$(bindir)
|
||||
INSTALL_DIR = $(DESTDIR)$(datadir)/openra
|
||||
INSTALL = install
|
||||
INSTALL_PROGRAM = $(INSTALL)
|
||||
CORE = fileformats rcg rgl rsdl rnull game editor utility
|
||||
CORE = fileformats rcg rgl rsdl rnull game editor utility tsbuild
|
||||
|
||||
install: all
|
||||
@-echo "Installing OpenRA to $(INSTALL_DIR)"
|
||||
@@ -196,6 +210,10 @@ install: all
|
||||
@$(INSTALL_PROGRAM) $(foreach prog,$(CORE),$($(prog)_TARGET)) $(INSTALL_DIR)
|
||||
@$(INSTALL_PROGRAM) -d $(INSTALL_DIR)/mods/cnc
|
||||
@$(INSTALL_PROGRAM) $(mod_cnc_TARGET) $(INSTALL_DIR)/mods/cnc
|
||||
@$(INSTALL_PROGRAM) -d $(INSTALL_DIR)/mods/ra
|
||||
@$(INSTALL_PROGRAM) $(mod_ra_TARGET) $(INSTALL_DIR)/mods/ra
|
||||
@$(INSTALL_PROGRAM) -d $(INSTALL_DIR)/mods/d2k
|
||||
@$(INSTALL_PROGRAM) $(mod_d2k_TARGET) $(INSTALL_DIR)/mods/d2k
|
||||
|
||||
@-cp $(foreach f,$(shell ls mods/cnc --hide=*.dll),mods/cnc/$(f)) $(INSTALL_DIR)/mods/cnc
|
||||
@cp -r mods/cnc/maps $(INSTALL_DIR)/mods/cnc
|
||||
@@ -205,8 +223,6 @@ install: all
|
||||
@cp -r mods/cnc/sequences $(INSTALL_DIR)/mods/cnc
|
||||
@cp -r mods/cnc/tilesets $(INSTALL_DIR)/mods/cnc
|
||||
@cp -r mods/cnc/uibits $(INSTALL_DIR)/mods/cnc
|
||||
@$(INSTALL_PROGRAM) -d $(INSTALL_DIR)/mods/ra
|
||||
@$(INSTALL_PROGRAM) $(mod_ra_TARGET) $(INSTALL_DIR)/mods/ra
|
||||
|
||||
@-cp $(foreach f,$(shell ls mods/ra --hide=*.dll),mods/ra/$(f)) $(INSTALL_DIR)/mods/ra
|
||||
@cp -r mods/ra/maps $(INSTALL_DIR)/mods/ra
|
||||
@@ -215,6 +231,14 @@ install: all
|
||||
@cp -r mods/ra/rules $(INSTALL_DIR)/mods/ra
|
||||
@cp -r mods/ra/tilesets $(INSTALL_DIR)/mods/ra
|
||||
@cp -r mods/ra/uibits $(INSTALL_DIR)/mods/ra
|
||||
|
||||
@-cp $(foreach f,$(shell ls mods/d2k --hide=*.dll),mods/d2k/$(f)) $(INSTALL_DIR)/mods/d2k
|
||||
@cp -r mods/d2k/maps $(INSTALL_DIR)/mods/d2k
|
||||
@cp -r mods/d2k/bits $(INSTALL_DIR)/mods/d2k
|
||||
@cp -r mods/d2k/chrome $(INSTALL_DIR)/mods/d2k
|
||||
@cp -r mods/d2k/rules $(INSTALL_DIR)/mods/d2k
|
||||
@cp -r mods/d2k/tilesets $(INSTALL_DIR)/mods/d2k
|
||||
@cp -r mods/d2k/uibits $(INSTALL_DIR)/mods/d2k
|
||||
|
||||
@cp -r glsl $(INSTALL_DIR)
|
||||
@cp -r cg $(INSTALL_DIR)
|
||||
@@ -237,3 +261,4 @@ install: all
|
||||
uninstall:
|
||||
@-rm -r $(INSTALL_DIR)
|
||||
@-rm $(DESTDIR)$(bindir)/openra
|
||||
@-rm $(DESTDIR)$(bindir)/openra-editor
|
||||
|
||||
92
OpenRA.Mods.D2k/D2kLoadScreen.cs
Normal file
@@ -0,0 +1,92 @@
|
||||
#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.IO;
|
||||
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();
|
||||
if (!FileSystem.Exists(Info["TestFile"]))
|
||||
{
|
||||
var args = new WidgetArgs()
|
||||
{
|
||||
{ "installData", Info }
|
||||
};
|
||||
Ui.OpenWindow(Info["InstallerMenuWidget"], args);
|
||||
}
|
||||
else
|
||||
{
|
||||
Game.LoadShellMap();
|
||||
Ui.ResetAll();
|
||||
Ui.OpenWindow("MAINMENU_BG");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
90
OpenRA.Mods.D2k/OpenRA.Mods.D2k.csproj
Normal file
@@ -0,0 +1,90 @@
|
||||
<?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" />
|
||||
<Compile Include="Render\RenderBuildingSeparateTurret.cs" />
|
||||
<Compile Include="Widgets\Logic\D2kInstallLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\D2kExtractGameFilesLogic.cs" />
|
||||
<Compile Include="Widgets\Logic\D2kInstallFromCDLogic.cs" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<PropertyGroup>
|
||||
<PostBuildEvent>mkdir "$(SolutionDir)mods/d2k/"
|
||||
copy "$(TargetPath)" "$(SolutionDir)mods/d2k/"
|
||||
cd "$(SolutionDir)"</PostBuildEvent>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\OpenRA.Utility\OpenRA.Utility.csproj">
|
||||
<Project>{F33337BE-CB69-4B24-850F-07D23E408DDF}</Project>
|
||||
<Name>OpenRA.Utility</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
||||
<Project>{0DFB103F-2962-400F-8C6D-E2C28CCBA633}</Project>
|
||||
<Name>OpenRA.Game</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">
|
||||
<Project>{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}</Project>
|
||||
<Name>OpenRA.FileFormats</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\OpenRA.TilesetBuilder\OpenRA.TilesetBuilder.csproj">
|
||||
<Project>{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}</Project>
|
||||
<Name>OpenRA.TilesetBuilder</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
20
OpenRA.Mods.D2k/OpenRA.Mods.D2k.sln
Normal file
@@ -0,0 +1,20 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.D2k", "OpenRA.Mods.D2k.csproj", "{C0B0465C-6BE2-409C-8770-3A9BF64C4344}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Release|Any CPU = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
StartupItem = OpenRA.Mods.D2k.csproj
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
39
OpenRA.Mods.D2k/Properties/AssemblyInfo.cs
Normal 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("")]
|
||||
|
||||
48
OpenRA.Mods.D2k/Render/RenderBuildingSeparateTurret.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* 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,
|
||||
* see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
/*using System;
|
||||
using OpenRA.Mods.RA.Buildings;
|
||||
using OpenRA.Graphics;
|
||||
using OpenRA.Traits;
|
||||
|
||||
namespace OpenRA.Mods.RA.Render
|
||||
{
|
||||
class RenderBuildingSeparateTurretInfo : RenderBuildingInfo, Requires<TurretedInfo>, Requires<AttackBaseInfo>
|
||||
{
|
||||
public override object Create(ActorInitializer init) { return new RenderBuildingSeparateTurret( init, this ); }
|
||||
}
|
||||
|
||||
class RenderBuildingSeparateTurret : RenderBuilding
|
||||
{
|
||||
public RenderBuildingSeparateTurret( ActorInitializer init, RenderBuildingInfo info )
|
||||
: base(init, info, MakeTurretFacingFunc(init.self))
|
||||
{
|
||||
var turretAnim = new Animation(GetImage(self), () => turreted.turretFacing );
|
||||
turretAnim.Play( "turret" );
|
||||
|
||||
for( var i = 0; i < attack.Turrets.Count; i++ )
|
||||
{
|
||||
var turret = attack.Turrets[i];
|
||||
anims.Add( "turret_{0}".F(i),
|
||||
new AnimationWithOffset( turretAnim,
|
||||
() => Combat.GetTurretPosition( self, facing, turret ),
|
||||
null));
|
||||
}
|
||||
}
|
||||
|
||||
static Func<int> MakeTurretFacingFunc(Actor self)
|
||||
{
|
||||
var turreted = self.Trait<Turreted>();
|
||||
return () => turreted.turretFacing;
|
||||
}
|
||||
|
||||
}
|
||||
} */
|
||||
487
OpenRA.Mods.D2k/Widgets/Logic/D2kExtractGameFilesLogic.cs
Normal file
@@ -0,0 +1,487 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* 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,
|
||||
* see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using System.Diagnostics;
|
||||
using OpenRA.FileFormats;
|
||||
using OpenRA.FileFormats.Graphics;
|
||||
using OpenRA.Widgets;
|
||||
using OpenRA.Utility;
|
||||
|
||||
namespace OpenRA.Mods.D2k.Widgets.Logic
|
||||
{
|
||||
public class D2kExtractGameFilesLogic
|
||||
{
|
||||
Widget panel;
|
||||
ProgressBarWidget progressBar;
|
||||
LabelWidget statusLabel;
|
||||
ButtonWidget retryButton, backButton;
|
||||
Widget extractingContainer, copyFilesContainer;
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public D2kExtractGameFilesLogic(Widget widget)
|
||||
{
|
||||
panel = widget.Get("EXTRACT_GAMEFILES_PANEL");
|
||||
progressBar = panel.Get<ProgressBarWidget>("PROGRESS_BAR");
|
||||
statusLabel = panel.Get<LabelWidget>("STATUS_LABEL");
|
||||
|
||||
backButton = panel.Get<ButtonWidget>("BACK_BUTTON");
|
||||
backButton.OnClick = Ui.CloseWindow;
|
||||
|
||||
retryButton = panel.Get<ButtonWidget>("RETRY_BUTTON");
|
||||
retryButton.OnClick = Extract;
|
||||
|
||||
extractingContainer = panel.Get("EXTRACTING");
|
||||
copyFilesContainer = panel.Get("COPY_FILES");
|
||||
Extract();
|
||||
}
|
||||
|
||||
void Extract()
|
||||
{
|
||||
backButton.IsDisabled = () => true;
|
||||
retryButton.IsDisabled = () => true;
|
||||
copyFilesContainer.IsVisible = () => false;
|
||||
extractingContainer.IsVisible = () => true;
|
||||
|
||||
var PathToDataR8 = Path.Combine(Platform.SupportDir, "Content/d2k/DATA.R8");
|
||||
var PathToPalette = "mods/d2k/bits/d2k.pal";
|
||||
var PathToImages = Path.Combine(Platform.SupportDir, "Content/d2k/SHPs");
|
||||
|
||||
var ExtractGameFiles = new string[][]
|
||||
{
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "0", "2", Path.Combine(PathToImages, "overlay")},
|
||||
//new string[] {"--r8", PathToDataR8, PathToPalette, "40", "101", Path.Combine(PathToImages, "shadow")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "102", "105", Path.Combine(PathToImages, "crates")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "107", "109", Path.Combine(PathToImages, "spicebloom")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "114", "129", Path.Combine(PathToImages, "rockcrater1")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "130", "145", Path.Combine(PathToImages, "rockcrater2")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "146", "161", Path.Combine(PathToImages, "sandcrater1")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "162", "177", Path.Combine(PathToImages, "sandcrater2")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "206", "381", Path.Combine(PathToImages, "rifle"), "--infantry"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "382", "457", Path.Combine(PathToImages, "rifledeath"), "--infantrydeath"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "458", "693", Path.Combine(PathToImages, "rocket"), "--infantry"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "694", "929", Path.Combine(PathToImages, "fremen"), "--infantry"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "930", "1165", Path.Combine(PathToImages, "sardaukar"), "--infantry"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1166", "1221", Path.Combine(PathToImages, "engineer"), "--infantry"}, // death animation 1342..1401
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1402", "1502", Path.Combine(PathToImages, "thumper"), "--infantry"}, // death animations 1543..1602
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1603", "1634", Path.Combine(PathToImages, "missile"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1635", "1666", Path.Combine(PathToImages, "trike"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1667", "1698", Path.Combine(PathToImages, "quad"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1699", "1730", Path.Combine(PathToImages, "harvester"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1731", "1762", Path.Combine(PathToImages, "combata"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1763", "1794", Path.Combine(PathToImages, "siege"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1795", "1826", Path.Combine(PathToImages, "dmcv"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1827", "1858", Path.Combine(PathToImages, "sonic"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1859", "1890", Path.Combine(PathToImages, "combataturret"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1891", "1922", Path.Combine(PathToImages, "siegeturret"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1923", "1954", Path.Combine(PathToImages, "carryall"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "1955", "2050", Path.Combine(PathToImages, "orni"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2051", "2082", Path.Combine(PathToImages, "combath"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2083", "2114", Path.Combine(PathToImages, "devast"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2115", "2146", Path.Combine(PathToImages, "combathturret"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2147", "2148", Path.Combine(PathToImages, "deathhandmissile")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2245", "2284", Path.Combine(PathToImages, "saboteur"), "--infantry"}, //#death animations 2325..2388
|
||||
//rifleinfantry repetitions?
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2389", "2420", Path.Combine(PathToImages, "deviator"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2421", "2452", Path.Combine(PathToImages, "raider"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2453", "2484", Path.Combine(PathToImages, "combato"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2485", "2516", Path.Combine(PathToImages, "combatoturret"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2517", "2517", Path.Combine(PathToImages, "frigate"), "--vehicle"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2518", "2520", Path.Combine(PathToImages, "heavya"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2521", "2522", Path.Combine(PathToImages, "radara"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2523", "2524", Path.Combine(PathToImages, "pwra"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2525", "2526", Path.Combine(PathToImages, "barra"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2527", "2558", Path.Combine(PathToImages, "wall"), "--wall"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2559", "2560", Path.Combine(PathToImages, "conyarda"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2561", "2563", Path.Combine(PathToImages, "refa"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2564", "2565", Path.Combine(PathToImages, "hightecha"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2566", "2570", Path.Combine(PathToImages, "siloa"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2571", "2572", Path.Combine(PathToImages, "repaira"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2573", "2588", Path.Combine(PathToImages, "guntower"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2589", "2620", Path.Combine(PathToImages, "gunturret"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2621", "2636", Path.Combine(PathToImages, "rockettower"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2637", "2668", Path.Combine(PathToImages, "rocketturreta"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2669", "2670", Path.Combine(PathToImages, "researcha"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2671", "2672", Path.Combine(PathToImages, "starporta"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2673", "2675", Path.Combine(PathToImages, "lighta"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2676", "2677", Path.Combine(PathToImages, "palacea"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2678", "2680", Path.Combine(PathToImages, "heavyh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2681", "2682", Path.Combine(PathToImages, "radarh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2683", "2684", Path.Combine(PathToImages, "pwrh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2685", "2686", Path.Combine(PathToImages, "barrh"), "--building"},
|
||||
// identical wall
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2719", "2720", Path.Combine(PathToImages, "conyardh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2721", "2723", Path.Combine(PathToImages, "refh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2724", "2725", Path.Combine(PathToImages, "hightechh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2726", "2730", Path.Combine(PathToImages, "siloh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2731", "2732", Path.Combine(PathToImages, "repairh"), "--building"},
|
||||
// identical guntower
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2749", "2780", Path.Combine(PathToImages, "gunturreth"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2797", "2828", Path.Combine(PathToImages, "rocketturreth"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2829", "2830", Path.Combine(PathToImages, "researchh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2831", "2832", Path.Combine(PathToImages, "starporth"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2833", "2835", Path.Combine(PathToImages, "lighth"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2836", "2837", Path.Combine(PathToImages, "palaceh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2838", "2840", Path.Combine(PathToImages, "heavyo"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2841", "2842", Path.Combine(PathToImages, "radaro"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2843", "2844", Path.Combine(PathToImages, "pwro"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2845", "2846", Path.Combine(PathToImages, "barro"), "--building"},
|
||||
// identical wall
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2879", "2880", Path.Combine(PathToImages, "conyardo"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2881", "2883", Path.Combine(PathToImages, "refo"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2884", "2885", Path.Combine(PathToImages, "hightecho"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2886", "2890", Path.Combine(PathToImages, "siloo"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2891", "2892", Path.Combine(PathToImages, "repairo"), "--building"},
|
||||
// identical guntower
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2909", "2940", Path.Combine(PathToImages, "gunturreto"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2957", "2988", Path.Combine(PathToImages, "rocketturreto"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2989", "2990", Path.Combine(PathToImages, "researcho"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2991", "2992", Path.Combine(PathToImages, "starporto"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2993", "2995", Path.Combine(PathToImages, "lighto"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "2996", "2997", Path.Combine(PathToImages, "palaceo"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "3549", "3564", Path.Combine(PathToImages, "sandwormmouth")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "3565", "3585", Path.Combine(PathToImages, "sandwormdust")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "3586", "3600", Path.Combine(PathToImages, "wormsigns1")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "3601", "3610", Path.Combine(PathToImages, "wormsigns2")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "3611", "3615", Path.Combine(PathToImages, "wormsigns3")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "3616", "3620", Path.Combine(PathToImages, "wormsigns4")},
|
||||
//new string[] {"--r8", PathToDataR8, PathToPalette, "3679", "3686", "sell"},
|
||||
//explosions and muzzle flash
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4011", "4011", Path.Combine(PathToImages, "rifleicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4012", "4012", Path.Combine(PathToImages, "bazookaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4013", "4013", Path.Combine(PathToImages, "engineericon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4014", "4014", Path.Combine(PathToImages, "thumpericon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4015", "4015", Path.Combine(PathToImages, "sadaukaricon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4016", "4016", Path.Combine(PathToImages, "trikeicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4017", "4017", Path.Combine(PathToImages, "raidericon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4018", "4018", Path.Combine(PathToImages, "quadicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4019", "4019", Path.Combine(PathToImages, "harvestericon")}, // == 4044
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4020", "4020", Path.Combine(PathToImages, "combataicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4021", "4021", Path.Combine(PathToImages, "combathicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4022", "4022", Path.Combine(PathToImages, "combatoicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4023", "4023", Path.Combine(PathToImages, "mcvicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4024", "4024", Path.Combine(PathToImages, "missileicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4025", "4025", Path.Combine(PathToImages, "deviatoricon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4026", "4026", Path.Combine(PathToImages, "siegeicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4027", "4027", Path.Combine(PathToImages, "sonicicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4028", "4028", Path.Combine(PathToImages, "devasticon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4029", "4029", Path.Combine(PathToImages, "carryallicon")}, // == 4030
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4031", "4031", Path.Combine(PathToImages, "orniicon")}, // == 4062
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4032", "4032", Path.Combine(PathToImages, "fremenicon")}, // == 4033
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4034", "4034", Path.Combine(PathToImages, "saboteuricon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4035", "4035", Path.Combine(PathToImages, "deathhandicon")},
|
||||
// "4036..4045 = repetitions
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4046", "4046", Path.Combine(PathToImages, "conyardaicon")}, // == 4049
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4047", "4047", Path.Combine(PathToImages, "conyardhicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4048", "4048", Path.Combine(PathToImages, "conyardoicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4050", "4050", Path.Combine(PathToImages, "4plateicon")}, // == 4051..4052
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4053", "4053", Path.Combine(PathToImages, "6plateicon")}, // == 4054..4055
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4056", "4056", Path.Combine(PathToImages, "pwraicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4057", "4057", Path.Combine(PathToImages, "pwrhicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4058", "4058", Path.Combine(PathToImages, "pwroicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4059", "4059", Path.Combine(PathToImages, "barraicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4060", "4060", Path.Combine(PathToImages, "barrhicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4061", "4061", Path.Combine(PathToImages, "barroicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4063", "4063", Path.Combine(PathToImages, "wallicon")}, // == 4061..4062
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4066", "4066", Path.Combine(PathToImages, "refaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4067", "4067", Path.Combine(PathToImages, "refhicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4068", "4068", Path.Combine(PathToImages, "refoicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4069", "4069", Path.Combine(PathToImages, "turreticon")}, // == 4070..4071
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4072", "4072", Path.Combine(PathToImages, "radaraicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4072", "4072", Path.Combine(PathToImages, "radaraicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4073", "4073", Path.Combine(PathToImages, "radarhicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4074", "4074", Path.Combine(PathToImages, "radaroicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4075", "4075", Path.Combine(PathToImages, "rturreticon")}, // == 4076..4077
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4078", "4078", Path.Combine(PathToImages, "hightechaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4079", "4079", Path.Combine(PathToImages, "hightechhicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4080", "4080", Path.Combine(PathToImages, "hightechoicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4081", "4081", Path.Combine(PathToImages, "lightaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4082", "4082", Path.Combine(PathToImages, "lighthicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4083", "4083", Path.Combine(PathToImages, "lightoicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4084", "4084", Path.Combine(PathToImages, "siloaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4085", "4085", Path.Combine(PathToImages, "silohicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4086", "4086", Path.Combine(PathToImages, "silooicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4087", "4087", Path.Combine(PathToImages, "heavyaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4088", "4088", Path.Combine(PathToImages, "heavyhicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4089", "4089", Path.Combine(PathToImages, "heavyoicon")},
|
||||
// 4090 == orniicon
|
||||
// 4091 == heavyhicon
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4092", "4092", Path.Combine(PathToImages, "starportaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4093", "4093", Path.Combine(PathToImages, "starporthicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4094", "4094", Path.Combine(PathToImages, "starportoicon")},
|
||||
// 4095 = orniicon
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4096", "4096", Path.Combine(PathToImages, "repairaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4097", "4097", Path.Combine(PathToImages, "repairhicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4098", "4098", Path.Combine(PathToImages, "repairoicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4099", "4099", Path.Combine(PathToImages, "researchaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4100", "4100", Path.Combine(PathToImages, "researchhicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4101", "4101", Path.Combine(PathToImages, "researchoicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4102", "4102", Path.Combine(PathToImages, "palaceaicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4103", "4103", Path.Combine(PathToImages, "palacehicon")},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4104", "4104", Path.Combine(PathToImages, "palaceoicon")},
|
||||
// 4105 = orniicon
|
||||
// 4106..4107 = radaraicon
|
||||
// 4108 = conyardaicon
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4109", "4150", Path.Combine(PathToImages, "conmake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4151", "4174", Path.Combine(PathToImages, "wtrpmake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4175", "4194", Path.Combine(PathToImages, "barramake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4231", "4253", Path.Combine(PathToImages, "refmake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4254", "4273", Path.Combine(PathToImages, "radarmake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4274", "4294", Path.Combine(PathToImages, "highmake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4295", "4312", Path.Combine(PathToImages, "lightmake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4313", "4327", Path.Combine(PathToImages, "silomake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4328", "4346", Path.Combine(PathToImages, "heavymake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4347", "4369", Path.Combine(PathToImages, "starportmake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4370", "4390", Path.Combine(PathToImages, "repairmake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4391", "4412", Path.Combine(PathToImages, "researchmake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4413", "4435", Path.Combine(PathToImages, "palacemake"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4436", "4449", Path.Combine(PathToImages, "cranea"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4450", "4463", Path.Combine(PathToImages, "craneh"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4463", "4477", Path.Combine(PathToImages, "craneo"), "--building"},
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4760", "4819", Path.Combine(PathToImages, "windtrap_anim"), "--building"}, //?
|
||||
new string[] {"--r8", PathToDataR8, PathToPalette, "4820", "4840", Path.Combine(PathToImages, "missile_launch"), "--building"},
|
||||
new string[] {"--r8", Path.Combine(Platform.SupportDir, "Content/d2k/MOUSE.R8"), PathToPalette, "0", "264", Path.Combine(PathToImages, "mouse"), "--transparent"},
|
||||
new string[] {"--r8", Path.Combine(Platform.SupportDir, "Content/d2k/BLOXBASE.R8"), PathToPalette, "0", "799", Path.Combine(PathToImages, "BASE"), "--tileset"},
|
||||
new string[] {"--r8", Path.Combine(Platform.SupportDir, "Content/d2k/BLOXBASE.R8"), PathToPalette, "748", "749", Path.Combine(PathToImages, "spice0")},
|
||||
};
|
||||
|
||||
var SHPsToCreate = new string[][]
|
||||
{
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "overlay.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "crates.png"), "32"},
|
||||
//new string[] {"--shp", Path.Combine(PathToImages, "shadow.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "spicebloom.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rockcrater1.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rockcrater2.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "sandcrater1.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "sandcrater2.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rifle.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rifledeath.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rocket.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "fremen.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "sardaukar.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "engineer.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "thumper.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "missile.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "trike.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "quad.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "harvester.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "combata.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "siege.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "dmcv.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "sonic.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "combataturret.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "siegeturret.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "carryall.png"), "64"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "orni.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "combath.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "devast.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "combathturret.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "deathhandmissile.png"), "24"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "saboteur.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "deviator.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "raider.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "combato.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "combatoturret.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "frigate.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "heavya.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "radara.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "pwra.png"), "64"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "barra.png"), "80"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "wall.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "conyarda.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "refa.png"), "120"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "hightecha.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "siloa.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "repaira.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "guntower.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "gunturret.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rockettower.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rocketturreta.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "researcha.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "starporta.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "lighta.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "palacea.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "heavyh.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "radarh.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "pwrh.png"), "64"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "barrh.png"), "64"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "conyardh.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "refh.png"), "120"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "hightechh.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "siloh.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "repairh.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "gunturreth.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rocketturreth.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "researchh.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "starporth.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "lighth.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "palaceh.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "heavyo.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "radaro.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "pwro.png"), "64"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "barro.png"), "64"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "conyardo.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "refo.png"), "120"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "hightecho.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "siloo.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "repairo.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "gunturreto.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rocketturreto.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "researcho.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "starporto.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "lighto.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "palaceo.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "sandwormmouth.png"), "68"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "sandwormdust.png"), "68"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "wormsigns1.png"), "16"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "wormsigns2.png"), "16"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "wormsigns3.png"), "16"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "wormsigns4.png"), "16"},
|
||||
//new string[] {"--shp", Path.Combine(PathToImages, "sell.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rifleicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "bazookaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "engineericon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "thumpericon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "sadaukaricon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "trikeicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "raidericon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "quadicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "harvestericon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "combataicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "combathicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "combatoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "mcvicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "missileicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "deviatoricon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "siegeicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "sonicicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "devasticon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "carryallicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "orniicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "fremenicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "saboteuricon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "deathhandicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "conyardaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "conyardhicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "conyardoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "4plateicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "6plateicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "pwraicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "pwrhicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "pwroicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "barraicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "barrhicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "barroicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "wallicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "refaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "refhicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "refoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "turreticon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "radaraicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "radarhicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "radaroicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "rturreticon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "hightechaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "hightechhicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "hightechoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "lightaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "lighthicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "lightoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "siloaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "silohicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "silooicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "heavyaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "heavyhicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "heavyoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "starportaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "starporthicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "starportoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "repairaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "repairhicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "repairoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "researchaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "researchhicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "researchoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "palaceaicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "palacehicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "palaceoicon.png"), "60"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "conmake.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "wtrpmake.png"), "64"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "barramake.png"), "80"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "refmake.png"), "120"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "radarmake.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "highmake.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "lightmake.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "silomake.png"), "32"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "heavymake.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "starportmake.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "repairmake.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "researchmake.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "palacemake.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "cranea.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "craneh.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "craneo.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "windtrap_anim.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "missile_launch.png"), "96"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "mouse.png"), "48"},
|
||||
new string[] {"--shp", Path.Combine(PathToImages, "spice0.png"), "32"},
|
||||
};
|
||||
|
||||
var onError = (Action<string>)(s => Game.RunAfterTick(() =>
|
||||
{
|
||||
statusLabel.GetText = () => "Error: "+s;
|
||||
backButton.IsDisabled = () => false;
|
||||
retryButton.IsDisabled = () => false;
|
||||
}));
|
||||
|
||||
var t = new Thread( _ =>
|
||||
{
|
||||
try
|
||||
{
|
||||
for (int i = 0; i < ExtractGameFiles.Length; i++)
|
||||
{
|
||||
progressBar.Percentage = i*100/ExtractGameFiles.Count();
|
||||
statusLabel.GetText = () => "Extracting...";
|
||||
Utility.Command.ConvertR8ToPng(ExtractGameFiles[i]);
|
||||
}
|
||||
|
||||
for (int i = 0; i < SHPsToCreate.Length; i++)
|
||||
{
|
||||
progressBar.Percentage = i*100/SHPsToCreate.Count();
|
||||
statusLabel.GetText = () => "Converting...";
|
||||
Utility.Command.ConvertPngToShp(SHPsToCreate[i]);
|
||||
File.Delete(SHPsToCreate[i][1]);
|
||||
}
|
||||
|
||||
File.Delete(Path.Combine(PathToImages, "BASE.tsx"));
|
||||
File.Copy("mods/d2k/tilesets/BASE.tsx", Path.Combine(PathToImages, "BASE.tsx"));
|
||||
// this is ugly: a GUI will open and close immediately after some delay
|
||||
Process.Start("OpenRA.TilesetBuilder.exe", Path.Combine(PathToImages, "BASE.png")+" 32 --export Content/d2k/Tilesets");
|
||||
|
||||
Game.RunAfterTick(() =>
|
||||
{
|
||||
progressBar.Percentage = 100;
|
||||
statusLabel.GetText = () => "Extraction and conversion complete.";
|
||||
backButton.IsDisabled = () => false;
|
||||
});
|
||||
}
|
||||
catch
|
||||
{
|
||||
onError("Installation failed");
|
||||
}
|
||||
}) { IsBackground = true };
|
||||
t.Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
127
OpenRA.Mods.D2k/Widgets/Logic/D2kInstallFromCDLogic.cs
Normal file
@@ -0,0 +1,127 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* 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,
|
||||
* see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
using OpenRA.FileFormats;
|
||||
using OpenRA.FileFormats.Graphics;
|
||||
using OpenRA.Widgets;
|
||||
using OpenRA.Utility;
|
||||
|
||||
namespace OpenRA.Mods.D2k.Widgets.Logic
|
||||
{
|
||||
public class D2kInstallFromCDLogic
|
||||
{
|
||||
Widget panel;
|
||||
ProgressBarWidget progressBar;
|
||||
LabelWidget statusLabel;
|
||||
ButtonWidget retryButton, backButton;
|
||||
Widget installingContainer, insertDiskContainer;
|
||||
|
||||
[ObjectCreator.UseCtor]
|
||||
public D2kInstallFromCDLogic(Widget widget)
|
||||
{
|
||||
panel = widget.Get("INSTALL_FROMCD_PANEL");
|
||||
progressBar = panel.Get<ProgressBarWidget>("PROGRESS_BAR");
|
||||
statusLabel = panel.Get<LabelWidget>("STATUS_LABEL");
|
||||
|
||||
backButton = panel.Get<ButtonWidget>("BACK_BUTTON");
|
||||
backButton.OnClick = Ui.CloseWindow;
|
||||
|
||||
retryButton = panel.Get<ButtonWidget>("RETRY_BUTTON");
|
||||
retryButton.OnClick = CheckForDisk;
|
||||
|
||||
installingContainer = panel.Get("INSTALLING");
|
||||
insertDiskContainer = panel.Get("INSERT_DISK");
|
||||
CheckForDisk();
|
||||
}
|
||||
|
||||
public static bool IsValidDisk(string diskRoot)
|
||||
{
|
||||
var files = new string[][] {
|
||||
new [] { diskRoot, "music", "ambush.aud" },
|
||||
new [] { diskRoot, "setup", "setup.z" },
|
||||
};
|
||||
|
||||
return files.All(f => File.Exists(f.Aggregate(Path.Combine)));
|
||||
}
|
||||
|
||||
void CheckForDisk()
|
||||
{
|
||||
var path = InstallUtils.GetMountedDisk(IsValidDisk);
|
||||
|
||||
if (path != null)
|
||||
Install(path);
|
||||
else
|
||||
{
|
||||
insertDiskContainer.IsVisible = () => true;
|
||||
installingContainer.IsVisible = () => false;
|
||||
}
|
||||
}
|
||||
|
||||
void Install(string source)
|
||||
{
|
||||
backButton.IsDisabled = () => true;
|
||||
retryButton.IsDisabled = () => true;
|
||||
insertDiskContainer.IsVisible = () => false;
|
||||
installingContainer.IsVisible = () => true;
|
||||
|
||||
var dest = new string[] { Platform.SupportDir, "Content", "d2k", "Music" }.Aggregate(Path.Combine);
|
||||
var copyFiles = new string[] { "music/ambush.aud", "music/arakatak.aud", "music/atregain.aud", "music/entordos.aud", "music/fightpwr.aud", "music/fremen.aud", "music/hark_bat.aud", "music/landsand.aud", "music/options.aud", "music/plotting.aud", "music/risehark.aud", "music/robotix.aud", "music/score.aud", "music/soldappr.aud", "music/spicesct.aud", "music/undercon.aud", "music/waitgame.aud" };
|
||||
|
||||
// TODO: won't work yet:
|
||||
//var extractPackage = "setup/setup.z";
|
||||
//var extractFiles = new string[] { "DATA.R8", "MOUSE.R8", "BLOXBASE.R8", "BLOXBAT.R8", "BLOXBGBS.R8", "BLOXICE.R8", "BLOXTREE.R8", "BLOXWAST.R8" };
|
||||
|
||||
var installCounter = 0;
|
||||
var installTotal = copyFiles.Count(); //+ extractFiles.Count();
|
||||
|
||||
var onProgress = (Action<string>)(s => Game.RunAfterTick(() =>
|
||||
{
|
||||
progressBar.Percentage = installCounter*100/installTotal;
|
||||
installCounter++;
|
||||
|
||||
statusLabel.GetText = () => s;
|
||||
}));
|
||||
|
||||
var onError = (Action<string>)(s => Game.RunAfterTick(() =>
|
||||
{
|
||||
statusLabel.GetText = () => "Error: "+s;
|
||||
backButton.IsDisabled = () => false;
|
||||
retryButton.IsDisabled = () => false;
|
||||
}));
|
||||
|
||||
var t = new Thread( _ =>
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!InstallUtils.CopyFiles(source, copyFiles, dest, onProgress, onError))
|
||||
return;
|
||||
|
||||
//if (!InstallUtils.ExtractFromPackage(source, extractPackage, extractFiles, dest, onProgress, onError))
|
||||
// return;
|
||||
|
||||
Game.RunAfterTick(() =>
|
||||
{
|
||||
statusLabel.GetText = () => "Music has been copied.";
|
||||
backButton.IsDisabled = () => false;
|
||||
});
|
||||
}
|
||||
catch
|
||||
{
|
||||
onError("Installation failed");
|
||||
}
|
||||
}) { IsBackground = true };
|
||||
t.Start();
|
||||
}
|
||||
}
|
||||
}
|
||||
38
OpenRA.Mods.D2k/Widgets/Logic/D2kInstallLogic.cs
Normal file
@@ -0,0 +1,38 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* 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,
|
||||
* see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using OpenRA.Widgets;
|
||||
|
||||
namespace OpenRA.Mods.D2k.Widgets.Logic
|
||||
{
|
||||
public class D2kInstallLogic
|
||||
{
|
||||
[ObjectCreator.UseCtor]
|
||||
public D2kInstallLogic(Widget widget, Dictionary<string,string> installData)
|
||||
{
|
||||
var panel = widget.Get("INSTALL_PANEL");
|
||||
var args = new WidgetArgs()
|
||||
{
|
||||
{ "afterInstall", () => { Ui.CloseWindow(); Game.Exit(); } },
|
||||
{ "installData", installData }
|
||||
};
|
||||
|
||||
panel.Get<ButtonWidget>("COPY_BUTTON").OnClick = () =>
|
||||
Ui.OpenWindow("INSTALL_FROMCD_PANEL", args);
|
||||
|
||||
panel.Get<ButtonWidget>("EXTRACT_BUTTON").OnClick = () =>
|
||||
Ui.OpenWindow("EXTRACT_GAMEFILES_PANEL", args);
|
||||
|
||||
panel.Get<ButtonWidget>("QUIT_BUTTON").OnClick = Game.Exit;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -34,7 +34,7 @@ namespace OpenRA.Mods.RA.AI
|
||||
public readonly int SquadSize = 8;
|
||||
public readonly int AssignRolesInterval = 20;
|
||||
public readonly string RallypointTestBuilding = "fact"; // temporary hack to maintain previous rallypoint behavior.
|
||||
public readonly string[] UnitQueues = { "Vehicle", "Infantry", "Plane" };
|
||||
public readonly string[] UnitQueues = {"Vehicle", "Infantry", "Plane"};
|
||||
public readonly bool ShouldRepairBuildings = true;
|
||||
|
||||
string IBotInfo.Name { get { return this.Name; } }
|
||||
@@ -182,7 +182,7 @@ namespace OpenRA.Mods.RA.AI
|
||||
|
||||
ticks++;
|
||||
|
||||
if (ticks == 10)
|
||||
if (ticks == 1)
|
||||
DeployMcv(self);
|
||||
|
||||
if (ticks % feedbackTime == 0)
|
||||
@@ -261,14 +261,14 @@ namespace OpenRA.Mods.RA.AI
|
||||
assignRolesTicks = Info.AssignRolesInterval;
|
||||
|
||||
var newUnits = self.World.ActorsWithTrait<IMove>()
|
||||
.Where(a => a.Actor.Owner == p && a.Actor.Info != Rules.Info["mcv"]
|
||||
.Where(a => a.Actor.Owner == p && !a.Actor.HasTrait<BaseBuilding>()
|
||||
&& !activeUnits.Contains(a.Actor))
|
||||
.Select(a => a.Actor).ToArray();
|
||||
|
||||
foreach (var a in newUnits)
|
||||
{
|
||||
BotDebug("AI: Found a newly built unit");
|
||||
if (a.Info == Rules.Info["harv"])
|
||||
if (a.HasTrait<Harvester>())
|
||||
world.IssueOrder( new Order( "Harvest", a, false ) );
|
||||
else
|
||||
unitsHangingAroundTheBase.Add(a);
|
||||
@@ -419,7 +419,7 @@ namespace OpenRA.Mods.RA.AI
|
||||
{
|
||||
/* find our mcv and deploy it */
|
||||
var mcv = self.World.Actors
|
||||
.FirstOrDefault(a => a.Owner == p && a.Info == Rules.Info["mcv"]);
|
||||
.FirstOrDefault(a => a.Owner == p && a.HasTrait<BaseBuilding>());
|
||||
|
||||
if (mcv != null)
|
||||
{
|
||||
@@ -427,7 +427,7 @@ namespace OpenRA.Mods.RA.AI
|
||||
world.IssueOrder(new Order("DeployTransform", mcv, false));
|
||||
}
|
||||
else
|
||||
BotDebug("AI: Can't find the MCV.");
|
||||
BotDebug("AI: Can't find BaseBuildUnit.");
|
||||
}
|
||||
|
||||
internal IEnumerable<ProductionQueue> FindQueues(string category)
|
||||
|
||||
326
OpenRA.TilesetBuilder/Form1.Designer.cs
generated
@@ -1,326 +0,0 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2011 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
|
||||
|
||||
namespace OpenRA.TilesetBuilder
|
||||
{
|
||||
partial class Form1
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
|
||||
this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.surface1 = new OpenRA.TilesetBuilder.Surface();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton14 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripButton4 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton12 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton11 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton10 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton9 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton8 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton7 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton6 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton5 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton13 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripContainer1.ContentPanel.SuspendLayout();
|
||||
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
|
||||
this.toolStripContainer1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStripContainer1
|
||||
//
|
||||
//
|
||||
// toolStripContainer1.ContentPanel
|
||||
//
|
||||
this.toolStripContainer1.ContentPanel.Controls.Add(this.panel1);
|
||||
this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(745, 571);
|
||||
this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.toolStripContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStripContainer1.Name = "toolStripContainer1";
|
||||
this.toolStripContainer1.Size = new System.Drawing.Size(745, 596);
|
||||
this.toolStripContainer1.TabIndex = 0;
|
||||
this.toolStripContainer1.Text = "toolStripContainer1";
|
||||
//
|
||||
// toolStripContainer1.TopToolStripPanel
|
||||
//
|
||||
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.AutoScroll = true;
|
||||
this.panel1.Controls.Add(this.surface1);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(745, 571);
|
||||
this.panel1.TabIndex = 0;
|
||||
//
|
||||
// surface1
|
||||
//
|
||||
this.surface1.BackColor = System.Drawing.Color.Black;
|
||||
this.surface1.Location = new System.Drawing.Point(0, 0);
|
||||
this.surface1.Name = "surface1";
|
||||
this.surface1.Size = new System.Drawing.Size(598, 372);
|
||||
this.surface1.TabIndex = 2;
|
||||
this.surface1.Text = "surface1";
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None;
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButton2,
|
||||
this.toolStripButton14,
|
||||
this.toolStripButton3,
|
||||
this.toolStripSeparator1,
|
||||
this.toolStripButton4,
|
||||
this.toolStripButton12,
|
||||
this.toolStripButton11,
|
||||
this.toolStripButton10,
|
||||
this.toolStripButton9,
|
||||
this.toolStripButton8,
|
||||
this.toolStripButton7,
|
||||
this.toolStripButton6,
|
||||
this.toolStripButton5,
|
||||
this.toolStripButton13,
|
||||
this.toolStripButton1});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(3, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(602, 25);
|
||||
this.toolStrip1.TabIndex = 0;
|
||||
//
|
||||
// toolStripButton2
|
||||
//
|
||||
this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
|
||||
this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton2.Name = "toolStripButton2";
|
||||
this.toolStripButton2.Size = new System.Drawing.Size(51, 22);
|
||||
this.toolStripButton2.Text = "Save";
|
||||
this.toolStripButton2.Click += new System.EventHandler(this.SaveClicked);
|
||||
//
|
||||
// toolStripButton14
|
||||
//
|
||||
this.toolStripButton14.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton14.Image")));
|
||||
this.toolStripButton14.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton14.Name = "toolStripButton14";
|
||||
this.toolStripButton14.Size = new System.Drawing.Size(60, 22);
|
||||
this.toolStripButton14.Text = "Export";
|
||||
this.toolStripButton14.Click += new System.EventHandler(this.ExportClicked);
|
||||
//
|
||||
// toolStripButton3
|
||||
//
|
||||
this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image")));
|
||||
this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton3.Name = "toolStripButton3";
|
||||
this.toolStripButton3.Size = new System.Drawing.Size(104, 22);
|
||||
this.toolStripButton3.Text = "Show Overlays";
|
||||
this.toolStripButton3.Click += new System.EventHandler(this.ShowOverlaysClicked);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
|
||||
//
|
||||
// toolStripButton4
|
||||
//
|
||||
this.toolStripButton4.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton4.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton4.Image")));
|
||||
this.toolStripButton4.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton4.Name = "toolStripButton4";
|
||||
this.toolStripButton4.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton4.Tag = "0";
|
||||
this.toolStripButton4.Text = "tt0";
|
||||
this.toolStripButton4.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStripButton12
|
||||
//
|
||||
this.toolStripButton12.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton12.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton12.Image")));
|
||||
this.toolStripButton12.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton12.Name = "toolStripButton12";
|
||||
this.toolStripButton12.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton12.Tag = "1";
|
||||
this.toolStripButton12.Text = "tt1";
|
||||
this.toolStripButton12.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStripButton11
|
||||
//
|
||||
this.toolStripButton11.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton11.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton11.Image")));
|
||||
this.toolStripButton11.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton11.Name = "toolStripButton11";
|
||||
this.toolStripButton11.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton11.Tag = "2";
|
||||
this.toolStripButton11.Text = "tt2";
|
||||
this.toolStripButton11.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStripButton10
|
||||
//
|
||||
this.toolStripButton10.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton10.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton10.Image")));
|
||||
this.toolStripButton10.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton10.Name = "toolStripButton10";
|
||||
this.toolStripButton10.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton10.Tag = "3";
|
||||
this.toolStripButton10.Text = "tt3";
|
||||
this.toolStripButton10.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStripButton9
|
||||
//
|
||||
this.toolStripButton9.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton9.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton9.Image")));
|
||||
this.toolStripButton9.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton9.Name = "toolStripButton9";
|
||||
this.toolStripButton9.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton9.Tag = "4";
|
||||
this.toolStripButton9.Text = "tt4";
|
||||
this.toolStripButton9.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStripButton8
|
||||
//
|
||||
this.toolStripButton8.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton8.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton8.Image")));
|
||||
this.toolStripButton8.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton8.Name = "toolStripButton8";
|
||||
this.toolStripButton8.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton8.Tag = "5";
|
||||
this.toolStripButton8.Text = "tt5";
|
||||
this.toolStripButton8.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStripButton7
|
||||
//
|
||||
this.toolStripButton7.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton7.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton7.Image")));
|
||||
this.toolStripButton7.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton7.Name = "toolStripButton7";
|
||||
this.toolStripButton7.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton7.Tag = "6";
|
||||
this.toolStripButton7.Text = "tt6";
|
||||
this.toolStripButton7.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStripButton6
|
||||
//
|
||||
this.toolStripButton6.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton6.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton6.Image")));
|
||||
this.toolStripButton6.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton6.Name = "toolStripButton6";
|
||||
this.toolStripButton6.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton6.Tag = "7";
|
||||
this.toolStripButton6.Text = "tt7";
|
||||
this.toolStripButton6.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStripButton5
|
||||
//
|
||||
this.toolStripButton5.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton5.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton5.Image")));
|
||||
this.toolStripButton5.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton5.Name = "toolStripButton5";
|
||||
this.toolStripButton5.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton5.Tag = "8";
|
||||
this.toolStripButton5.Text = "tt8";
|
||||
this.toolStripButton5.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStripButton13
|
||||
//
|
||||
this.toolStripButton13.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton13.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton13.Image")));
|
||||
this.toolStripButton13.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton13.Name = "toolStripButton13";
|
||||
this.toolStripButton13.Size = new System.Drawing.Size(25, 22);
|
||||
this.toolStripButton13.Tag = "9";
|
||||
this.toolStripButton13.Text = "tt9";
|
||||
//
|
||||
// toolStripButton1
|
||||
//
|
||||
this.toolStripButton1.Checked = true;
|
||||
this.toolStripButton1.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.toolStripButton1.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Text;
|
||||
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
|
||||
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton1.Name = "toolStripButton1";
|
||||
this.toolStripButton1.Size = new System.Drawing.Size(88, 22);
|
||||
this.toolStripButton1.Text = "Template Tool";
|
||||
this.toolStripButton1.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// Form1
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(745, 596);
|
||||
this.Controls.Add(this.toolStripContainer1);
|
||||
this.Name = "Form1";
|
||||
this.Text = "Tileset Builder";
|
||||
this.toolStripContainer1.ContentPanel.ResumeLayout(false);
|
||||
this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false);
|
||||
this.toolStripContainer1.TopToolStripPanel.PerformLayout();
|
||||
this.toolStripContainer1.ResumeLayout(false);
|
||||
this.toolStripContainer1.PerformLayout();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStripContainer toolStripContainer1;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private Surface surface1;
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton2;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton3;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton4;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton12;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton11;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton10;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton9;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton8;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton7;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton6;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton5;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton13;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton14;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,278 +0,0 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2011 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;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using OpenRA.FileFormats;
|
||||
|
||||
namespace OpenRA.TilesetBuilder
|
||||
{
|
||||
public partial class Form1 : Form
|
||||
{
|
||||
string srcfile;
|
||||
int size;
|
||||
|
||||
public Form1( string src, int size )
|
||||
{
|
||||
srcfile = src;
|
||||
this.size = size;
|
||||
InitializeComponent();
|
||||
surface1.TileSize = size;
|
||||
surface1.Image = (Bitmap)Image.FromFile(src);
|
||||
surface1.Image.SetResolution(96, 96); // people keep being noobs about DPI, and GDI+ cares.
|
||||
surface1.TerrainTypes = new int[surface1.Image.Width / size, surface1.Image.Height / size]; /* all passable by default */
|
||||
surface1.Templates = new List<Template>();
|
||||
surface1.Size = surface1.Image.Size;
|
||||
|
||||
Load();
|
||||
}
|
||||
|
||||
public new void Load()
|
||||
{
|
||||
try
|
||||
{
|
||||
var doc = new XmlDocument();
|
||||
doc.Load(Path.ChangeExtension(srcfile, "tsx"));
|
||||
|
||||
foreach (var e in doc.SelectNodes("//terrain").OfType<XmlElement>())
|
||||
surface1.TerrainTypes[
|
||||
int.Parse(e.GetAttribute("x")),
|
||||
int.Parse(e.GetAttribute("y"))] = int.Parse(e.GetAttribute("t"));
|
||||
|
||||
foreach (var e in doc.SelectNodes("//template").OfType<XmlElement>())
|
||||
surface1.Templates.Add(new Template
|
||||
{
|
||||
Cells = e.SelectNodes("./cell").OfType<XmlElement>()
|
||||
.Select(f => new int2(int.Parse(f.GetAttribute("x")), int.Parse(f.GetAttribute("y"))))
|
||||
.ToDictionary(a => a, a => true)
|
||||
});
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
using (var w = XmlWriter.Create(Path.ChangeExtension(srcfile, "tsx"),
|
||||
new XmlWriterSettings { Indent = true, IndentChars = " " }))
|
||||
{
|
||||
w.WriteStartDocument();
|
||||
w.WriteStartElement("tileset");
|
||||
|
||||
for( var i = 0; i <= surface1.TerrainTypes.GetUpperBound(0); i++ )
|
||||
for( var j = 0; j <= surface1.TerrainTypes.GetUpperBound(1); j++ )
|
||||
if (surface1.TerrainTypes[i, j] != 0)
|
||||
{
|
||||
w.WriteStartElement("terrain");
|
||||
w.WriteAttributeString("x", i.ToString());
|
||||
w.WriteAttributeString("y", j.ToString());
|
||||
w.WriteAttributeString("t", surface1.TerrainTypes[i, j].ToString());
|
||||
w.WriteEndElement();
|
||||
}
|
||||
|
||||
foreach (var t in surface1.Templates)
|
||||
{
|
||||
w.WriteStartElement("template");
|
||||
|
||||
foreach (var c in t.Cells.Keys)
|
||||
{
|
||||
w.WriteStartElement("cell");
|
||||
w.WriteAttributeString("x", c.X.ToString());
|
||||
w.WriteAttributeString("y", c.Y.ToString());
|
||||
w.WriteEndElement();
|
||||
}
|
||||
|
||||
w.WriteEndElement();
|
||||
}
|
||||
|
||||
w.WriteEndElement();
|
||||
w.WriteEndDocument();
|
||||
}
|
||||
}
|
||||
|
||||
void TerrainTypeSelectorClicked(object sender, EventArgs e)
|
||||
{
|
||||
surface1.InputMode = (sender as ToolStripButton).Tag as string;
|
||||
foreach (var tsb in (sender as ToolStripButton).Owner.Items.OfType<ToolStripButton>())
|
||||
tsb.Checked = false;
|
||||
(sender as ToolStripButton).Checked = true;
|
||||
}
|
||||
|
||||
void SaveClicked(object sender, EventArgs e) { Save(); }
|
||||
void ShowOverlaysClicked(object sender, EventArgs e) { surface1.ShowTerrainTypes ^= true; }
|
||||
|
||||
void ExportClicked(object sender, EventArgs e)
|
||||
{
|
||||
var dir = Path.Combine(Path.GetDirectoryName(srcfile), "output");
|
||||
Directory.CreateDirectory(dir);
|
||||
|
||||
// Create a Tileset definition
|
||||
// Todo: Pull this info from the gui
|
||||
var tilesetFile = "tileset-arrakis.yaml";
|
||||
//var mixFile = "arrakis.mix";
|
||||
var tileset = new TileSet()
|
||||
{
|
||||
Name = "Arrakis",
|
||||
Id = "ARRAKIS",
|
||||
TileSize = size,
|
||||
Palette = "arrakis.pal",
|
||||
Extensions = new string[] {".arr", ".shp"}
|
||||
};
|
||||
|
||||
// List of files to add to the mix file
|
||||
List<string> fileList = new List<string>();
|
||||
|
||||
// Export palette (use the embedded palette)
|
||||
var p = surface1.Image.Palette.Entries.ToList();
|
||||
fileList.Add(ExportPalette(p, Path.Combine(dir, tileset.Palette)));
|
||||
|
||||
// Export tile artwork
|
||||
foreach (var t in surface1.Templates)
|
||||
fileList.Add(ExportTemplate(t, surface1.Templates.IndexOf(t), tileset.Extensions.First(), dir));
|
||||
|
||||
// Add the terraintypes
|
||||
// Todo: add support for multiple/different terraintypes
|
||||
var terraintype = new TerrainTypeInfo()
|
||||
{
|
||||
Type = "Clear",
|
||||
AcceptSmudge = true,
|
||||
IsWater = false,
|
||||
Color = Color.White
|
||||
};
|
||||
tileset.Terrain.Add("Clear", terraintype);
|
||||
|
||||
// Add the templates
|
||||
ushort cur = 0;
|
||||
foreach (var tp in surface1.Templates)
|
||||
{
|
||||
var template = new TileTemplate()
|
||||
{
|
||||
Id = cur,
|
||||
Image = "t{0:00}".F(cur),
|
||||
Size = new int2(tp.Width,tp.Height),
|
||||
};
|
||||
|
||||
// Todo: add support for different terraintypes
|
||||
// Todo: restrict cells? this doesn't work: .Where( c => surface1.TerrainTypes[c.Key.X, c.Key.Y] != 0 )
|
||||
foreach (var t in tp.Cells)
|
||||
template.Tiles.Add((byte)((t.Key.X - tp.Left) + tp.Width * (t.Key.Y - tp.Top)), "Clear");
|
||||
|
||||
tileset.Templates.Add(cur, template);
|
||||
cur++;
|
||||
}
|
||||
|
||||
tileset.Save(Path.Combine(dir, tilesetFile));
|
||||
throw new NotImplementedException("NotI");
|
||||
//PackageWriter.CreateMix(Path.Combine(dir, mixFile),fileList);
|
||||
/*
|
||||
// Cleanup
|
||||
foreach (var file in fileList)
|
||||
File.Delete(file);
|
||||
|
||||
Console.WriteLine("Finished export");
|
||||
*/
|
||||
}
|
||||
|
||||
string ExportPalette(List<Color> p, string file)
|
||||
{
|
||||
while (p.Count < 256) p.Add(Color.Black); // pad the palette out with extra blacks
|
||||
var paletteData = p.Take(256).SelectMany(
|
||||
c => new byte[] { (byte)(c.R >> 2), (byte)(c.G >> 2), (byte)(c.B >> 2) }).ToArray();
|
||||
File.WriteAllBytes(file, paletteData);
|
||||
return file;
|
||||
}
|
||||
|
||||
string ExportTemplate(Template t, int n, string suffix, string dir)
|
||||
{
|
||||
var TileSize = size;
|
||||
var filename = Path.Combine(dir, "t{0:00}{1}".F(n, suffix));
|
||||
var totalTiles = t.Width * t.Height;
|
||||
|
||||
var ms = new MemoryStream();
|
||||
using (var bw = new BinaryWriter(ms))
|
||||
{
|
||||
bw.Write((ushort)TileSize);
|
||||
bw.Write((ushort)TileSize);
|
||||
bw.Write((uint)totalTiles);
|
||||
bw.Write((ushort)t.Width);
|
||||
bw.Write((ushort)t.Height);
|
||||
bw.Write((uint)0); // filesize placeholder
|
||||
bw.Flush();
|
||||
bw.Write((uint)ms.Position + 24); // image start
|
||||
bw.Write((uint)0); // 0 (32bits)
|
||||
bw.Write((uint)0x2c730f8a); // magic?
|
||||
bw.Write((uint)0); // flags start
|
||||
bw.Write((uint)0); // walk start
|
||||
bw.Write((uint)0); // index start
|
||||
|
||||
var src = surface1.Image;
|
||||
|
||||
var data = src.LockBits(src.Bounds(), ImageLockMode.ReadOnly, PixelFormat.Format8bppIndexed);
|
||||
|
||||
unsafe
|
||||
{
|
||||
byte* p = (byte*)data.Scan0;
|
||||
|
||||
for (var v = 0; v < t.Height; v++)
|
||||
for (var u = 0; u < t.Width; u++)
|
||||
{
|
||||
if (t.Cells.ContainsKey(new int2(u + t.Left, v + t.Top)))
|
||||
{
|
||||
byte* q = p + data.Stride * TileSize * (v + t.Top) + TileSize * (u + t.Left);
|
||||
for (var j = 0; j < TileSize; j++)
|
||||
for (var i = 0; i < TileSize; i++)
|
||||
bw.Write(q[i + j * data.Stride]);
|
||||
}
|
||||
else
|
||||
for (var x = 0; x < TileSize * TileSize; x++)
|
||||
bw.Write((byte)0); /* todo: don't fill with air */
|
||||
}
|
||||
}
|
||||
|
||||
src.UnlockBits(data);
|
||||
|
||||
bw.Flush();
|
||||
var indexStart = ms.Position;
|
||||
for (var v = 0; v < t.Height; v++)
|
||||
for (var u = 0; u < t.Width; u++)
|
||||
bw.Write(t.Cells.ContainsKey(new int2(u + t.Left, v + t.Top))
|
||||
? (byte)(u + t.Width * v)
|
||||
: (byte)0xff);
|
||||
|
||||
bw.Flush();
|
||||
|
||||
var flagsStart = ms.Position;
|
||||
for (var x = 0; x < totalTiles; x++ )
|
||||
bw.Write((byte)0);
|
||||
|
||||
bw.Flush();
|
||||
|
||||
var walkStart = ms.Position;
|
||||
for (var x = 0; x < totalTiles; x++)
|
||||
bw.Write((byte)0x8);
|
||||
|
||||
var bytes = ms.ToArray();
|
||||
Array.Copy(BitConverter.GetBytes((uint)bytes.Length), 0, bytes, 12, 4);
|
||||
Array.Copy(BitConverter.GetBytes(flagsStart), 0, bytes, 28, 4);
|
||||
Array.Copy(BitConverter.GetBytes(walkStart), 0, bytes, 32, 4);
|
||||
Array.Copy(BitConverter.GetBytes(indexStart), 0, bytes, 36, 4);
|
||||
|
||||
File.WriteAllBytes(filename, bytes);
|
||||
}
|
||||
|
||||
return filename;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,334 +0,0 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton14.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton4.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton12.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton11.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton10.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton9.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton8.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton7.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton6.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton5.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton13.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAgY0hSTQAAeiYAAICEAAD6AAAAgOgAAHUwAADqYAAAOpgAABdwnLpRPAAAAgxJREFUOE+lkvtL
|
||||
U2EYx+0PEbtpFwnBKPGKiJImGP0gYhIYs1E5GF5gIxkpA00JRSmMEF0ohMh+GaRWYlqabMVcNdS2QpaI
|
||||
VqiDIYhk397vA6fXhCjyhYdzeM/5fp7vczkAdeL2cwho7v/wWzT1zcN+Pwhr51uY2/y41PQaF+wzKKiZ
|
||||
QvaN58g0jyLd5KEUcQbg+84P/Cm2tncQjW3j68YWIqubCC3FcOJc478BAuGoZM6zvoRnakXEruEIjhc4
|
||||
/g5gZop9c+voGAyLbQIfeBZxLL9BA1jzXvuGbWamuKh+GmmVbswE19A59FEBbmoAG7YbsLtm2mZmiml9
|
||||
cvabNDwpz6YB7LYBoMXCumkJr7LOmnnHzBQ/9X2Bo2cOibm1GsBREbAQiYmw/8lnuCeWkVzcgnZlnw1j
|
||||
3HV/wuNXK6i/9x5Hc6wawDlTXHbLJ+LZUBQPRyKwdQdxutwl1h+NLXHh5Ht1ewBHsiwawCW57HyDAfWR
|
||||
dvl0uhZQ1eqX8aVc7EKLqrum651ATLf9OJx5XQM4KmY0xPzZ0hFAiQJnXB0WwME0E3IsL5B17ZlADqWb
|
||||
NYDrOepdlcysmTWWOrxqbceRWtaLk0VO1XW72D5Vckd2gMBfq8zdpmUG62NJvKM4+XyziDk24xmfWoGE
|
||||
s1c0gHPmbrPTpHNJKOCo2G1mZs20zcwUJ5yp1AB5+8/zEwgF5GMVDxh4AAAAAElFTkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
@@ -1,107 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{56B1073B-AE14-499A-BB98-43A8DE9A39CA}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>OpenRA.TilesetBuilder</RootNamespace>
|
||||
<AssemblyName>OpenRA.TilesetBuilder</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>..\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</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.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="Form1.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Form1.Designer.cs">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="Form1.resx">
|
||||
<DependentUpon>Form1.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="Surface.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Template.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">
|
||||
<Project>{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}</Project>
|
||||
<Name>OpenRA.FileFormats</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
||||
<Project>{0DFB103F-2962-400F-8C6D-E2C28CCBA633}</Project>
|
||||
<Name>OpenRA.Game</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="3.5" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProductVersion>9.0.30729</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}</ProjectGuid>
|
||||
<OutputType>WinExe</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>OpenRA.TilesetBuilder</RootNamespace>
|
||||
<AssemblyName>OpenRA.TilesetBuilder2</AssemblyName>
|
||||
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ApplicationIcon>tilesetbuilder_icon copy.ico</ApplicationIcon>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>.</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<UseVSHostingProcess>false</UseVSHostingProcess>
|
||||
<AllowUnsafeBlocks>true</AllowUnsafeBlocks>
|
||||
</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.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="frmBuilder.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="frmBuilder.Designer.cs">
|
||||
<DependentUpon>frmBuilder.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="frmNew.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="frmNew.Designer.cs">
|
||||
<DependentUpon>frmNew.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<EmbeddedResource Include="frmBuilder.resx">
|
||||
<DependentUpon>frmBuilder.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="frmNew.resx">
|
||||
<DependentUpon>frmNew.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Properties\Resources.resx">
|
||||
<Generator>ResXFileCodeGenerator</Generator>
|
||||
<LastGenOutput>Resources.Designer.cs</LastGenOutput>
|
||||
<SubType>Designer</SubType>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="Surface.resx">
|
||||
<DependentUpon>Surface.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<Compile Include="Properties\Resources.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Resources.resx</DependentUpon>
|
||||
</Compile>
|
||||
<None Include="Properties\Settings.settings">
|
||||
<Generator>SettingsSingleFileGenerator</Generator>
|
||||
<LastGenOutput>Settings.Designer.cs</LastGenOutput>
|
||||
</None>
|
||||
<Compile Include="Properties\Settings.Designer.cs">
|
||||
<AutoGen>True</AutoGen>
|
||||
<DependentUpon>Settings.settings</DependentUpon>
|
||||
<DesignTimeSharedInput>True</DesignTimeSharedInput>
|
||||
</Compile>
|
||||
<Compile Include="Surface.cs">
|
||||
<SubType>Component</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Template.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\OpenRA.FileFormats\OpenRA.FileFormats.csproj">
|
||||
<Project>{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}</Project>
|
||||
<Name>OpenRA.FileFormats</Name>
|
||||
</ProjectReference>
|
||||
<ProjectReference Include="..\OpenRA.Game\OpenRA.Game.csproj">
|
||||
<Project>{0DFB103F-2962-400F-8C6D-E2C28CCBA633}</Project>
|
||||
<Name>OpenRA.Game</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="tilesetbuilder_icon copy.ico" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
@@ -1,7 +1,7 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2011 The OpenRA Developers (see AUTHORS)
|
||||
* This file is part of OpenRA, which is free software. It is made
|
||||
* 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.
|
||||
@@ -21,8 +21,18 @@ namespace OpenRA.TilesetBuilder
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(false);
|
||||
Console.WriteLine("{0} {1}",args[0], args[1]);
|
||||
Application.Run(new Form1(args[0], int.Parse(args[1])));
|
||||
//Console.WriteLine("{0} {1} {2} {3}",args[0], args[1], args[2], args[3]);
|
||||
if (args.Length < 1)
|
||||
{
|
||||
Application.Run(new frmBuilder("", "0", false, "Tilesets"));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (args.Contains("--export"))
|
||||
Application.Run(new frmBuilder(args[0], args[1], true, args[3]));
|
||||
else
|
||||
Application.Run(new frmBuilder(args[0], args[1], false, "Tilesets"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,46 +1,36 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2011 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;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("OpenRA.TilesetBuilder")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("OpenRA.TilesetBuilder")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("9efec6a6-74f7-4a7d-a509-aba2aae75bcc")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("OpenRA.TilesetBuilder")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("OpenRA.TilesetBuilder")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2010")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("9efec6a6-74f7-4a7d-a509-aba2aae75bcc")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
|
||||
142
OpenRA.TilesetBuilder/Properties/Resources.Designer.cs
generated
@@ -1,71 +1,71 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.4200
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace OpenRA.TilesetBuilder.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenRA.TilesetBuilder.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.4200
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace OpenRA.TilesetBuilder.Properties
|
||||
{
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
||||
/// </summary>
|
||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
||||
// class via a tool like ResGen or Visual Studio.
|
||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
||||
// with the /str option, or rebuild your VS project.
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
|
||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
internal class Resources
|
||||
{
|
||||
|
||||
private static global::System.Resources.ResourceManager resourceMan;
|
||||
|
||||
private static global::System.Globalization.CultureInfo resourceCulture;
|
||||
|
||||
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
|
||||
internal Resources()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Returns the cached ResourceManager instance used by this class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Resources.ResourceManager ResourceManager
|
||||
{
|
||||
get
|
||||
{
|
||||
if ((resourceMan == null))
|
||||
{
|
||||
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("OpenRA.TilesetBuilder2.Properties.Resources", typeof(Resources).Assembly);
|
||||
resourceMan = temp;
|
||||
}
|
||||
return resourceMan;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Overrides the current thread's CurrentUICulture property for all
|
||||
/// resource lookups using this strongly typed resource class.
|
||||
/// </summary>
|
||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||
internal static global::System.Globalization.CultureInfo Culture
|
||||
{
|
||||
get
|
||||
{
|
||||
return resourceCulture;
|
||||
}
|
||||
set
|
||||
{
|
||||
resourceCulture = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,30 +1,30 @@
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.4200
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace OpenRA.TilesetBuilder.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
//------------------------------------------------------------------------------
|
||||
// <auto-generated>
|
||||
// This code was generated by a tool.
|
||||
// Runtime Version:2.0.50727.4200
|
||||
//
|
||||
// Changes to this file may cause incorrect behavior and will be lost if
|
||||
// the code is regenerated.
|
||||
// </auto-generated>
|
||||
//------------------------------------------------------------------------------
|
||||
|
||||
namespace OpenRA.TilesetBuilder.Properties
|
||||
{
|
||||
|
||||
|
||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
|
||||
internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
|
||||
{
|
||||
|
||||
private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
|
||||
|
||||
public static Settings Default
|
||||
{
|
||||
get
|
||||
{
|
||||
return defaultInstance;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,14 +1,4 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2011 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.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
@@ -18,14 +8,29 @@ namespace OpenRA.TilesetBuilder
|
||||
class Surface : Control
|
||||
{
|
||||
public Bitmap Image;
|
||||
private ImageList ImagesListControl;
|
||||
public int[,] TerrainTypes;
|
||||
public List<Template> Templates = new List<Template>();
|
||||
public bool ShowTerrainTypes = true;
|
||||
private bool bShowTerrainTypes;
|
||||
public string InputMode;
|
||||
public Bitmap[] icon;
|
||||
public int TileSize;
|
||||
//private System.ComponentModel.IContainer components;
|
||||
|
||||
Template CurrentTemplate;
|
||||
|
||||
public bool ShowTerrainTypes
|
||||
{
|
||||
get { return bShowTerrainTypes; }
|
||||
set { bShowTerrainTypes = value; }
|
||||
}
|
||||
|
||||
public ImageList ImagesList
|
||||
{
|
||||
get { return ImagesListControl; }
|
||||
set { ImagesListControl = value; }
|
||||
}
|
||||
|
||||
public Surface()
|
||||
{
|
||||
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
|
||||
@@ -43,17 +48,21 @@ namespace OpenRA.TilesetBuilder
|
||||
|
||||
/* draw the background */
|
||||
e.Graphics.DrawImageUnscaled(Image, 0, 0);
|
||||
|
||||
/* draw terrain type overlays */
|
||||
if (ShowTerrainTypes)
|
||||
{
|
||||
for (var i = 0; i <= TerrainTypes.GetUpperBound(0); i++)
|
||||
for (var j = 0; j <= TerrainTypes.GetUpperBound(1); j++)
|
||||
if (TerrainTypes[i, j] != 0)
|
||||
{
|
||||
e.Graphics.FillRectangle(Brushes.Black, TileSize * i + 10, TileSize * j + 10, 10, 10);
|
||||
e.Graphics.DrawString(TerrainTypes[i, j].ToString(),
|
||||
Font, Brushes.LimeGreen, TileSize * i + 10, TileSize * j + 10);
|
||||
//e.Graphics.FillRectangle(Brushes.Black, TileSize * i + 8, TileSize * j + 8, 16, 16);
|
||||
|
||||
e.Graphics.DrawImage(icon[TerrainTypes[i, j]], TileSize * i + 8, TileSize * j + 8, 16, 16);
|
||||
|
||||
//e.Graphics.DrawString(TerrainTypes[i, j].ToString(),
|
||||
//Font, Brushes.LimeGreen, TileSize * i + 10, TileSize * j + 10);
|
||||
}
|
||||
}
|
||||
|
||||
/* draw template outlines */
|
||||
foreach (var t in Templates)
|
||||
@@ -120,5 +129,11 @@ namespace OpenRA.TilesetBuilder
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.SuspendLayout();
|
||||
this.ResumeLayout(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
123
OpenRA.TilesetBuilder/Surface.resx
Normal file
@@ -0,0 +1,123 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="$this.TrayLargeIcon" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>False</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -1,14 +1,4 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* Copyright 2007-2011 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.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace OpenRA.TilesetBuilder
|
||||
|
||||
38
OpenRA.TilesetBuilder/defaults.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
Terrain:
|
||||
TerrainType@Sand:
|
||||
Type: Sand
|
||||
AcceptSmudge: True
|
||||
Color: 208, 192, 160
|
||||
TerrainType@Rock:
|
||||
Type: Rock
|
||||
AcceptSmudge: True
|
||||
Color: 206, 140, 66
|
||||
TerrainType@Cliff:
|
||||
Type: Cliff
|
||||
AcceptSmudge: False
|
||||
Color: 74, 41, 16
|
||||
TerrainType@Rough:
|
||||
Type: Rough
|
||||
AcceptSmudge: True
|
||||
Color: 88, 116, 116
|
||||
TerrainType@Concrete:
|
||||
Type: Concrete
|
||||
AcceptSmudge: False
|
||||
Color: 208, 192, 160
|
||||
TerrainType@Dune:
|
||||
Type: Dune
|
||||
AcceptSmudge: True
|
||||
Color: 239, 222, 140
|
||||
TerrainType@Spice:
|
||||
Type: Spice
|
||||
AcceptSmudge: False
|
||||
Color: 239, 148, 74
|
||||
TerrainType@SpiceBlobs:
|
||||
Type: SpiceBlobs
|
||||
AcceptSmudge: False
|
||||
Color: 206, 115, 66
|
||||
TerrainType@Ice:
|
||||
Type: Ice
|
||||
AcceptSmudge: False
|
||||
Color: 255, 255, 255
|
||||
IsWater: True
|
||||
349
OpenRA.TilesetBuilder/frmBuilder.Designer.cs
generated
Normal file
@@ -0,0 +1,349 @@
|
||||
namespace OpenRA.TilesetBuilder
|
||||
{
|
||||
partial class frmBuilder
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.components = new System.ComponentModel.Container();
|
||||
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(frmBuilder));
|
||||
this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();
|
||||
this.panel1 = new System.Windows.Forms.Panel();
|
||||
this.imageList = new System.Windows.Forms.ImageList(this.components);
|
||||
this.tsTerrainTypes = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripLabel3 = new System.Windows.Forms.ToolStripLabel();
|
||||
this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripLabel4 = new System.Windows.Forms.ToolStripLabel();
|
||||
this.txtTilesetName = new System.Windows.Forms.ToolStripTextBox();
|
||||
this.toolStripLabel5 = new System.Windows.Forms.ToolStripLabel();
|
||||
this.txtID = new System.Windows.Forms.ToolStripTextBox();
|
||||
this.lblExt = new System.Windows.Forms.ToolStripLabel();
|
||||
this.txtExt = new System.Windows.Forms.ToolStripTextBox();
|
||||
this.toolStripLabel6 = new System.Windows.Forms.ToolStripLabel();
|
||||
this.txtPal = new System.Windows.Forms.ToolStripTextBox();
|
||||
this.toolStripSeparator5 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripLabel2 = new System.Windows.Forms.ToolStripLabel();
|
||||
this.toolStripSeparator4 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
|
||||
this.toolStripButton15 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripButton14 = new System.Windows.Forms.ToolStripButton();
|
||||
this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator();
|
||||
this.toolStripButton3 = new System.Windows.Forms.ToolStripButton();
|
||||
this.surface1 = new OpenRA.TilesetBuilder.Surface();
|
||||
this.toolStripContainer1.ContentPanel.SuspendLayout();
|
||||
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
|
||||
this.toolStripContainer1.SuspendLayout();
|
||||
this.panel1.SuspendLayout();
|
||||
this.tsTerrainTypes.SuspendLayout();
|
||||
this.toolStrip1.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// toolStripContainer1
|
||||
//
|
||||
//
|
||||
// toolStripContainer1.ContentPanel
|
||||
//
|
||||
this.toolStripContainer1.ContentPanel.Controls.Add(this.panel1);
|
||||
this.toolStripContainer1.ContentPanel.Controls.Add(this.tsTerrainTypes);
|
||||
this.toolStripContainer1.ContentPanel.Size = new System.Drawing.Size(908, 571);
|
||||
this.toolStripContainer1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.toolStripContainer1.Location = new System.Drawing.Point(0, 0);
|
||||
this.toolStripContainer1.Name = "toolStripContainer1";
|
||||
this.toolStripContainer1.Size = new System.Drawing.Size(908, 596);
|
||||
this.toolStripContainer1.TabIndex = 0;
|
||||
this.toolStripContainer1.Text = "toolStripContainer1";
|
||||
//
|
||||
// toolStripContainer1.TopToolStripPanel
|
||||
//
|
||||
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
|
||||
this.toolStripContainer1.TopToolStripPanel.RenderMode = System.Windows.Forms.ToolStripRenderMode.Professional;
|
||||
this.toolStripContainer1.TopToolStripPanel.Click += new System.EventHandler(this.toolStripContainer1_TopToolStripPanel_Click);
|
||||
//
|
||||
// panel1
|
||||
//
|
||||
this.panel1.AutoScroll = true;
|
||||
this.panel1.BackColor = System.Drawing.Color.Black;
|
||||
this.panel1.Controls.Add(this.surface1);
|
||||
this.panel1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.panel1.Location = new System.Drawing.Point(0, 0);
|
||||
this.panel1.Name = "panel1";
|
||||
this.panel1.Size = new System.Drawing.Size(788, 571);
|
||||
this.panel1.TabIndex = 3;
|
||||
//
|
||||
// imageList
|
||||
//
|
||||
this.imageList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imageList.ImageStream")));
|
||||
this.imageList.TransparentColor = System.Drawing.Color.Transparent;
|
||||
this.imageList.Images.SetKeyName(0, "clear.png");
|
||||
this.imageList.Images.SetKeyName(1, "water.png");
|
||||
this.imageList.Images.SetKeyName(2, "road.png");
|
||||
this.imageList.Images.SetKeyName(3, "rock.png");
|
||||
this.imageList.Images.SetKeyName(4, "river.png");
|
||||
this.imageList.Images.SetKeyName(5, "rough.png");
|
||||
this.imageList.Images.SetKeyName(6, "wall.png");
|
||||
this.imageList.Images.SetKeyName(7, "beach.png");
|
||||
this.imageList.Images.SetKeyName(8, "tree.png");
|
||||
this.imageList.Images.SetKeyName(9, "tiberium.png");
|
||||
//
|
||||
// tsTerrainTypes
|
||||
//
|
||||
this.tsTerrainTypes.AutoSize = false;
|
||||
this.tsTerrainTypes.Dock = System.Windows.Forms.DockStyle.Right;
|
||||
this.tsTerrainTypes.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripLabel3,
|
||||
this.toolStripSeparator3,
|
||||
this.toolStripLabel4,
|
||||
this.txtTilesetName,
|
||||
this.toolStripLabel5,
|
||||
this.txtID,
|
||||
this.lblExt,
|
||||
this.txtExt,
|
||||
this.toolStripLabel6,
|
||||
this.txtPal,
|
||||
this.toolStripSeparator5,
|
||||
this.toolStripLabel2,
|
||||
this.toolStripSeparator4,
|
||||
this.toolStripButton1});
|
||||
this.tsTerrainTypes.LayoutStyle = System.Windows.Forms.ToolStripLayoutStyle.VerticalStackWithOverflow;
|
||||
this.tsTerrainTypes.Location = new System.Drawing.Point(788, 0);
|
||||
this.tsTerrainTypes.Name = "tsTerrainTypes";
|
||||
this.tsTerrainTypes.Size = new System.Drawing.Size(120, 571);
|
||||
this.tsTerrainTypes.TabIndex = 1;
|
||||
this.tsTerrainTypes.Text = "toolStrip3";
|
||||
//
|
||||
// toolStripLabel3
|
||||
//
|
||||
this.toolStripLabel3.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
|
||||
this.toolStripLabel3.Name = "toolStripLabel3";
|
||||
this.toolStripLabel3.Size = new System.Drawing.Size(118, 13);
|
||||
this.toolStripLabel3.Text = "Tileset setup";
|
||||
//
|
||||
// toolStripSeparator3
|
||||
//
|
||||
this.toolStripSeparator3.Name = "toolStripSeparator3";
|
||||
this.toolStripSeparator3.Size = new System.Drawing.Size(118, 6);
|
||||
//
|
||||
// toolStripLabel4
|
||||
//
|
||||
this.toolStripLabel4.Name = "toolStripLabel4";
|
||||
this.toolStripLabel4.Size = new System.Drawing.Size(118, 13);
|
||||
this.toolStripLabel4.Text = "Tileset name:";
|
||||
//
|
||||
// txtTilesetName
|
||||
//
|
||||
this.txtTilesetName.MaxLength = 32;
|
||||
this.txtTilesetName.Name = "txtTilesetName";
|
||||
this.txtTilesetName.Size = new System.Drawing.Size(116, 21);
|
||||
this.txtTilesetName.Text = "Temperat";
|
||||
this.txtTilesetName.TextChanged += new System.EventHandler(this.txtTilesetName_TextChanged);
|
||||
//
|
||||
// toolStripLabel5
|
||||
//
|
||||
this.toolStripLabel5.Name = "toolStripLabel5";
|
||||
this.toolStripLabel5.Size = new System.Drawing.Size(118, 13);
|
||||
this.toolStripLabel5.Text = "Tileset ID:";
|
||||
//
|
||||
// txtID
|
||||
//
|
||||
this.txtID.Name = "txtID";
|
||||
this.txtID.ReadOnly = true;
|
||||
this.txtID.Size = new System.Drawing.Size(116, 21);
|
||||
this.txtID.Text = "TEMPERAT";
|
||||
//
|
||||
// lblExt
|
||||
//
|
||||
this.lblExt.Name = "lblExt";
|
||||
this.lblExt.Size = new System.Drawing.Size(118, 13);
|
||||
this.lblExt.Text = "Extensions:";
|
||||
//
|
||||
// txtExt
|
||||
//
|
||||
this.txtExt.Name = "txtExt";
|
||||
this.txtExt.ReadOnly = true;
|
||||
this.txtExt.Size = new System.Drawing.Size(116, 21);
|
||||
this.txtExt.Text = ".tem,.shp";
|
||||
//
|
||||
// toolStripLabel6
|
||||
//
|
||||
this.toolStripLabel6.Name = "toolStripLabel6";
|
||||
this.toolStripLabel6.Size = new System.Drawing.Size(118, 13);
|
||||
this.toolStripLabel6.Text = "Palette:";
|
||||
//
|
||||
// txtPal
|
||||
//
|
||||
this.txtPal.Name = "txtPal";
|
||||
this.txtPal.ReadOnly = true;
|
||||
this.txtPal.Size = new System.Drawing.Size(116, 21);
|
||||
this.txtPal.Text = "temperat.pal";
|
||||
//
|
||||
// toolStripSeparator5
|
||||
//
|
||||
this.toolStripSeparator5.Name = "toolStripSeparator5";
|
||||
this.toolStripSeparator5.Size = new System.Drawing.Size(118, 6);
|
||||
//
|
||||
// toolStripLabel2
|
||||
//
|
||||
this.toolStripLabel2.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Bold);
|
||||
this.toolStripLabel2.Name = "toolStripLabel2";
|
||||
this.toolStripLabel2.Size = new System.Drawing.Size(118, 13);
|
||||
this.toolStripLabel2.Text = "Terrain type";
|
||||
//
|
||||
// toolStripSeparator4
|
||||
//
|
||||
this.toolStripSeparator4.Name = "toolStripSeparator4";
|
||||
this.toolStripSeparator4.Size = new System.Drawing.Size(118, 6);
|
||||
//
|
||||
// toolStripButton1
|
||||
//
|
||||
this.toolStripButton1.Checked = true;
|
||||
this.toolStripButton1.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.toolStripButton1.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton1.Image")));
|
||||
this.toolStripButton1.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton1.Name = "toolStripButton1";
|
||||
this.toolStripButton1.Size = new System.Drawing.Size(118, 20);
|
||||
this.toolStripButton1.Text = "Template Tool";
|
||||
this.toolStripButton1.Click += new System.EventHandler(this.TerrainTypeSelectorClicked);
|
||||
//
|
||||
// toolStrip1
|
||||
//
|
||||
this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None;
|
||||
this.toolStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] {
|
||||
this.toolStripButton15,
|
||||
this.toolStripButton2,
|
||||
this.toolStripButton14,
|
||||
this.toolStripSeparator1,
|
||||
this.toolStripButton3});
|
||||
this.toolStrip1.Location = new System.Drawing.Point(3, 0);
|
||||
this.toolStrip1.Name = "toolStrip1";
|
||||
this.toolStrip1.Size = new System.Drawing.Size(275, 25);
|
||||
this.toolStrip1.TabIndex = 0;
|
||||
//
|
||||
// toolStripButton15
|
||||
//
|
||||
this.toolStripButton15.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton15.Image")));
|
||||
this.toolStripButton15.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton15.Name = "toolStripButton15";
|
||||
this.toolStripButton15.Size = new System.Drawing.Size(48, 22);
|
||||
this.toolStripButton15.Text = "New";
|
||||
this.toolStripButton15.Click += new System.EventHandler(this.toolStripButton15_Click);
|
||||
//
|
||||
// toolStripButton2
|
||||
//
|
||||
this.toolStripButton2.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton2.Image")));
|
||||
this.toolStripButton2.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton2.Name = "toolStripButton2";
|
||||
this.toolStripButton2.Size = new System.Drawing.Size(51, 22);
|
||||
this.toolStripButton2.Text = "Save";
|
||||
this.toolStripButton2.Click += new System.EventHandler(this.SaveClicked);
|
||||
//
|
||||
// toolStripButton14
|
||||
//
|
||||
this.toolStripButton14.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton14.Image")));
|
||||
this.toolStripButton14.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton14.Name = "toolStripButton14";
|
||||
this.toolStripButton14.Size = new System.Drawing.Size(59, 22);
|
||||
this.toolStripButton14.Text = "Export";
|
||||
this.toolStripButton14.Click += new System.EventHandler(this.ExportClicked);
|
||||
//
|
||||
// toolStripSeparator1
|
||||
//
|
||||
this.toolStripSeparator1.Name = "toolStripSeparator1";
|
||||
this.toolStripSeparator1.Size = new System.Drawing.Size(6, 25);
|
||||
//
|
||||
// toolStripButton3
|
||||
//
|
||||
this.toolStripButton3.Image = ((System.Drawing.Image)(resources.GetObject("toolStripButton3.Image")));
|
||||
this.toolStripButton3.ImageTransparentColor = System.Drawing.Color.Magenta;
|
||||
this.toolStripButton3.Name = "toolStripButton3";
|
||||
this.toolStripButton3.Size = new System.Drawing.Size(70, 22);
|
||||
this.toolStripButton3.Text = "Overlays";
|
||||
this.toolStripButton3.Click += new System.EventHandler(this.ShowOverlaysClicked);
|
||||
//
|
||||
// surface1
|
||||
//
|
||||
this.surface1.BackColor = System.Drawing.Color.Black;
|
||||
this.surface1.ImagesList = this.imageList;
|
||||
this.surface1.Location = new System.Drawing.Point(0, 0);
|
||||
this.surface1.Name = "surface1";
|
||||
this.surface1.ShowTerrainTypes = true;
|
||||
this.surface1.Size = new System.Drawing.Size(653, 454);
|
||||
this.surface1.TabIndex = 2;
|
||||
this.surface1.Text = "surface1";
|
||||
//
|
||||
// frmBuilder
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(908, 596);
|
||||
this.Controls.Add(this.toolStripContainer1);
|
||||
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
|
||||
this.Name = "frmBuilder";
|
||||
this.Text = "Tileset Builder 2";
|
||||
this.toolStripContainer1.ContentPanel.ResumeLayout(false);
|
||||
this.toolStripContainer1.TopToolStripPanel.ResumeLayout(false);
|
||||
this.toolStripContainer1.TopToolStripPanel.PerformLayout();
|
||||
this.toolStripContainer1.ResumeLayout(false);
|
||||
this.toolStripContainer1.PerformLayout();
|
||||
this.panel1.ResumeLayout(false);
|
||||
this.tsTerrainTypes.ResumeLayout(false);
|
||||
this.tsTerrainTypes.PerformLayout();
|
||||
this.toolStrip1.ResumeLayout(false);
|
||||
this.toolStrip1.PerformLayout();
|
||||
this.ResumeLayout(false);
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.ToolStripContainer toolStripContainer1;
|
||||
private System.Windows.Forms.ToolStrip toolStrip1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton2;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator1;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton3;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton14;
|
||||
public System.Windows.Forms.ImageList imageList;
|
||||
private System.Windows.Forms.ToolStrip tsTerrainTypes;
|
||||
private System.Windows.Forms.Panel panel1;
|
||||
private Surface surface1;
|
||||
private System.Windows.Forms.ToolStripLabel toolStripLabel2;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator4;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton15;
|
||||
private System.Windows.Forms.ToolStripButton toolStripButton1;
|
||||
private System.Windows.Forms.ToolStripLabel toolStripLabel3;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator3;
|
||||
private System.Windows.Forms.ToolStripSeparator toolStripSeparator5;
|
||||
private System.Windows.Forms.ToolStripLabel toolStripLabel4;
|
||||
private System.Windows.Forms.ToolStripTextBox txtTilesetName;
|
||||
private System.Windows.Forms.ToolStripLabel toolStripLabel5;
|
||||
private System.Windows.Forms.ToolStripTextBox txtID;
|
||||
private System.Windows.Forms.ToolStripLabel lblExt;
|
||||
private System.Windows.Forms.ToolStripTextBox txtExt;
|
||||
private System.Windows.Forms.ToolStripLabel toolStripLabel6;
|
||||
private System.Windows.Forms.ToolStripTextBox txtPal;
|
||||
}
|
||||
}
|
||||
|
||||
455
OpenRA.TilesetBuilder/frmBuilder.cs
Normal file
@@ -0,0 +1,455 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* 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,
|
||||
* see COPYING.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.Drawing.Imaging;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Windows.Forms;
|
||||
using System.Xml;
|
||||
using System.Runtime.InteropServices;
|
||||
using OpenRA.FileFormats;
|
||||
|
||||
namespace OpenRA.TilesetBuilder
|
||||
{
|
||||
public partial class frmBuilder : Form
|
||||
{
|
||||
string srcfile;
|
||||
int size;
|
||||
public TerrainTypeInfo[] TerrainType;
|
||||
public Palette tpal;
|
||||
public bool PaletteFromImage = true;
|
||||
public string PaletteFile = "";
|
||||
public string ImageFile = "";
|
||||
public int TileSize = 24;
|
||||
|
||||
private int ColorDiff(Color color, Color curr)
|
||||
{
|
||||
return Math.Abs(color.R - curr.R) + Math.Abs(color.G - curr.G) + Math.Abs(color.B - curr.B);
|
||||
}
|
||||
|
||||
public void CreateNewTileset()
|
||||
{
|
||||
this.Show();
|
||||
using (var fNew = new frmNew { })
|
||||
if (DialogResult.OK == fNew.ShowDialog())
|
||||
{
|
||||
PaletteFromImage = fNew.PaletteFromImage;
|
||||
PaletteFile = fNew.PaletteFile;
|
||||
ImageFile = fNew.ImageFile;
|
||||
TileSize = fNew.TileSize;
|
||||
|
||||
srcfile = ImageFile;
|
||||
this.size = TileSize;
|
||||
surface1.TileSize = TileSize;
|
||||
|
||||
Bitmap fbitmap = new Bitmap(ImageFile);
|
||||
Bitmap rbitmap = fbitmap.Clone(new Rectangle(0, 0, fbitmap.Width, fbitmap.Height),
|
||||
fbitmap.PixelFormat);
|
||||
|
||||
if (!PaletteFromImage)
|
||||
{
|
||||
tpal = Palette.Load(PaletteFile, false);
|
||||
rbitmap.Palette = tpal.AsSystemPalette();
|
||||
}
|
||||
|
||||
surface1.Image = (Bitmap)rbitmap;
|
||||
surface1.Image.SetResolution(96, 96); // people keep being noobs about DPI, and GDI+ cares.
|
||||
surface1.TerrainTypes = new int[surface1.Image.Width / size, surface1.Image.Height / size]; /* all passable by default */
|
||||
surface1.Templates = new List<Template>();
|
||||
surface1.Size = surface1.Image.Size;
|
||||
surface1.Enabled = true;
|
||||
Load();
|
||||
}
|
||||
}
|
||||
|
||||
public frmBuilder(string src, string tsize, bool AutoExport, string OutputDir)
|
||||
{
|
||||
InitializeComponent();
|
||||
Dictionary<string, TerrainTypeInfo> DefTerrain = new Dictionary<string, TerrainTypeInfo>();
|
||||
|
||||
int size = int.Parse(tsize);
|
||||
|
||||
var yaml = MiniYaml.DictFromFile("OpenRA.TilesetBuilder/defaults.yaml");
|
||||
DefTerrain = yaml["Terrain"].NodesDict.Values.Select(y => new TerrainTypeInfo(y)).ToDictionary(t => t.Type);
|
||||
int i = 0;
|
||||
surface1.icon = new Bitmap[DefTerrain.Keys.Count];
|
||||
TerrainType = new TerrainTypeInfo[DefTerrain.Keys.Count];
|
||||
surface1.Enabled = false;
|
||||
foreach (var deftype in DefTerrain)
|
||||
{
|
||||
Bitmap icon = new Bitmap(16, 16);
|
||||
int x, y;
|
||||
// Loop through the images pixels to reset color.
|
||||
for (x = 0; x < icon.Width; x++)
|
||||
{
|
||||
for (y = 0; y < icon.Height; y++)
|
||||
{
|
||||
Color newColor = deftype.Value.Color;
|
||||
icon.SetPixel(x, y, newColor);
|
||||
}
|
||||
}
|
||||
surface1.icon[i] = icon;
|
||||
TerrainType[i] = deftype.Value;
|
||||
|
||||
ToolStripButton TerrainTypeButton = new ToolStripButton(deftype.Key, icon, TerrainTypeSelectorClicked);
|
||||
TerrainTypeButton.ToolTipText = deftype.Key;
|
||||
TerrainTypeButton.DisplayStyle = ToolStripItemDisplayStyle.ImageAndText;
|
||||
TerrainTypeButton.Tag = i.ToString();
|
||||
i++;
|
||||
tsTerrainTypes.Items.Add(TerrainTypeButton);
|
||||
}
|
||||
|
||||
if (src.Length > 0)
|
||||
{
|
||||
srcfile = src;
|
||||
this.size = size;
|
||||
surface1.TileSize = size;
|
||||
surface1.Image = (Bitmap)Image.FromFile(src);
|
||||
surface1.Image.SetResolution(96, 96); // people keep being noobs about DPI, and GDI+ cares.
|
||||
surface1.TerrainTypes = new int[surface1.Image.Width / size, surface1.Image.Height / size]; /* all passable by default */
|
||||
surface1.Templates = new List<Template>();
|
||||
surface1.Size = surface1.Image.Size;
|
||||
surface1.Enabled = true;
|
||||
Load();
|
||||
}
|
||||
else
|
||||
{
|
||||
CreateNewTileset();
|
||||
}
|
||||
|
||||
if (AutoExport)
|
||||
{
|
||||
Export(OutputDir);
|
||||
Application.Exit();
|
||||
}
|
||||
}
|
||||
|
||||
public new void Load()
|
||||
{
|
||||
try
|
||||
{
|
||||
var doc = new XmlDocument();
|
||||
doc.Load(Path.ChangeExtension(srcfile, "tsx"));
|
||||
|
||||
foreach (var e in doc.SelectNodes("//name").OfType<XmlElement>())
|
||||
txtTilesetName.Text = e.GetAttribute("value");
|
||||
|
||||
foreach (var e in doc.SelectNodes("//terrain").OfType<XmlElement>())
|
||||
surface1.TerrainTypes[int.Parse(e.GetAttribute("x")),
|
||||
int.Parse(e.GetAttribute("y"))] = int.Parse(e.GetAttribute("t"));
|
||||
|
||||
foreach (var e in doc.SelectNodes("//template").OfType<XmlElement>())
|
||||
surface1.Templates.Add(new Template
|
||||
{
|
||||
Cells = e.SelectNodes("./cell").OfType<XmlElement>()
|
||||
.Select(f => new int2(int.Parse(f.GetAttribute("x")), int.Parse(f.GetAttribute("y"))))
|
||||
.ToDictionary(a => a, a => true)
|
||||
});
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
public void Save()
|
||||
{
|
||||
using (var w = XmlWriter.Create(Path.ChangeExtension(srcfile,"tsx"),
|
||||
new XmlWriterSettings { Indent = true, IndentChars = " " }))
|
||||
{
|
||||
var tilesetName = txtTilesetName.Text;
|
||||
|
||||
if (tilesetName.Length < 1) { tilesetName = "Temperat"; }
|
||||
|
||||
w.WriteStartDocument();
|
||||
|
||||
w.WriteStartElement("tileset");
|
||||
w.WriteStartElement("name");
|
||||
w.WriteAttributeString("value", tilesetName);
|
||||
w.WriteEndElement();
|
||||
|
||||
for( var i = 0; i <= surface1.TerrainTypes.GetUpperBound(0); i++ )
|
||||
for( var j = 0; j <= surface1.TerrainTypes.GetUpperBound(1); j++ )
|
||||
if (surface1.TerrainTypes[i, j] != 0)
|
||||
{
|
||||
w.WriteStartElement("terrain");
|
||||
w.WriteAttributeString("x", i.ToString());
|
||||
w.WriteAttributeString("y", j.ToString());
|
||||
w.WriteAttributeString("t", surface1.TerrainTypes[i, j].ToString());
|
||||
w.WriteEndElement();
|
||||
}
|
||||
|
||||
foreach (var t in surface1.Templates)
|
||||
{
|
||||
w.WriteStartElement("template");
|
||||
|
||||
foreach (var c in t.Cells.Keys)
|
||||
{
|
||||
w.WriteStartElement("cell");
|
||||
w.WriteAttributeString("x", c.X.ToString());
|
||||
w.WriteAttributeString("y", c.Y.ToString());
|
||||
w.WriteEndElement();
|
||||
}
|
||||
|
||||
w.WriteEndElement();
|
||||
}
|
||||
|
||||
w.WriteEndElement();
|
||||
w.WriteEndDocument();
|
||||
}
|
||||
}
|
||||
|
||||
void TerrainTypeSelectorClicked(object sender, EventArgs e)
|
||||
{
|
||||
surface1.InputMode = (sender as ToolStripButton).Tag as string;
|
||||
foreach (var tsb in (sender as ToolStripButton).Owner.Items.OfType<ToolStripButton>())
|
||||
tsb.Checked = false;
|
||||
(sender as ToolStripButton).Checked = true;
|
||||
}
|
||||
|
||||
void SaveClicked(object sender, EventArgs e) { Save(); }
|
||||
void ShowOverlaysClicked(object sender, EventArgs e)
|
||||
{
|
||||
if (surface1.ShowTerrainTypes == false)
|
||||
{
|
||||
surface1.ShowTerrainTypes = true;
|
||||
this.Refresh();
|
||||
}
|
||||
else
|
||||
{
|
||||
surface1.ShowTerrainTypes = false;
|
||||
this.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
void ExportClicked(object sender, EventArgs e)
|
||||
{
|
||||
Export("Tilesets");
|
||||
}
|
||||
|
||||
string ExportPalette(List<Color> p, string file)
|
||||
{
|
||||
while (p.Count < 256) p.Add(Color.Black); // pad the palette out with extra blacks
|
||||
var paletteData = p.Take(256).SelectMany(
|
||||
c => new byte[] { (byte)(c.R >> 2), (byte)(c.G >> 2), (byte)(c.B >> 2) }).ToArray();
|
||||
File.WriteAllBytes(file, paletteData);
|
||||
return file;
|
||||
}
|
||||
|
||||
string ExportTemplate(Template t, int n, string suffix, string dir)
|
||||
{
|
||||
var TileSize = size;
|
||||
var filename = Path.Combine(dir, "t{0:00}{1}".F(n, suffix));
|
||||
var totalTiles = t.Width * t.Height;
|
||||
|
||||
var ms = new MemoryStream();
|
||||
using (var bw = new BinaryWriter(ms))
|
||||
{
|
||||
bw.Write((ushort)TileSize);
|
||||
bw.Write((ushort)TileSize);
|
||||
bw.Write((uint)totalTiles);
|
||||
bw.Write((ushort)t.Width);
|
||||
bw.Write((ushort)t.Height);
|
||||
bw.Write((uint)0); // filesize placeholder
|
||||
bw.Flush();
|
||||
bw.Write((uint)ms.Position + 24); // image start
|
||||
bw.Write((uint)0); // 0 (32bits)
|
||||
bw.Write((uint)0x2c730f8c); // magic?
|
||||
bw.Write((uint)0); // flags start
|
||||
bw.Write((uint)0); // walk start
|
||||
bw.Write((uint)0); // index start
|
||||
|
||||
Bitmap src = surface1.Image.Clone(new Rectangle(0, 0, surface1.Image.Width, surface1.Image.Height),
|
||||
surface1.Image.PixelFormat);
|
||||
|
||||
var data = src.LockBits(new Rectangle(0, 0, src.Width, src.Height),
|
||||
ImageLockMode.ReadOnly, src.PixelFormat);
|
||||
|
||||
unsafe
|
||||
{
|
||||
byte* p = (byte*)data.Scan0;
|
||||
|
||||
for (var v = 0; v < t.Height; v++)
|
||||
for (var u = 0; u < t.Width; u++)
|
||||
{
|
||||
if (t.Cells.ContainsKey(new int2(u + t.Left, v + t.Top)))
|
||||
{
|
||||
byte* q = p + data.Stride * TileSize * (v + t.Top) + TileSize * (u + t.Left);
|
||||
for (var j = 0; j < TileSize; j++)
|
||||
for (var i = 0; i < TileSize; i++)
|
||||
{
|
||||
bw.Write(q[i + j * data.Stride]);
|
||||
}
|
||||
|
||||
}
|
||||
else
|
||||
for (var x = 0; x < TileSize * TileSize; x++)
|
||||
bw.Write((byte)0); /* todo: don't fill with air */
|
||||
}
|
||||
}
|
||||
|
||||
src.UnlockBits(data);
|
||||
|
||||
bw.Flush();
|
||||
var indexStart = ms.Position;
|
||||
for (var v = 0; v < t.Height; v++)
|
||||
for (var u = 0; u < t.Width; u++)
|
||||
bw.Write(t.Cells.ContainsKey(new int2(u + t.Left, v + t.Top))
|
||||
? (byte)(u + t.Width * v)
|
||||
: (byte)0xff);
|
||||
|
||||
bw.Flush();
|
||||
|
||||
var flagsStart = ms.Position;
|
||||
for (var x = 0; x < totalTiles; x++ )
|
||||
bw.Write((byte)0);
|
||||
|
||||
bw.Flush();
|
||||
|
||||
var walkStart = ms.Position;
|
||||
for (var x = 0; x < totalTiles; x++)
|
||||
bw.Write((byte)0x8);
|
||||
|
||||
var bytes = ms.ToArray();
|
||||
Array.Copy(BitConverter.GetBytes((uint)bytes.Length), 0, bytes, 12, 4);
|
||||
Array.Copy(BitConverter.GetBytes(flagsStart), 0, bytes, 28, 4);
|
||||
Array.Copy(BitConverter.GetBytes(walkStart), 0, bytes, 32, 4);
|
||||
Array.Copy(BitConverter.GetBytes(indexStart), 0, bytes, 36, 4);
|
||||
|
||||
File.WriteAllBytes(filename, bytes);
|
||||
}
|
||||
return filename;
|
||||
}
|
||||
|
||||
public void Export (string OutputDir)
|
||||
{
|
||||
var dir = Path.Combine(Path.GetDirectoryName(srcfile), Platform.SupportDir+OutputDir);
|
||||
Directory.CreateDirectory(dir);
|
||||
var tilesetName = txtTilesetName.Text;
|
||||
var tilesetID = txtID.Text;
|
||||
var tilesetPalette = txtPal.Text;
|
||||
var tilesetExt = txtExt.Text;
|
||||
|
||||
if (tilesetName.Length < 1) { tilesetName = "Temperat"; }
|
||||
if (tilesetID.Length < 1) { tilesetID = "TEMPERAT"; }
|
||||
if (tilesetPalette.Length < 1) { tilesetPalette = "temperat"; }
|
||||
if (tilesetExt.Length < 1) { tilesetExt = ".tem,.shp"; }
|
||||
// Create a Tileset definition
|
||||
// Todo: Pull this info from the GUI
|
||||
var tilesetFile = "";
|
||||
//var mixFile = "";
|
||||
tilesetFile = tilesetName.ToLower();
|
||||
if (tilesetFile.Length < 8)
|
||||
{
|
||||
tilesetFile = tilesetName.ToLower() + ".yaml";
|
||||
//mixFile = tilesetName.ToLower() + ".mix";
|
||||
}
|
||||
else
|
||||
{
|
||||
tilesetFile = tilesetName.ToLower().Substring(0, 8) + ".yaml";
|
||||
//mixFile = tilesetName.ToLower().Substring(0, 8) + ".mix";
|
||||
}
|
||||
|
||||
string[] Ext = tilesetExt.Split(',');
|
||||
var tileset = new TileSet()
|
||||
{
|
||||
Name = tilesetName,
|
||||
Id = tilesetID.ToUpper(),
|
||||
TileSize = size,
|
||||
Palette = tilesetPalette.ToLower(),
|
||||
Extensions = new string[] { Ext[0], Ext[1] }
|
||||
};
|
||||
|
||||
// List of files to add to the mix file
|
||||
List<string> fileList = new List<string>();
|
||||
|
||||
// Export palette (use the embedded palette)
|
||||
var p = surface1.Image.Palette.Entries.ToList();
|
||||
fileList.Add(ExportPalette(p, Path.Combine(dir, tileset.Palette)));
|
||||
|
||||
// Export tile artwork
|
||||
foreach (var t in surface1.Templates)
|
||||
fileList.Add(ExportTemplate(t, surface1.Templates.IndexOf(t), tileset.Extensions.First(), dir));
|
||||
|
||||
// Add the terraintypes
|
||||
foreach (var tt in TerrainType)
|
||||
{
|
||||
tileset.Terrain.Add(tt.Type, tt);
|
||||
}
|
||||
|
||||
// Add the templates
|
||||
ushort cur = 0;
|
||||
foreach (var tp in surface1.Templates)
|
||||
{
|
||||
var template = new TileTemplate()
|
||||
{
|
||||
Id = cur,
|
||||
Image = "t{0:00}".F(cur),
|
||||
Size = new int2(tp.Width,tp.Height),
|
||||
};
|
||||
|
||||
foreach (var t in tp.Cells)
|
||||
{
|
||||
string ttype = "Clear";
|
||||
ttype = TerrainType[surface1.TerrainTypes[t.Key.X, t.Key.Y]].Type;
|
||||
template.Tiles.Add((byte)((t.Key.X - tp.Left) + tp.Width * (t.Key.Y - tp.Top)), ttype);
|
||||
}
|
||||
|
||||
tileset.Templates.Add(cur, template);
|
||||
cur++;
|
||||
}
|
||||
|
||||
tileset.Save(Path.Combine(dir, tilesetFile));
|
||||
//throw new NotImplementedException("NotI");
|
||||
//PackageWriter.CreateMix(Path.Combine(dir, mixFile),fileList);
|
||||
|
||||
// Cleanup
|
||||
//foreach (var file in fileList)
|
||||
//File.Delete(file);
|
||||
|
||||
Console.WriteLine("Finished export");
|
||||
}
|
||||
|
||||
private void toolStripContainer1_TopToolStripPanel_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void surface1_Click(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
private void txtTilesetName_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
var tilesetFile = txtTilesetName.Text;
|
||||
if (tilesetFile.Length > 8)
|
||||
{
|
||||
tilesetFile = tilesetFile.ToLower().Substring(0, 8);
|
||||
}
|
||||
txtID.Text = tilesetFile.ToUpper();
|
||||
txtPal.Text = tilesetFile.ToLower() + ".pal";
|
||||
if (tilesetFile.Length < 3)
|
||||
{
|
||||
txtExt.Text = ".tem,.shp";
|
||||
}
|
||||
else
|
||||
{
|
||||
txtExt.Text = "." + tilesetFile.ToLower().Substring(0, 3) + ",.shp";
|
||||
}
|
||||
}
|
||||
|
||||
private void toolStripButton15_Click(object sender, EventArgs e)
|
||||
{
|
||||
CreateNewTileset();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
509
OpenRA.TilesetBuilder/frmBuilder.resx
Normal file
@@ -0,0 +1,509 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="imageList.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>215, 17</value>
|
||||
</metadata>
|
||||
<data name="imageList.ImageStream" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>
|
||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w
|
||||
LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0
|
||||
ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACy
|
||||
MwAAAk1TRnQBSQFMAgEBCgEAAYABAQGAAQEBEAEAARABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAFA
|
||||
AwABMAMAAQEBAAEgBgABMC4AAVoCXwHbAVwCZAHnAwQBBhgAA1IB9AEtAfQBzAH/AQABlgFBAf8BAAES
|
||||
AQAB/wEAAZwBSgH/AQABtQGLAf8BAAEhAQkB/wEAARoBBgH/AQABIAEIAf8BAAGCAS8B/wEDAbgBjwH/
|
||||
ARgBzAGlAf8BAAGjAUwB/wEAAYEBJQH/AQABKAEIAf8DKwH8lAADDQQSARgBWwJhAeEBVwJcAd8DEAEW
|
||||
AwoBDhQAASsBOgErAfwBIwHbAbEB/wEAASMBCQH/AQABNgEaAf8BOAH3AdAB/wEAAaABUAH/AQABEwEA
|
||||
Af8BAAEeAQgB/wEAAR0BBwH/AQABFgEAAf8BAwGyAYkB/wE/AfcB2QH/ATAB7QHFAf8BDgG0AYwB/wEA
|
||||
AaEBRgH/AwAB/48AAQEDLQFGA14B2gErAVUBNQH8ASMBTQGoAf8BHgFFAakB/wErAVoBOwH8A1UBtQMZ
|
||||
ASMQAAEvAk0B+gEAAakBgwH/AQABFAEAAf8BEgGyAY0B/wE7AfcB0wH/AQABUQEsAf8BAAEUAQAB/wEA
|
||||
AR0BBwH/AQABHgEIAf8BAAEdAQcB/wEAAQsBAAH/ARoBuQGaAf8BOQHzAc4B/wE6AfUBzgH/ARMBvQGU
|
||||
Af8BKQJNAfqIAAMoAT0DVQGyATICXwH7AX8BlQF/Af4BogHgAcYB/wEUAUIBnAH/ASwBhgG6Af8BlAHx
|
||||
AcsB/wFWAXwBXwH7AVUCXAHqA0wBkgMRARcIAAEuAk0B+gEAAaEBUAH/AQABJwENAf8BJwHjAboB/wEi
|
||||
Ad8BtwH/AQABOgEaAf8BAAEpAQwB/wEAASIBCgH/AQABHQEHAf8BAAElAQ4B/wNOAfADUgH0ATQB7AHG
|
||||
Af8BNgHwAccB/wEvAeMBvQH/ASkCTQH6hAADJAE2AVgBYgFYAekBNAHdAa4B/wGrAfgB6QH/AcMB+QHv
|
||||
Af8BrQHXAcMB/wERAUEBnAH/ASYBgwG1Af8BuQHrAdsB/wGsAfgB4QH/AYgB9QHOAf8BEQHJAYsB/wNZ
|
||||
AcMDDQERBAABLgJNAfoBFQHHAZ0B/wEAAUABIgH/ATwB9gHPAf8BIAHcAbQB/wEAAYUBLgH/AQABhgEt
|
||||
Af8BAAFGAR8B/wEAAR8BCAH/AQABIwENAf8DWQHyA1cBxQEpAU0BLgH6AToB9QHRAf8BOgH2AdAB/wEp
|
||||
Ak0B+oAAAyUBNwFdAWEBXQHiAQsBzwGJAf8BoQHtAdcB/wHUAfIB7gH/AegB9QHyAf8BtgHXAcUB/wEP
|
||||
AUABnAH/ASQBgwG1Af8B0QHrAeAB/wHpAfMB8gH/AdQB9QH0Af8BPwHfAbIB/wEEAcYBgQH/A1gBwAMR
|
||||
ARcBMQF2AWMB/gEzAfIBywH/AQABTwExAf8BJgHeAbcB/wE4AfABygH/AQABngFIAf8BAAG2AYsB/wEA
|
||||
AUsBIQH/AQABIAEJAf8BAAEaAQYB/wEAATUBGQH/A1kB8gNSAfQBPQH3AdcB/wE6AfUBzwH/ASkCTQH6
|
||||
gAADVgGzASsBWAErAfwBBwG+AVIB/wGNAfgB0QH/AaAB+AHeAf8BtwH1AekB/wGnAdgBwgH/AREBPwGb
|
||||
Af8BKAGEAbYB/wGyAesB2AH/AcAB9AHpAf8BnwH7Ad0B/wE5AesBsgH/AQMBtwFLAf8BTgFdAU4B8ANC
|
||||
AXUDWAHvATcB5wHJAf8BCQGgAVAB/wEEAZwBTwH/ATwB9wHWAf8BCQGzAYwB/wEAATkBFgH/AQABLwET
|
||||
Af8BAAEVAQAB/wEAATcBFwH/AQABpwGAAf8DWQHyAz4B+AE6AfUB0QH/ATgB9wHOAf8BAAESAQEB/4AA
|
||||
AxQBHAMiATIDQgF2A1QBrgFRAm0B9wGFAfEB0AH/AZ0B2QHDAf8BEgE/AZsB/wEqAYUBtwH/AZwB7AHT
|
||||
Af8BSgHrAb8B/wFeAmUB5QNUAa8DPQFqAxgBIgMRARcDTAGRA1EB9wE3AfcBzgH/AQABQQEiAf8BLQHe
|
||||
AbkB/wEqAdkBtAH/AQABIgEJAf8DAAH/AQABigE4Af8BAAG4AY8B/wEAAbABhAH/AREBtQGQAf8BOQH1
|
||||
Ac4B/wE7AfcB0gH/ARABogGFAf8DUQH3jAADIwEzAVoBXwFaAdsBmgHwAdAB/wGwAdoBxgH/AQ8BPgGb
|
||||
Af8BKQGFAbcB/wGrAe0B1QH/AUMB3QG0Af8DWQHDAx0BKgwAAwIBAwMrAfwBGwHBAaEB/wNBAfkDQQH5
|
||||
AT4B9gHZAf8BFQGvAY8B/wNTAfEBIQEyASoB+wEAAcEBkgH/ARABtAGMAf8BOwH3AdEB/wE4AfMBzAH/
|
||||
ARQBpwGKAf8DSAH2AxABFogAAzUBVgE+AlwB+AE+Ad0BsgH/AcAB/gHzAf8BsgHWAcQB/wEMAToBlwH/
|
||||
ASYBhQG2Af8BzQHtAeIB/wGsAfgB6QH/ASMBzwGaAf8BXAFkAVwB5wMUARsMAANYAcsBAAExAR8B/wNZ
|
||||
AewDWQHrARsBtAGWAf8BHAG4AZoB/wNZAewDUwHxAQABPwElAf8BLwHiAb0B/wE5AfEBywH/AQkBswGJ
|
||||
Af8BAAFSAS4B/wMvAf0DBAEGiAADFgEfASsBLAErAUMDQgF2A1kB9QGYAdsBxQH/AQ0BNgGWAf8BLAGH
|
||||
AboB/wGXAewB0QH/AVwBYAFfAdQDPAFoAy0BRgMHAQkMAANbAeEDTgHwA0sBkANVAeoBGAGvAZAB/wEf
|
||||
Ab4BnwH/A1kB8gNIAYQDUgH0AT8B9wHaAf8BDAG6AY8B/wEAAbgBjgH/AQQB0AGkAf8DPgH4A1IBqJQA
|
||||
AzoBYQEVAbQBhAH/AR0BRwGtAf8BLQGUAboB/wFYAmIB7wMeASsYAANSAaYDTgGXAzABSwNOAfABOQHq
|
||||
Ac8B/wNAAf0DWQHrAzABTQNOAfABKwHcAbUB/wNIAfYDQQH5AQQBzQGgAf8BAAGaAUsB/wM+AfiUAAMF
|
||||
AQcBWAFbAVgBywEfAa4BpQH/ARIBqwGSAf8DTwGbJAADXAHcAQUBgwE+Af8BRgH3AeYB/wNZAfIDOAFd
|
||||
BAADUwGsA1IB9ANOAfADVgG4ASkBLwEpAfoBAAGbAUsB/wNMAfOYAAMxAU8BGwHQAZAB/wFZAmQB7AMS
|
||||
ARggAANMAZMDWAHvAUEB9wHeAf8DQQH5A1gBywwAA04BlwNMAZMDGgElA1kB8gEAAY8BQQH/A1EB95gA
|
||||
Aw0BEQFIAWIBSQH2AVoBXAFaAc0DAAEBIAADVgG2AQABMgEiAf8DPgH4A1oBzQMGAQgYAANZAdcDWQHy
|
||||
A1ABo5wAA1ABnwM7AWUkAANTAbADQQH5AyEB+wMHAQkcAANTAbADUgGmhAAB/gE9AQAB/wH+AYwBIAH/
|
||||
Af4BrgGCAf8B/gE9AQAB/wH9Ad8BzgH/Af0BPgEAAf8B/gE9AQAB/wH+AZ0BOgH/Af4BrgGCAf8B9gE/
|
||||
AQAB/wH9AUYBAAH/Af0B1gHAAf8B9QGFARoB/wH+AT0BAAH/AkwBSwGPBAABRAFMAcUB/wFEAUwBxQH/
|
||||
ASYBLAG6Af8BJgEsAboB/wGqAeMC/wE/AacB5wH/AQABCwGIAf8BRAFMAcUB/wEmASwBugH/AaoB4wL/
|
||||
AT8BpwHnAf8BqgHjAv8BPwGnAecB/wEAAQsBiAH/AQABCwGIAf8BJgEsAboB/xcAAf8DAAH/AwAB/wMA
|
||||
Af8DAAH/AwAB/wMAAf8QAAHKAfMC/wHKAfMC/wHKAfMC/wFEAdEC/wEAAVEB2AH/AQsBugH7Af8BRAHR
|
||||
Av8BygHzAv8BygHzAv8BygHzAv8BygHzAv8BRAHRAv8BCwG6AfsB/wFEAdEC/wFEAdEC/wHKAfMC/wJc
|
||||
AVcB3wH7AVIBDQH/Af0BswGJAf8B+wE8AQAB/wH4AdUBwQH/AfoBRAEAAf8B+wE8AQAB/wH9AaQBRgH/
|
||||
AfwBhgEYAf8B+wE8AQAB/wH5AbMBjAH/AfkBowFGAf8B+wE8AQAB/wNUAa8IAAIDAQ0B/wGqAeMC/wE/
|
||||
AacB5wH/AUQBTAHFAf8BJgEsAboB/wEAAQsBiAH/AQABCwGIAf8BqgHjAv8BPwGnAecB/wEmASwBugH/
|
||||
AaoB4wL/AT8BpwHnAf8BPwGnAecB/wEAAQsBiAH/ASYBLAG6Af8CAwENAf8LAAH/AwAB/wMAAf8DTgH/
|
||||
A9QB/wOnAf8DpwH/A6cB/wOnAf8DAAH/AwAB/wwAAUQB0QL/AUQB0QL/AcoB8wL/AcoB8wL/AQsBugH7
|
||||
Af8BAAFRAdgB/wELAboB+wH/AcoB8wL/AUQB0QL/AUQB0QL/AcoB8wL/AcoB8wL/AcoB8wL/AcoB8wL/
|
||||
AUQB0QL/AUQB0QL/AyEBMAH3AToBAAH/Af0BtQGNAf8B+QGAAQ8B/wH1AZ0BPgH/AfQBqwGBAf8B9wE6
|
||||
AQAB/wH6AZQBLgH/AfoBlAEtAf8B9wE6AQAB/wH0AcIBpgH/AfcBOgEAAf8CYgFYAe8DDAEQCAACAwEN
|
||||
Af8BPwGnAecB/wE/AacB5wH/AUQBTAHFAf8BAAELAYgB/wE/AacB5wH/AUQBTAHFAf8BAAELAYgB/wEA
|
||||
AQsBiAH/AQABCwGIAf8BAAELAYgB/wE/AacB5wH/AT8BpwHnAf8BPwGnAecB/wIDAQ0B/wNNAZYHAAH/
|
||||
A9QB/wOnAf8DpwH/A04B/wPUAf8DpwH/A6cB/wOnAf8DpwH/A04B/wNOAf8DAAH/CAABRAHRAv8BygHz
|
||||
Av8BygHzAv8BygHzAv8BCwG6AfsB/wEAAVEB2AH/AQsBugH7Af8BygHzAv8BygHzAv8BygHzAv8BRAHR
|
||||
Av8BRAHRAv8BRAHRAv8BygHzAv8BygHzAv8BRAHRAv8EAAMqAUACYgFYAe8B/gGxAYYB/wH3AVIBDgH/
|
||||
AfABqwGEAf8B8QGOASkB/wH0AT4BAAH/Af4BsQGGAf8B9AE9AQAB/wHvAaoBgwH/AfIBTQEJAf8CWQFX
|
||||
Ab8MAAIDAQ0B/wFEAUwBxQH/AQABCwGIAf8BAAELAYgB/wEAAQsBiAH/AT8BpwHnAf8BPwGnAecB/wFE
|
||||
AUwBxQH/AQABCwGIAf8BJgEsAboB/wEAAQsBiAH/AT8BpwHnAf8BJgEsAboB/wEAAQsBiAH/A04B8AsA
|
||||
Af8D1AH/A6cB/wNOAf8DTgH/A9QB/wPUAf8D1AH/A9QB/wPUAf8DTgH/A04B/wMAAf8IAAHKAfMC/wHK
|
||||
AfMC/wHKAfMC/wELAboB+wH/AQsBugH7Af8BAAFRAdgB/wELAboB+wH/AQsBugH7Af8BygHzAv8BygHz
|
||||
Av8BygHzAv8BRAHRAv8BRAHRAv8BRAHRAv8BygHzAv8BygHzAv8IAAMXASACWQFXAb8B+wGZATYB/wH4
|
||||
AZABKAH/AewBpgFRAf8B6wGhAUkB/wHzAUgBAgH/AfwBmwE5Af8B7wGAARUB/wHqAa0BigH/AfABNgEA
|
||||
Af8DFwEgCAADTQGWAgMBDQH/AgMBDQH/AUQBTAHFAf8BPwGnAecB/wEAAQsBiAH/AQABCwGIAf8BAAEL
|
||||
AYgB/wEAAQsBiAH/ASYBLAG6Af8BAAELAYgB/wFEAUwBxQH/AT8BpwHnAf8BJgEsAboB/wIDAQ0B/wsA
|
||||
Af8D1AH/A6cB/wNOAf8DJgH/A04B/wNOAf8DTgH/AyYB/wNOAf8DTgH/A04B/wMAAf8IAAHKAfMC/wHK
|
||||
AfMC/wELAboB+wH/AQsBugH7Af8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BCwG6AfsB/wELAboB+wH/
|
||||
AcoB8wL/AcoB8wL/AcoB8wL/AUQB0QL/AUQB0QL/AUQB0QL/AcoB8wL/EAACOgE5AWACXAFXAd8B/QGR
|
||||
ASgB/wHwAaUBTQH/AeQBqAGFAf8B8gGCARUB/wH8AY4BIwH/AeoBnQFDAf8B6AGHASMB/wJZAVcBvxAA
|
||||
A00BlgIDAQ0B/wE/AacB5wH/AQABCwGIAf8BAAELAYgB/wEmASwBugH/AQABCwGIAf8BJgEsAboB/wEA
|
||||
AQsBiAH/AQABCwGIAf8BPwGnAecB/wEmASwBugH/AgMBDQH/CwAB/wPUAf8D1AH/A9QB/wNOAf8D1AH/
|
||||
A6cB/wOnAf8DTgH/A9QB/wOnAf8DpwH/AwAB/wgAAcoB8wL/AUQB0QL/AQsBugH7Af8BAAFRAdgB/wEA
|
||||
AVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQsBugH7Af8BCwG6AfsB/wHKAfMC/wHKAfMC/wHK
|
||||
AfMC/wFEAdEC/wFEAdEC/wHKAfMC/wgAAxcBIAMqAUADFwEgAwwBEAJHAUYBgAJiAVgB7wH2AYkBHwH/
|
||||
Ad4BogFRAf8B6QFSARUB/wH8AYcBGQH/AeMBpQGAAf8B5QFKAQsB/wNAAXAQAAIDAQ0B/wFEAUwBxQH/
|
||||
ASYBLAG6Af8BAAELAYgB/wEmASwBugH/AgMBDQH/AT8BpwHnAf8BJgEsAboB/wEAAQsBiAH/AUQBTAHF
|
||||
Af8BRAFMAcUB/wIDAQ0B/wsAAf8DTgH/A04B/wNOAf8DJgH/A9QB/wOnAf8DpwH/A04B/wPUAf8DpwH/
|
||||
A6cB/wMAAf8IAAFEAdEC/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFR
|
||||
AdgB/wEAAVEB2AH/AQABUQHYAf8BCwG6AfsB/wFEAdEC/wHKAfMC/wHKAfMC/wFEAdEC/wFEAdEC/wHK
|
||||
AfMC/wQAAxcBIAFiAlgB7wHFATIBAAH/AWICWAHvAxcBIAQAAwwBEAJHAUYBgAHkATUBAAH/AdsBjwE1
|
||||
Af8B4AGFASMB/wH5AUkBAAH/AeABkwE4Af8CYgFYAe8DDAEQDAADTQGWAgMBDQH/AT8BpwHnAf8BAAEL
|
||||
AYgB/wIDAQ0B/wIDAQ0B/wEmASwBugH/AgMBDQH/AgMBDQH/AUQBTAHFAf8BRAFMAcUB/wIDAQ0B/wcA
|
||||
Af8D1AH/A6cB/wNOAf8DTgH/A04B/wPUAf8D1AH/A9QB/wNOAf8DTgH/A9QB/wPUAf8DAAH/CAABCwG6
|
||||
AfsB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
|
||||
AQABUQHYAf8BCwG6AfsB/wELAboB+wH/AcoB8wL/AcoB8wL/AcoB8wL/AUQB0QL/AUQB0QL/BAABRwJG
|
||||
AYAB1AFLAQAC/wG9ASQB/wHUAUwBAAH/AUcCRgGADAADIQEwAlwBWQHPAdgBUQEcAf8B3QFSARsB/wHr
|
||||
AUABAAH/AdQBhgEqAf8CTAFLAY8QAAIDAQ0B/wFEAUwBxQH/AUQBTAHFAf8CAwENAf8DTQGWAgMBDQH/
|
||||
A00BlgNNAZYCAwENAf8BRAFMAcUB/wIDAQ0B/wcAAf8D1AH/A6cB/wOnAf8DpwH/AyYB/wNOAf8DTgH/
|
||||
AyYB/wMmAf8DTgH/A04B/wNOAf8DAAH/CQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFR
|
||||
AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BCwG6AfsB/wFEAdEC/wHK
|
||||
AfMC/wHKAfMC/wFEAdEC/wFEAdEC/wQAAjoBOQFgAcoBQgEAAv8B0gGIAf8BygFCAQAB/wI6ATkBYBAA
|
||||
AwwBEAJcAVkBzwHTAUgBEAH/AdUBQQEEAf8B1QFCAQYB/wJiAVgB7xAAAgMBDQH/AUQBTAHFAf8BRAFM
|
||||
AcUB/wIDAQ0B/xAAA00BlgIDAQ0B/wNNAZYHAAH/A9QB/wOnAf8DpwH/A6cB/wNOAf8DTgH/A04B/wNO
|
||||
Af8D1AH/A6cB/wOnAf8DpwH/A6cB/wMAAf8FAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEA
|
||||
AVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wELAboB+wH/AUQB0QL/
|
||||
AcoB8wL/AcoB8wL/AcoB8wL/AUQB0QL/BAADFwEgAbcBIQEAAv8B5wG/Af8BtwEhAQAB/wMXASAUAAMM
|
||||
ARAB2gErAQAB/wHKAUMBDQH/AdUBMgEAAf8B0AE6AQAB/xAAA00BlgIDAQ0B/wIDAQ0B/wNNAZYjAAH/
|
||||
A9QB/wOnAf8DpwH/A6cB/wNOAf8D1AH/A6cB/wNOAf8D1AH/A04B/wOnAf8DTgH/A6cB/wMAAf8FAAFR
|
||||
AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
|
||||
AQABUQHYAf8BAAFRAdgB/wELAboB+wH/AQsBugH7Af8BygHzAv8BygHzAv8BygHzAv8BygHzAv8IAAFc
|
||||
AlcB3wHUAZMBOwH/AVwCVwHfHAABXAJXAd8BxQE4AQAB/wHLATMBAAH/AlwBVwHfQwAB/wPUAf8D1AH/
|
||||
A9QB/wPUAf8DTgH/A9QB/wOnAf8DTgH/A9QB/wOnAf8DpwH/A6cB/wOnAf8DAAH/BQABUQHYAf8BAAFR
|
||||
AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
|
||||
AQABUQHYAf8BCwG6AfsB/wELAboB+wH/AQsBugH7Af8BygHzAv8BygHzAv8BygHzAv8IAAFMAksBjwGy
|
||||
ARcBAAH/AUwCSwGPGAACOgE5AWABxgEpAQAB/wHGASwBAAH/AWICWAHvAyEBMEMAAf8DAAH/A6cB/wOn
|
||||
Af8DpwH/A04B/wPUAf8D1AH/A04B/wNOAf8DpwH/A04B/wOnAf8DpwH/AwAB/wQAAQsBugH7Af8BAAFR
|
||||
AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
|
||||
AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQsBugH7Af8BCwG6AfsB/wHKAfMC/wHKAfMC/wgAAyEBMAGy
|
||||
ARcBAAH/AyEBMBQAAkcBRgGAAbwBIAEAAf8BwQEjAQAB/wJRAVABnwMXASBLAAH/AwAB/wMAAf8DAAH/
|
||||
AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wUAAVEB2AH/AQABUQHYAf8BAAFR
|
||||
AdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BAAFRAdgB/wELAboB+wH/
|
||||
AQsBugH7Af8BAAFRAdgB/wEAAVEB2AH/AQABUQHYAf8BCwG6AfsB/wELAboB+wH/DAABWQJXAb8MAAMM
|
||||
ARADQAFwAVwCVwHfAVwCVwHfAkwBSwGPAxcBIFsAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/
|
||||
AwAB/wMAAf8DAAH/CQABUQHYAf8BAAFRAdgB/wELAboB+wH/AQABUQHYAf8BAAFRAdgB/wEAAVEB2AH/
|
||||
AQABUQHYAf8BCwG6AfsB/wELAboB+wH/AQsBugH7Af8BCwG6AfsB/wELAboB+wH/AQsBugH7Af8BCwG6
|
||||
AfsB/wELAboB+wH/AQABUQHYAf8MAAMXASADFwEgA0ABcAJHAUYBgAFRAlABnwNAAXADIQEwmAABCwG6
|
||||
AfsB/wELAboB+wH/AQsBugH7Af8BCwG6AfsB/wELAboB+wH/AQsBugH7Af8BCwG6AfsB/wELAboB+wH/
|
||||
AUQB0QL/AUQB0QL/AUQB0QL/AcoB8wL/AcoB8wL/AQsBugH7Af8BCwG6AfsB/wELAboB+wH/EAACOQE6
|
||||
AWACVwFZAb8CAAExAf8BFwEVAT4B/wKCAYEB/wNcAd8DUQGfAyoBQBAAA1wBzwNhAdwCYQFcAdwCYQFc
|
||||
AdwDYQHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmEBXAHcAmABWgHe
|
||||
AVgCVgG8AwMBBAEPASABNwH+AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/
|
||||
AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/A1gB7wQAA2IB7wNiAe8DYgHvA2IB7wNY
|
||||
Ae8DYgHvA2IB7wNiAe8DYgHvA2IB7wNiAe8DYgHvA2IB7wNiAe8DYgHvA1gB7wgAAxcBIAJZAVwBzwIA
|
||||
ATwB/wJXAVwB3wIAATwB/wJGAUcBgAKFAYQB/wGqAagBpgH/AZgBlwGWAf8ChQGEAf8DVAGvAwwBEAgA
|
||||
A1wB0QHtAdcBqQH/AeMBwgGSAf8BygGfAUUB/wHQAa4BgQH/AcwBpAFKAf8BxgGZAUAB/wHUAbMBhgH/
|
||||
AccBmwFCAf8BvAGGAS0B/wHGAZgBPwH/Ac0BngFDAf8CYQFcAdwBVwJVAboDDAEQBAADOQFgAwAB/wEg
|
||||
ATsBTwH/AU4BmwGsAf8BTgGbAawB/wFOAZsBrAH/AU4BmwGsAf8BTgGbAawB/wFOAZsBrAH/AU4BmwGs
|
||||
Af8BTgGbAawB/wFOAZsBrAH/AU4BmwGsAf8BJwFDAYQB/wMAAf8EAAEOARABEgH/AaIBpQGnAf8BvgHB
|
||||
AcMB/wE0ATcBOQH/ASsBLgEwAf8BQwFGAUgB/wGmAakBqwH/AcMBxgHIAf8BrgGxAbMB/wFHAUoBTAH/
|
||||
ASoBLQEvAf8BsAGzAbUB/wG7Ab4BwAH/AVABgAGCAf8BMgE1ATcB/wEpASwBLgH/BAADFwEgAlgBYgHv
|
||||
AlkBXAHPAyEBMAJXAVwB3wJQAVEBnwQAAoIBgQH/Ab0BuwG5Af8BtwG1AbMB/wGuAawBqgH/AosBigH/
|
||||
A1wBzwMMARAEAAJeAVsB2AH9AewBvQH/AfQB5wG+Af8B6QHPAZ8B/wHSAa8BggH/AcwBpAFKAf8B0wGy
|
||||
AYUB/wHHAZsBQgH/AbsBhQEsAf8BxwGbAUEB/wHGAZgBPgH/AcQBjAEyAf8DWQHDAygBPQwAAzkBYAMA
|
||||
Af8BHgE5AU0B/wFLAZgBqQH/AUsBmAGpAf8BSwGYAakB/wFLAZgBqQH/AUsBmAGpAf8BSwGYAakB/wFL
|
||||
AZgBqQH/AUsBmAGpAf8BSwGYAakB/wIAARYB/wNQAZ8EAAELAQwBDgH/ATkBPAE+Af8BqQGsAa4B/wFS
|
||||
AYIBhAH/AT0BQAFCAf8BUgGCAYQB/wGVAZgBmgH/AZ4BoQGjAf8BlQGYAZoB/wE/AUIBRAH/ATYBOQE7
|
||||
Af8BggGFAYcB/wG0AbcBuQH/AaYBqQGrAf8BNQE4AToB/wGUAZcBmQH/BAACWQFcAc8CWQFcAc8DDAEQ
|
||||
AyEBMAIAAVEB/wMXASAEAANiAe8BtwG2AbQB/wG+AbwBugH/AbgBtgG0Af8BsQGvAa0B/wKLAYoB/wNU
|
||||
Aa8EAAFYAlYBuwNqAfkB/wH8AdMB/wH0AekBvwH/AegBzAGcAf8BzAGjAUgB/wHAAZABOAH/AbwBhwEu
|
||||
Af8BvQGIAS8B/wHAAY4BNQH/AcsBlgE6Af8BZAJTAfEBUgJQAaQUAANGAYACAAEGAf8BQQGMAZ8B/wFI
|
||||
AZUBpgH/AUgBlQGmAf8BSAGVAaYB/wFIAZUBpgH/AUgBlQGmAf8BSAGVAaYB/wFIAZUBpgH/AQABFgEs
|
||||
Af8DWAHvAxcBIAQAASsBLQEvAf8BhAGHAYkB/wGHAYoBjAH/AUIBRQFHAf8BQwFGAUgB/wFQAYABggH/
|
||||
AZoBnQGfAf8BpAGnAakB/wFSAYIBhAH/AY4BkQGTAf8BjgGRAZMB/wFQAYABggH/AYYBiQGLAf8BkwGW
|
||||
AZgB/wFJAUwBTgH/AYkBjAGOAf8COQE6AWACAAGIAf8DIQEwAwwBEAJQAVEBnwIAAYgB/wNUAa8CVwFZ
|
||||
Ab8DYgHvAbgBtwG2Af8BxQHDAcIB/wG/Ab0BuwH/AbkBtwG1Af8BrgGtAasB/wKFAYQB/wMqAUADDAEQ
|
||||
AVgCVgG5A2oB+QH/AfkB0AH/AfEB4QG4Af8B6AHLAZwB/wHZAbYBiAH/AccBnAFCAf8BvQGJAS8B/wG6
|
||||
AYMBKQH/AcIBiAEtAf8CagFbAfkDVgG2AywBQwFQAk8BmwMIAQsOAAELAf8CAAELAf8CAAELAf8CAAEL
|
||||
Af8CAAELAf8CAAELAf8CAAELAf8CAAELAf8CAAELAf8CAAELAf8DSAGHCAABmgGdAZ8B/wGKAY0BjwH/
|
||||
AUUBSAFKAf8BOQE8AT4B/wGGAYkBiwH/AY0BkAGSAf8BTAFPAVEB/wFMAU8BUQH/AUIBRQFHAf8BkQGU
|
||||
AZYB/wG6Ab0BvwH/AY8BkgGUAf8BjQGQAZIB/wGKAY0BjwH/AUcBSgFMAf8BhwGKAYwB/wJXAVkBvwJZ
|
||||
AVwBzwJQAVEBnwIAAZIB/wIAAZIB/wJXAVwB3wNUAa8CRgFHAYADXAHfAb4BvQG7Af8BzAHLAckB/wHG
|
||||
AcQBwwH/AcABvgG8Af8BugG4AbYB/wGZAZgBlgH/A1EBnwQAAwwBEAFYAlYBuwHMAbQBigH/Af4B9wHP
|
||||
Af8B9AHmAb0B/wHvAdgBqAH/AfAB4gG5Af8B7QHeAbYB/wHrAdoBsgH/AdcBugGVAv8B/QHbAf8CagFn
|
||||
AfkDWQHHAl4BWwHZAVYCVQGxCAADIQEwAwAB/wE1AVEBkgH/AUMBjgGhAf8BQwGOAaEB/wFDAY4BoQH/
|
||||
AUMBjgGhAf8BPAGGAZoB/wEAAQQBHAH/A1gB7wMyAVAMAAGRAZQBlgH/AYQBhwGJAf8BOQE8AT4B/wGB
|
||||
AYQBhgH/AZYBmQGbAf8BigGNAY8B/wFFAUgBSgH/AUMBRgFIAf8BPAE/AUEB/wFPAVIBgQH/AZ4BoQGj
|
||||
Af8BlwGaAZwB/wGVAZgBmgH/AU0BUAFSAf8BggGFAYcB/wGIAYsBjQH/AgABnQH/AgABnQH/AlcBWQG/
|
||||
AjkBOgFgAlkBXAHPAkYBRwGACAADWQG/AcMBwgHBAf8B0wHSAdEB/wHNAcwBygH/AccBxgHEAf8BwQG/
|
||||
Ab4B/wGxAa8BrgH/A1wB3wgAAU4CTQGVAlwBWAHRAfkB3gGtAf8B9gHvAckB/wHyAeQBugH/AfcB8AHM
|
||||
Af8B/QH/AeUB/wH9Af8B4wH/Af0B/wHkAf8B/AH/AeMC/wH9Ad0C/wH0AcsB/wHbAdkBvgH/AmABWwHW
|
||||
CAADSwGPAgABDAH/AUABiwGfAf8BQAGLAZ8B/wFAAYsBnwH/AUABiwGfAf8BHgE4AU4B/wIAAQUB/wNZ
|
||||
Ac8DIQEwEAABJwEpASsB/wE8AT8BQQH/AVIBggGEAf8BlgGZAZsB/wGMAY8BkQH/AU8BUgGBAf8BTAFP
|
||||
AVEB/wE1ATgBOgH/AYABgwGFAf8BkQGUAZYB/wGOAZEBkwH/AZQBlwGZAf8BUgGCAYQB/wGAAYMBhQH/
|
||||
AYoBjQGPAf8BUgGCAYQB/wIAAaYB/wJGAUcBgAgAAlcBWQG/AkYBRwGACAADWQG/AsgBxwH/AdoB2QHY
|
||||
Af8B1AHTAdIB/wHOAc0BzAH/AcgBxwHFAf8BwgHAAb8B/wKCAYEB/wsAAQEBUgJRAaECYgFYAe8B/wHu
|
||||
AcAB/wH6AfsB3gH/AfsB/QHhAf8B+wH8AeAB/wH7Af0B4QH/AfsB/AHfAf8B+wH8Ad8B/wH7Af0B4AH/
|
||||
AfsB/gHjA/8B7gH/A1wB0QQAAxYBHwEPASABNwH+AgABCwH/AgABCwH/AgABCwH/AgABCwH/AgABCwH/
|
||||
AgABCwH/A1wBzhgAARMBFgEYAf8BSQFMAU4B/wGYAZsBnQH/AY4BkQGTAf8BUAGAAYIB/wFMAU8BUQH/
|
||||
AT4BQQFDAf8BMgE1ATcB/wFHAUoBTAH/AZcBmgGcAf8BnQGgAaIB/wGBAYQBhgH/AVEBgQGDAf8BigGN
|
||||
AY8B/wGBAYQBhgH/AUMBRgFIAf8CAAGwAf8CRgFHAYAIAAJXAVkBvwJGAUcBgAgAA1kBvwHOAc0BzAH/
|
||||
AuEB4AH/AdsB2gHZAf8B1QHUAdMB/wHPAc4BzQH/AckByAHGAf8CggGBAf8MAANCAXUBWQJWAb4B4AHE
|
||||
AZUB/wH5Ae4BwwH/AfsB/QHgAf8C+gHbAf8B+AHzAdAB/wH7Af0B4AH/AfsB/AHgAf8B+wH8Ad8B/wH8
|
||||
Af4B4gH/Af0B/gHeAf8DXAHRBAADRgGAAgABDAH/ATsBhQGZAf8BOwGFAZkB/wEhATsBUQH/AgABBQH/
|
||||
A1cB3wMqAUAcAAE+AUEBQwH/AZYBmQGbAf8BjwGSAZQB/wFRAYEBgwH/AUwBTwFRAf8BPwFCAUQB/wE5
|
||||
ATwBPgH/AUoBTQFPAf8BMQE0ATYB/wFQAYABggH/AY0BkAGSAf8BUgGCAYQB/wGKAY0BjwH/AYABgwGF
|
||||
Af8BRgFJAUsB/wFBAUQBRgH/AgABuQH/AgABuQH/AlcBWQG/AjkBOgFgAlkBXAHPAkYBRwGACAADWQG/
|
||||
AtMB0gH/AekB6AHnAf8C4gHhAf8B3ALbAf8B1gHVAdQB/wHCAcEBwAH/A1wB3xAAA1UBsgJtAWgB9wH+
|
||||
AeIBrwH/AfEB4wG4Af8B9QHtAcYB/wH6AfsB3QH/AfwB/wHlAf8B+gH5AdoB/wH6AfsB3QH/AfkB+AHa
|
||||
Af8B/AHvAcIB/wNeAdgEAANXAd8BBQEdATQB/wE4AYEBlwH/ARkBMgFIAf8DAAH/A1ABnwMMARAgAAGg
|
||||
AaMBpQH/AZEBlAGWAf8BUQGBAYMB/wFMAU8BUQH/AUEBRAFGAf8BNwE6ATwB/wFMAU8BUQH/AU4BUQGA
|
||||
Af8BRAFHAUkB/wFQAYABggH/AVEBgQGDAf8BjAGPAZEB/wGBAYQBhgH/AUUBSAFKAf8BQgFFAUcB/wEu
|
||||
ATEBMwH/AlcBWQG/AlkBXAHPA1QBrwIAAcIB/wIAAcIB/wJXAVwB3wNUAa8CRgFHAYADXAHfA9gB/wHw
|
||||
Au8B/wHqAekB6AH/AeQB4wHiAf8C3QHcAf8CrQGsAf8DUQGfEAADDAEQAVgCVgG7A2oB+QH6AeABsAH/
|
||||
Af0B8QHJAf8B+wHwAccB/wH0AeoBwwH/AfYB7gHJAf8B/AH6AdkC/wHxAcEB/wNqAfkBVwJVAboGAAEL
|
||||
Af8CAAELAf8CAAELAf8CAAELAf8DWgHbKAABmgGdAZ8B/wGXAZoBnAH/AUwBTwFRAf8BQgFFAUcB/wE1
|
||||
ATgBOgH/AUwBTwFRAf8BTQFQAVIB/wFFAUgBSgH/AYQBhwGJAf8BkgGVAZcB/wGUAZcBmQH/AYABgwGF
|
||||
Af8BSQFMAU4B/wFDAUYBSAH/ATEBNAE2Af8BEAESARUB/wI5AToBYAIAAcsB/wMhATADDAEQAlABUQGf
|
||||
AgABywH/A1QBrwJXAVkBvwNiAe8D3QH/AvcB9gH/AfEC8AH/AesB6gHpAf8C3gHdAf8CiAGHAf8DKgFA
|
||||
FAADDAEQAVgCVgG7AVoCVwHFA2UB9AHKAbMBiAL/AfwB0QL/AfkBzQH/AfAB1wGoAf8DXwHzAVcCVQG6
|
||||
AwwBEAcAAf8BFQEtAUQB/wEbATMBSwH/AwAB/wMMARAoAAEnASoBLAH/AZ0BoAGiAf8BSQFMAU4B/wEz
|
||||
ATYBOAH/AUsBTgFQAf8BUAGAAYIB/wFEAUcBSQH/AYIBhQGHAf8BkgGVAZcB/wGVAZgBmgH/AYABgwGF
|
||||
Af8BRwFKAUwB/wFHAUoBTAH/ATgBOwE9Af8DWAHpA1wBzwQAAlkBXAHPAlkBXAHPAwwBEAMhATACAAHT
|
||||
Af8DFwEgBAACggGBAf8D7wH/A/0B/wL4AfcB/wHyAvEB/wKjAaIB/wNUAa8gAANAAXEBVQJTAa0BWAJW
|
||||
AbkBYQJcAdwBYQJcAdwDWQHHA1MBqgMMARAIAANaAdsCAAELAf8CAAELAf8CAAELAf8DQAFwKAABFQEX
|
||||
ARkB/wEvATIBNAH/ATwBPwFBAf8BSwFOAVAB/wFSAYIBhAH/AUkBTAFOAf8BjAGPAZEB/wGQAZMBlQH/
|
||||
AZcBmgGcAf8BgQGEAYYB/wFKAU0BTwH/AUgBSwFNAf8BOAE7AT0B/wNdAe0DTQGRAyIBMgQAAxcBIAJY
|
||||
AWIB7wJZAVwBzwMhATACVwFcAd8CUAFRAZ8EAAKCAYEJ/wP2Af8CpwGmAf8DXAHPAwwBECgAAw4BEwM4
|
||||
AV0DOAFdAysBQhAAAwwBEANZAc8CAAEKAf8CAAEKAf8DVwHfAxcBICQAAQUBCAEKAf8BlgGZAZsB/wGD
|
||||
AYYBiAH/AYQBhwGJAf8BTQFQAVIB/wFGAUkBSwH/AbEBtAG2Af8BnwGiAaQB/wGBAYQBhgH/AUABQwFF
|
||||
Af8BUgGCAYQB/wFCAUUBRwH/A0wB8wNNAZEDIAEuDAADFwEgAlkBXAHPAgAB4gH/AlcBXAHfAgAB4gH/
|
||||
AksBTAGPApIBkQH/AugB5wH/AsEBwAH/AooBiQH/A1QBrwMMARBQAAMWAR8DWAHmAgABCwH/AgABCwH/
|
||||
AQ8BIAE3Af4DQAFwIAABCwEOARAB/wGpAawBrgH/AZ4BoQGjAf8BlAGXAZkB/wEpASsBLQH/A0EB+QE8
|
||||
AT8BQQH/Ab0BwAHCAf8BNgE5ATsB/wECAQUBBwH/AUMBRgFIAf8BBwEJAQwB/wNPAZcDIgEyGAACOQE6
|
||||
AWACVwFZAb8CAAHpAf8BGgEVAcIB/wKCAYEB/wNcAd8DUQGfAyoBQGAAAzUBVwNaAdsBDwEgATcB/gNI
|
||||
AfYgAAIzATYB/wEKAQwBDgH/AaQBpwGpAf8BPAE/AUEB/wISARQB/wNQAZoBHQEeASEB/wESARUBFwH/
|
||||
AQwBDgEQAf8BMQEyATUB/wIXARkB/wEyATMBNgH/Ax4BKwwAAUIBTQE+BwABPgMAASgDAAFAAwABMAMA
|
||||
AQEBAAEBBQABgAEBFgAD/wEAAf4BPwYAAfgBHwYAAeABDwYAAcABAwYAAYABAR4AAeABBwYAAcABAwGA
|
||||
BQABwAEDAYAFAAH4AR8BgAUAAfgBPwHgAYAEAAH8AT8BwQHABAAB/AE/AcEB+AQAAf4BfwHDAfkFAAEB
|
||||
AgAB+AEPAwABAwIAAcABBwMAAQMCAAGAAQMCAAGAAQcBAAEBAYABAwIAAcABAwEAAQEBgAEDAgAB8AED
|
||||
AcABAQGAAQMCAAHAAQEB4AEBAYABAwIAAYIBAAHgAQEBAAEDAgABgwGAAfABAQEAAQMCAAGDAcAB8AHx
|
||||
AQABAQIAAYMB4AHwAf8BAAEBAgABxwHwAv8BAAEBAgABxwHgAv8BAAEBAgABxwHBAv8BgAEBAgAB7gEH
|
||||
Av8B4AEDAgAB4AE/BP8CAAHwAQ8DAAEBAgABwAEDAQABAQEAAQECAAGBAQEBAAEDAYABAQIAAYEBAQEA
|
||||
AQcBwAEBBgAB4AEDBAABgAEAAcABBwIAAQMBAAHAAQABwAEPAgABMwEAAcABAAGAAT8CAAEzAQAB4AEA
|
||||
AYABfwIAAQMBAAHwAQABgAH/BAAB8AEAAYMB/wQAAfgBAAGDAf8CAAGBAQEB/gEBAYMB/wIAAYEBAQH/
|
||||
AYcBgQH/AQABAQHAAQMC/wHAAf8BAAEDAfABDwL/AfAB/wEAAQcL
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="tsTerrainTypes.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>314, 17</value>
|
||||
</metadata>
|
||||
<assembly alias="System.Drawing" name="System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||
<data name="toolStripButton1.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAABWSURBVDhPY2AgAWRmZv5HxiRohSgFad6/fz8Yg9gDYwDR
|
||||
XqCvf7HZRlKAYVNMkhdIsg1b3KHbRnRIwwxDdwHJiYUqBuDzBkwOZ9LF5wKivEMVA8j1AgCw4woaY7rJ
|
||||
SwAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="toolStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||
<value>17, 17</value>
|
||||
</metadata>
|
||||
<data name="toolStripButton15.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAEiSURBVDhP7ZKxSgNBEIYHbH0A38D3EF/AxkdIqaV2V1nc
|
||||
HoKNEkGw1lRWwYiF1RVBCFhEgqgQxbPIKebIcblcPnf2zBGtLbMw/Hu7+383M7siiyGFkb3USKw6NeJl
|
||||
RqLCl2DoSZIb6U2MtO1eYxrIGr7UNOx8K/elqypqJo3hbB01k0RuzjiBuAdvbbhvwMEyXNZcqJlBFw5X
|
||||
kE9PRuQjFKJ/dcabHRTkgGpMB3ZtF56vyrjYhK8+YyN9qUyd49I4A0yyMoPXEO5OYfgCHw/OSHQLTy1s
|
||||
aa0K4EBayp8MbA9CgiVQ4GPTlnMORQ4nq9iebfwGaAY6VOcyqMrs1OF6uzxjBPcGZx1XtXGkG6rvRrKf
|
||||
Wwjt975CrNbnzywe8T914BvPFkdY2/qCYgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton2.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKrSURBVDhPjZLZTxNRGMX7D/lAl8El/hc+GsNW6AIEEJFN
|
||||
0cQHNYJEo5FFqqVhFUV2O4CmilCoWDCYspQuCKVAV6BTpsvxu1PlkdDk5GY69/zOmXs/Gafjy1U6vlmp
|
||||
522kIKcfEjl9Q5rT86B3ki4VT+JK6RQul/DILhoPXS3lFxS6sWsy9uO0fNuSO4Ylt4B4Ig2BFDtJIXyc
|
||||
xF5YRCCakJ4FMYX9SAKtpuG0we5K3HhkOeC0I/kyTm92LLliuNfnR0wkM20seDKH4GECe2SIxpISOEKr
|
||||
9+AE6744zPYgpuwH4Mr4OAEmw3YC3O3ZlTYxMYA/IiJ4lJCSWYNdauPcjWN9R0BtpwdfV0JQaRvSBBgS
|
||||
bc5jAvikTUyFjVb4aT2MpxCnVqGjJFx+li5gdVtAtdGNXosPKs0YCNCQtm4c4U63Dx6qyLQVOKH0pJR+
|
||||
KKSwHRBPzY7tGG6/2YRp+g+URSMMwGN2lQBdO1J1NaUXNVlR/GwBJSRt8zzU9D9791+V7WswmD1QFg4T
|
||||
gK5pxhFFnWmLvo1Ea53Ji7pOJg9qjB5KdKHKsInKDicq2tdR+XoDraNOKNUfMwDLSjRjJmWMJIIwc/Vb
|
||||
t1T5VgcByHizbY20iheDa1AUfMgAppfDZPb+k+c0XTJTcpXBKZkryFje4kBZy2809a9AkT/AAGbw9hBq
|
||||
jV7pvs+jkpe/8Lh7GfK8fsgu0iFOLIakugJd2cMveWeKzYTu+U886FyEPLePAMU8xmxBapABWDY+nykG
|
||||
0DT/wP0OGwF6IMumORieDxDAfe4G6sZ51LdZkZVDkyjXmDcHvu9jYGbvXN/Pzqi+dQ41r2aRdd0YkKm0
|
||||
n56qtBOjytyJoEozTuM5Kk2YsnAICvUgXdV7yPPf0YH1UeVeSu2Rki/kdEWycru+/QU0BQ9a6sg3EgAA
|
||||
AABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton14.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKnSURBVDhPjVNdSJNRGD4RRJddmUgYXvR/YxAZZVfCiCCi
|
||||
iwgqigx/SFAIb0pjplhplJOmm841P9dG25wlYxHO1jY3F81N3PAHQ6c4mJtin8rA2tbTOQeSpRK98MDh
|
||||
+d73fZ73PecjZIdwuVxP+vr6IlKp9BcDOzNup9xtnNlszjIYDD+xJRin1+tzdmzCulsslnBPT0+aAv39
|
||||
/ZiYmEA6nUYqlUIoFOIc+8ZyWO5fjrRa7Uam4NzcHHp7ezE2NsZhMpnAuMxgNdwNtayhM2J8fJwrMni9
|
||||
XlitVtAkDnZmHHOTTCYRDAbBarq6uvREo9Ekp6am4Pf7EQgEuCJT3xp/HI2MjMDpdMJut0OlUiUJtSeu
|
||||
r68jFothZmYGs7OzoPNhenp60xE7Dw0NYXJyEjabjWN0dBSdnZ0iMRqNvMHq6ipWVlYwPz/P7fp8vs0d
|
||||
MNXKN4Uo0ZzEp882OBwO7rajo0MkgiDwBqIoYnl5GfF4HJFIhDtgo7ndbq5Y1l2Ax5bruKY8ikH7ABeQ
|
||||
yWQikcvlPxKJBNbW1hCNRnlxOBxGle48KrVnUC6cQrE6H7XvrsLoa0W16TIkLdlwDTvQ1ta2QeiWbWwh
|
||||
CwsLfAzWhO2iQluA94F2mP1yXvjWJ4NssBqCtxnlOglOP92L5ldNHraDPXSMEnob39h2FxcXsbS0hLt0
|
||||
Xlb8cqAKTR8r0PihFHWWO6i3lkHpasDN7kIckpLU5sukLyxLrVY3KhSK7x6PBzdUx2D4KoPuywsIw814
|
||||
7XlGm9yDwlWPUt0F5D4i8ZyHJH/b06ZXc4JCd0WRh4utB1DUkoVzz/fhluYs2p11KNZKQAuj2Q/I8X/+
|
||||
XEqlUkLd2Omi3BSXDjfsStwWinCwhkRyasmR//ozM5Py7pNEbs1u7K8heZn8b1ywZgwAtruEAAAAAElF
|
||||
TkSuQmCC
|
||||
</value>
|
||||
</data>
|
||||
<data name="toolStripButton3.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8
|
||||
YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAKWSURBVDhPjZNvSBNhHMd9GdGrCHoTFL1avSqE1ovVFeaf
|
||||
lnplm7p0/kGXuSQLIxxdqTgnWbkiS2YvJtimZnQkiSv3J+fmkO2eW0YKFW53g1aMyD1nBcHxdI+6VzfC
|
||||
g4c7nvt9vr/v93f35ORsXmFntZIZraHBaG3KN0aIPichBu36VGiogg4NnFdm6rLeWafewD6rTzIjNSA8
|
||||
fIGK2HWKoK1MERrSUCGbFgQGK5J+61lDVhh33oCrLEwMHgBxqAGc0MryQkuUS5cscqv7/Q9Iy5yVTHrv
|
||||
quVOGGcNjTtHYlABONgsLRPLwxuAX7vOcsI1SaiKjf3cN9tPAk+vmpa5AM7aVHi4koomYJkEt2/AQtsm
|
||||
3AJ4aJQcnfL0qClXT0lKJuAbJcSITaeQOl3OdM1EwI5YDjZhF66OAoW3jxDlAg5p2tLAcCEGQVy4gsUY
|
||||
Dl5a3+NhY5QTKrCAx5JFIGivSoWeaCiGXyvacAGN63ACGqTnBpZL1zE8PD59M59ymQrkEeYHNfT8gBbg
|
||||
QUm5yzfBRpZP12NYikG+T/zaQ3ed/jPVnrcgi+C3lioDj8nku37Swqz83ssmhJPYsiSmjXJQheHJjuK/
|
||||
ixOtyNt2Ar1sVenkc+grNfil7+y5cwbMdBdSOC9e06Y8ynePEJdem1AiYkMrgfvI3U2iVw3K3TIRr0Wt
|
||||
fGtW066eghQelttMiJO3C1dnuorRZ18v+vZxBH1fdqBPM51ogjgmOrOJZPtV6auEfra/EsWCVpT8MIzi
|
||||
oUdo4Wk9suQrvkxezN3+3zOSefnCqNK7zefQ8tQttDTVgeYelqOJpsM/nmsP7tiSAC4aNxzRO6pz0ZvO
|
||||
IjRWp/zq0OXu2jKcKRxvOLpzqPKQ2V5LbMvs/QO77KO/y8T3cgAAAABJRU5ErkJggg==
|
||||
</value>
|
||||
</data>
|
||||
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>43</value>
|
||||
</metadata>
|
||||
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>
|
||||
AAABAAEAICAAAAEAIACoEAAAFgAAACgAAAAgAAAAQAAAAAEAIAAAAAAAgBAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
|
||||
/wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9MVN3/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/0tT2v8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP90gOP/SVHW/0pS1/8AAAD/AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP///wAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAAAAAAAAAAAAAA/2vwyv9q8Mr/IYaQ/wAA
|
||||
AP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAAAA/3B52f9ES8f/AAAA/wAAAAAAAAAAAAAA/23x
|
||||
zP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP//
|
||||
/wD///8AAAAAAAAAAAAAAAAAAAAA/0ZNzv8AAAD/AAAAAAAAAP9udtP/bnbS/x4qfv9DScD/AAAA/wAA
|
||||
AAAAAAAAAAAA/wAAAAAAAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP//
|
||||
/wD///8A////AP///wAAAAAAAAAAAAAAAP9ye97/RErJ/0NJxP8AAAD/Q0m+/2tzzP9DSbr/Q0m5/x4q
|
||||
e/9DSbr/AAAA/wAAAAAAAAAAAAAA/xuNgP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAD///8A////AP///wD///8A////AAAAAAAAAAD/Tbia/02rlv8ccn//CkNR/wtCU/8VNWj/Hip6/0NJ
|
||||
s/9DSbL/Hip7/x4qe/9DSbT/AAAA/wAAAP80YaT/DkJa/0JMwv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAAAAAAAP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAD/XevD/1fov/9X5r7/ETtf/x0s
|
||||
eP9DSa7/Q0mt/0NJrP8eKnv/Hip7/0NJrv9DSbD/Hip7/0JLtP87VKz/Hip7/0NKwv8AAAD/AAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAD/Vee+/xM4
|
||||
Yv9DSa//Hip7/0NJqP9DSaf/Q0mm/0NJpv9DSab/Q0mo/0NJqf8eKnv/Hip7/0JKsv8eKnv/Hip7/0NK
|
||||
wv8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AAAAAAAAAAAAAAAA/2N+
|
||||
vv8QO13/Q0mu/x4qe/9DSab/Q0mm/0NJpv9DSab/Q0mm/0NJpv9iZ7P/Q0mm/0NJpv8eKnv/Q0mt/x4q
|
||||
e/8eKnv/Hip7/0NKwv8AAAD/AAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wD///8AAAAAAAAA
|
||||
AAAAAAD/aG7I/2Vrwf9DSar/Hip7/0NJpv9DSab/Hip7/0NJpv9DSab/YGex/2Bnsf9DSab/Q0mm/x4q
|
||||
e/9BS6T/Q0ms/x4qe/8eKnv/Hip7/0RKw/8AAAD/AAAAAAAAAAAAAAAA////AP///wD///8A////AP//
|
||||
/wAAAAAAAAAA/2lvzP9ma8X/Q0mt/0NJpv9DSab/Q0mm/x4qe/8eKnv/Q0mm/0NJpv8+Tp7/U3qX/y5d
|
||||
hf80V47/EzRg/y1ehP9DSaf/Hip7/x4qe/8eKnv/Hip8/0RLxP8AAAD/AAAAAAAAAAD///8A////AP//
|
||||
/wD///8A////AAAAAAAAAAD/aG3J/2Rpwv9DSan/Q0mm/0NJpv9DSab/Hip7/x4qe/9DSab/P02g/xpx
|
||||
ZP9AjHb/FHdb/xR3W/8APy7/FHdb/y9ch/8eKnv/Hip7/x4qe/8eKnv/Q0nA/0VMx/8AAAD/AAAAAP//
|
||||
/wD///8A////AP///wD///8AAAAAAAAAAP9na8f/XW+0/097mP9faLH/Q0mm/0NJpv8eKXv/Hih7/zRY
|
||||
jv8acWT/P4x2/z2Mdv8RdFj/EnVZ/xR3W/8Ud1v/FXZc/xM2Yf8eKnv/Q0mv/x4qe/8eKnv/REvE/wAA
|
||||
AP8AAAAA////AP///wD///8A////AP///wAAAAD/TJ2b/0aRjv88kHj/EXRY/xByWf8eaWz/CjND/wg1
|
||||
QP8DODP/FHdb/z+Mdv89jXb/R8Sh/0fDoP9HxKH/Ssml/xR3W/8Ud1v/FHdb/xA7W/8eKnv/Hip7/x4q
|
||||
e/8eKn//RUzJ/wAAAP////8A////AP///wD///8A////AAAAAP9Cp4r/Rt2y/0HPp/9Dx6L/RMOf/wly
|
||||
VP8Nc1b/EXRY/xJ1Wf8RdFj/SMej/0fEof9Hwp//1v/z/0fCn//X//T/S8un/xR3W/8Ud1v/AEs3/yZm
|
||||
fP8cLHf/Hip7/x4qff9FS8f/AAAA/////wD///8A////AP///wD///8AAAAA/1Hku//c//b/2P/0/8v/
|
||||
8P/I//D/yP/w/9H/8v9Gw6D/DXNW/w90V/87jHX/R8Og/0bAnv9GwJ7/R8Kf/0jGov9Kyqb/RIt5/xR3
|
||||
W/8ASTX/FHpd/wJOP/8MQVT/Ejpk/zdgrv8AAAD/////AP///wD///8A////AP///wAAAAD/QqmM/0Xe
|
||||
s/9B0Kj/QMSf/0K+m/9DvJr/Rb6c/0bBnv9Hw6D/C3JV/wtyVf9GgYb/TbWu/022rv9Kvaj/Pot4/xlw
|
||||
ZP8+Tp7/JWZ2/wBHM/8TeVz/AFE7/wBQO/8AUjz/FJVx/wAAAP////8A////AP///wD///8A////AAAA
|
||||
AAAAAAD/S+G3/0HUq/8/yaL/QcGd/0O+m/9EvZv/Rb+d/0bBnv8Oblr/KlqC/0NJpv9DSab/Q0mm/0NJ
|
||||
pv8+Tp7/Ll6E/0NJpv8/TaD/F3Rf/xN5XP8PfF3/EINi/wBSPP8Tl3L/AAAA/////wD///8A////AP//
|
||||
/wD///8AAAAAAAAAAAAAAAD/Rt6z/0jGuf9Iu7L/RYKG/0WChv9GgYf/TXqS/1ZxoP9gZ7H/Q0mm/yFi
|
||||
df8RJ1b/Q0mm/0NJpv9CSqT/Q0mm/z1PnP8XdF//SZiC/0qehv9Np43/D49r/wAAAP8AAAAA////AP//
|
||||
/wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAD/YGe8/2BntP9gZ7H/YGex/2Bnsf9gZ7H/YGex/2Bn
|
||||
sf8fYXP/CXFU/wAvIv8lY3f/Q0mm/0NJpv8eKnv/Hip7/x5tb/9Im4P/SqKJ/0urkP8Pk27/AAAA/wAA
|
||||
AAD///8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAAAP9DkIz/RoWK/xlma/8TZGj/RYGF/0aA
|
||||
h/9ChIH/QIV+/wFsTv8EblD/B3BS/w1zVv8abGb/MFuI/xcvav8eKnv/OlKd/0qgif9KqI3/YO3F/wAA
|
||||
AP8AAAAAAAAAAP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAA/0Chhv86k3r/PY12/0LB
|
||||
nf9Cupj/QriX/0K4l/9CuJf/QriX/0O5mP9EvJr/RsGe/z2Ndv8Tdlr/Aj8z/w46Vf8uXpL/JWqK/1/s
|
||||
xP8AAAD/AAAAAAAAAAAAAAAA////AP///wD///8A////AP///wAAAAAAAAAAAAAAAAAAAAD/Q6eL/0fe
|
||||
s/9C0Kj/y//w/0G8mf+v/uj/rf3m/6395v+t/eb/rv3n/0K4l//D/+//RMSg/0CMdv8UeVz/DX5e/y1h
|
||||
lf8AAAD/AAAA/wAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAD/TOK4/0PWrf8/yqP/P8Cc/0C7mP9At5X/QbeW/0G3lv9At5X/sf7o/0G+m//X//T/3P/1/0rb
|
||||
sv8Kg2H/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP///wD///8A////AP///wD///8AAAAAAAAA
|
||||
AAAAAAAAAAAAAAAAAP9DqYz/SOC1/0PUq/8/yqP/PsSe/z7Am/8/vpr/P76a/z++mv8/wJz/P8Se/0HM
|
||||
pf9F1az/TOO4/0apjf8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA////AP///wD///8A////AP//
|
||||
/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9CqIv/SuC2/0XZr/9D0qr/QM6m/z/LpP9Ay6T/P8uk/0HO
|
||||
pv9C0an/Rdmv/0rhtv9Ep4v/AAAA/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP//
|
||||
/wD///8A////AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8AAAD/QaaJ/03ht/9J37X/R92z/0bd
|
||||
sv9G3bL/SN+0/0rgtv8+oob/RauO/wAAAP8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP//
|
||||
/wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/AAAA/wAA
|
||||
AP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
AAAAAAAA////AP///wD///8A////////v////x////8f///+D///5g///cMf//iBr//wAMf/4AAD//AA
|
||||
Af/4AAD/8AAAf/AAAD/gAAAf4AAAD+AAAA/AAAAHwAAAB8AAAAfAAAAH4AAAB/AAAA/4AAAP+AAAH/gA
|
||||
AD/4AAB//AAB//wAAf/+AAP//wAH///AD/8=
|
||||
</value>
|
||||
</data>
|
||||
</root>
|
||||
228
OpenRA.TilesetBuilder/frmNew.Designer.cs
generated
Normal file
@@ -0,0 +1,228 @@
|
||||
namespace OpenRA.TilesetBuilder
|
||||
{
|
||||
partial class frmNew
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.numSize = new System.Windows.Forms.NumericUpDown();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.txtPal = new System.Windows.Forms.TextBox();
|
||||
this.btnPalBrowse = new System.Windows.Forms.Button();
|
||||
this.chkUsePalFromImage = new System.Windows.Forms.CheckBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.imgImage = new System.Windows.Forms.PictureBox();
|
||||
this.btnImgBrowse = new System.Windows.Forms.Button();
|
||||
this.txtImage = new System.Windows.Forms.TextBox();
|
||||
this.btnCancel = new System.Windows.Forms.Button();
|
||||
this.btnOk = new System.Windows.Forms.Button();
|
||||
((System.ComponentModel.ISupportInitialize)(this.numSize)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgImage)).BeginInit();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// numSize
|
||||
//
|
||||
this.numSize.Location = new System.Drawing.Point(66, 6);
|
||||
this.numSize.Maximum = new decimal(new int[] {
|
||||
264,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numSize.Minimum = new decimal(new int[] {
|
||||
24,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numSize.Name = "numSize";
|
||||
this.numSize.Size = new System.Drawing.Size(49, 20);
|
||||
this.numSize.TabIndex = 0;
|
||||
this.numSize.Value = new decimal(new int[] {
|
||||
24,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.numSize.ValueChanged += new System.EventHandler(this.numSize_ValueChanged);
|
||||
//
|
||||
// label1
|
||||
//
|
||||
this.label1.AutoSize = true;
|
||||
this.label1.Location = new System.Drawing.Point(12, 9);
|
||||
this.label1.Name = "label1";
|
||||
this.label1.Size = new System.Drawing.Size(48, 13);
|
||||
this.label1.TabIndex = 1;
|
||||
this.label1.Text = "Tile size:";
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(12, 34);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(43, 13);
|
||||
this.label2.TabIndex = 2;
|
||||
this.label2.Text = "Palette:";
|
||||
//
|
||||
// txtPal
|
||||
//
|
||||
this.txtPal.Location = new System.Drawing.Point(15, 52);
|
||||
this.txtPal.Name = "txtPal";
|
||||
this.txtPal.ReadOnly = true;
|
||||
this.txtPal.Size = new System.Drawing.Size(267, 20);
|
||||
this.txtPal.TabIndex = 3;
|
||||
//
|
||||
// btnPalBrowse
|
||||
//
|
||||
this.btnPalBrowse.Enabled = false;
|
||||
this.btnPalBrowse.Location = new System.Drawing.Point(288, 50);
|
||||
this.btnPalBrowse.Name = "btnPalBrowse";
|
||||
this.btnPalBrowse.Size = new System.Drawing.Size(26, 23);
|
||||
this.btnPalBrowse.TabIndex = 4;
|
||||
this.btnPalBrowse.Text = "...";
|
||||
this.btnPalBrowse.UseVisualStyleBackColor = true;
|
||||
this.btnPalBrowse.Click += new System.EventHandler(this.btnPalBrowse_Click);
|
||||
//
|
||||
// chkUsePalFromImage
|
||||
//
|
||||
this.chkUsePalFromImage.AutoSize = true;
|
||||
this.chkUsePalFromImage.Checked = true;
|
||||
this.chkUsePalFromImage.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.chkUsePalFromImage.Location = new System.Drawing.Point(66, 34);
|
||||
this.chkUsePalFromImage.Name = "chkUsePalFromImage";
|
||||
this.chkUsePalFromImage.Size = new System.Drawing.Size(134, 17);
|
||||
this.chkUsePalFromImage.TabIndex = 5;
|
||||
this.chkUsePalFromImage.Text = "Use palette from image";
|
||||
this.chkUsePalFromImage.UseVisualStyleBackColor = true;
|
||||
this.chkUsePalFromImage.CheckedChanged += new System.EventHandler(this.chkUsePalFromImage_CheckedChanged);
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(12, 75);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(39, 13);
|
||||
this.label3.TabIndex = 6;
|
||||
this.label3.Text = "Image:";
|
||||
//
|
||||
// imgImage
|
||||
//
|
||||
this.imgImage.BackColor = System.Drawing.Color.Black;
|
||||
this.imgImage.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
|
||||
this.imgImage.Location = new System.Drawing.Point(15, 120);
|
||||
this.imgImage.Name = "imgImage";
|
||||
this.imgImage.Size = new System.Drawing.Size(299, 219);
|
||||
this.imgImage.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
this.imgImage.TabIndex = 7;
|
||||
this.imgImage.TabStop = false;
|
||||
//
|
||||
// btnImgBrowse
|
||||
//
|
||||
this.btnImgBrowse.Location = new System.Drawing.Point(288, 91);
|
||||
this.btnImgBrowse.Name = "btnImgBrowse";
|
||||
this.btnImgBrowse.Size = new System.Drawing.Size(26, 23);
|
||||
this.btnImgBrowse.TabIndex = 9;
|
||||
this.btnImgBrowse.Text = "...";
|
||||
this.btnImgBrowse.UseVisualStyleBackColor = true;
|
||||
this.btnImgBrowse.Click += new System.EventHandler(this.btnImgBrowse_Click);
|
||||
//
|
||||
// txtImage
|
||||
//
|
||||
this.txtImage.Location = new System.Drawing.Point(15, 91);
|
||||
this.txtImage.Name = "txtImage";
|
||||
this.txtImage.ReadOnly = true;
|
||||
this.txtImage.Size = new System.Drawing.Size(267, 20);
|
||||
this.txtImage.TabIndex = 8;
|
||||
//
|
||||
// btnCancel
|
||||
//
|
||||
this.btnCancel.DialogResult = System.Windows.Forms.DialogResult.Cancel;
|
||||
this.btnCancel.Location = new System.Drawing.Point(239, 345);
|
||||
this.btnCancel.Name = "btnCancel";
|
||||
this.btnCancel.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnCancel.TabIndex = 10;
|
||||
this.btnCancel.Text = "Cancel";
|
||||
this.btnCancel.UseVisualStyleBackColor = true;
|
||||
this.btnCancel.Click += new System.EventHandler(this.btnCancel_Click);
|
||||
//
|
||||
// btnOk
|
||||
//
|
||||
this.btnOk.Location = new System.Drawing.Point(158, 345);
|
||||
this.btnOk.Name = "btnOk";
|
||||
this.btnOk.Size = new System.Drawing.Size(75, 23);
|
||||
this.btnOk.TabIndex = 11;
|
||||
this.btnOk.Text = "OK";
|
||||
this.btnOk.UseVisualStyleBackColor = true;
|
||||
this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
|
||||
//
|
||||
// frmNew
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.CancelButton = this.btnCancel;
|
||||
this.ClientSize = new System.Drawing.Size(329, 378);
|
||||
this.Controls.Add(this.btnOk);
|
||||
this.Controls.Add(this.btnCancel);
|
||||
this.Controls.Add(this.btnImgBrowse);
|
||||
this.Controls.Add(this.txtImage);
|
||||
this.Controls.Add(this.imgImage);
|
||||
this.Controls.Add(this.label3);
|
||||
this.Controls.Add(this.chkUsePalFromImage);
|
||||
this.Controls.Add(this.btnPalBrowse);
|
||||
this.Controls.Add(this.txtPal);
|
||||
this.Controls.Add(this.label2);
|
||||
this.Controls.Add(this.label1);
|
||||
this.Controls.Add(this.numSize);
|
||||
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
|
||||
this.MaximizeBox = false;
|
||||
this.MinimizeBox = false;
|
||||
this.Name = "frmNew";
|
||||
this.ShowIcon = false;
|
||||
this.ShowInTaskbar = false;
|
||||
this.SizeGripStyle = System.Windows.Forms.SizeGripStyle.Hide;
|
||||
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
|
||||
this.Text = "New Tileset";
|
||||
((System.ComponentModel.ISupportInitialize)(this.numSize)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.imgImage)).EndInit();
|
||||
this.ResumeLayout(false);
|
||||
this.PerformLayout();
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.NumericUpDown numSize;
|
||||
private System.Windows.Forms.Label label1;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private System.Windows.Forms.TextBox txtPal;
|
||||
private System.Windows.Forms.Button btnPalBrowse;
|
||||
private System.Windows.Forms.CheckBox chkUsePalFromImage;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.PictureBox imgImage;
|
||||
private System.Windows.Forms.Button btnImgBrowse;
|
||||
private System.Windows.Forms.TextBox txtImage;
|
||||
private System.Windows.Forms.Button btnCancel;
|
||||
private System.Windows.Forms.Button btnOk;
|
||||
}
|
||||
}
|
||||
88
OpenRA.TilesetBuilder/frmNew.cs
Normal file
@@ -0,0 +1,88 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace OpenRA.TilesetBuilder
|
||||
{
|
||||
public partial class frmNew : Form
|
||||
{
|
||||
public bool PaletteFromImage = true;
|
||||
public string PaletteFile = "";
|
||||
public string ImageFile = "";
|
||||
public int TileSize = 24;
|
||||
|
||||
public frmNew()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void btnCancel_Click(object sender, EventArgs e)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
|
||||
private void btnOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (!PaletteFromImage)
|
||||
{
|
||||
if (PaletteFile.Length < 5)
|
||||
{
|
||||
MessageBox.Show("No palette specified", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
||||
}
|
||||
}
|
||||
if (ImageFile.Length < 5)
|
||||
{
|
||||
MessageBox.Show("No image selected", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
||||
}
|
||||
else
|
||||
{
|
||||
DialogResult = DialogResult.OK;
|
||||
Close();
|
||||
}
|
||||
}
|
||||
|
||||
private void chkUsePalFromImage_CheckedChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (chkUsePalFromImage.Checked)
|
||||
{
|
||||
btnPalBrowse.Enabled = false;
|
||||
PaletteFromImage = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
btnPalBrowse.Enabled = true;
|
||||
PaletteFromImage = false;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnPalBrowse_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (var ofd = new OpenFileDialog { Filter = "C&C Palette (*.pal)|*.pal" })
|
||||
if (DialogResult.OK == ofd.ShowDialog())
|
||||
{
|
||||
PaletteFile = ofd.FileName;
|
||||
txtPal.Text = PaletteFile;
|
||||
}
|
||||
}
|
||||
|
||||
private void btnImgBrowse_Click(object sender, EventArgs e)
|
||||
{
|
||||
using (var ofd = new OpenFileDialog { Filter = "8bit Image (*.png,*.pcx,*.bmp)|*.png;*.pcx;*.bmp" })
|
||||
if (DialogResult.OK == ofd.ShowDialog())
|
||||
{
|
||||
ImageFile = ofd.FileName;
|
||||
imgImage.Image = Image.FromFile(ImageFile);
|
||||
txtImage.Text = ImageFile;
|
||||
}
|
||||
}
|
||||
|
||||
private void numSize_ValueChanged(object sender, EventArgs e)
|
||||
{
|
||||
TileSize = (int)numSize.Value;
|
||||
}
|
||||
}
|
||||
}
|
||||
120
OpenRA.TilesetBuilder/frmNew.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
BIN
OpenRA.TilesetBuilder/tilesetbuilder_icon copy.ico
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
@@ -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,
|
||||
@@ -21,7 +21,7 @@ using OpenRA.GameRules;
|
||||
|
||||
namespace OpenRA.Utility
|
||||
{
|
||||
static class Command
|
||||
public static class Command
|
||||
{
|
||||
public static void Settings(string[] args)
|
||||
{
|
||||
@@ -104,6 +104,186 @@ 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;
|
||||
|
||||
frame = srcImage[startFrame];
|
||||
|
||||
//TODO: This is not enough as the run and shoot animation are next to each other for each sequence in RA/CnC.
|
||||
if (args.Contains("--infantry")) //resorting to RA/CnC compatible counter-clockwise frame order
|
||||
{
|
||||
endFrame = startFrame-1;
|
||||
for (int e = 8; e < FrameCount+1; e=e+8) //assuming 8 facings each animation set
|
||||
{
|
||||
|
||||
for (int f = startFrame+e-1; f > endFrame; f--)
|
||||
{
|
||||
OffsetX = frame.FrameWidth/2 - frame.Width/2;
|
||||
OffsetY = frame.FrameHeight/2 - frame.Height/2;
|
||||
|
||||
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;
|
||||
|
||||
frame = srcImage[f];
|
||||
Console.WriteLine("f: {0}", f);
|
||||
}
|
||||
endFrame = startFrame+e-1;
|
||||
frame = srcImage[startFrame+e];
|
||||
Console.WriteLine("e: {0}", e);
|
||||
Console.WriteLine("FrameCount: {0}", FrameCount);
|
||||
}
|
||||
}
|
||||
else if (args.Contains("--vehicle")) //resorting to RA/CnC compatible counter-clockwise frame order
|
||||
{
|
||||
frame = srcImage[startFrame];
|
||||
|
||||
for (int f = endFrame-1; f > startFrame-1; 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;
|
||||
|
||||
frame = srcImage[f];
|
||||
}
|
||||
}
|
||||
else if (args.Contains("--wall")) //complex resorting to RA/CnC compatible frame order
|
||||
{
|
||||
int[] D2kBrikFrameOrder = {1, 4, 2, 12, 5, 6, 16, 9, 3, 13, 7, 8, 14, 10, 11, 15, 17, 20, 18, 28, 21, 22, 32, 25, 19, 29, 23, 24, 30, 26, 27, 31};
|
||||
foreach (int o in D2kBrikFrameOrder)
|
||||
{
|
||||
int f = startFrame -1 + o;
|
||||
|
||||
frame = srcImage[f];
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
else if (args.Contains("--tileset"))
|
||||
{
|
||||
int f = 0;
|
||||
var tileset = new Bitmap(frame.FrameWidth * 20, frame.FrameHeight * 40, PixelFormat.Format8bppIndexed);
|
||||
tileset.Palette = palette.AsSystemPalette();
|
||||
|
||||
for (int h = 0; h < 40; h++)
|
||||
{
|
||||
for (int w = 0; w < 20; w++)
|
||||
{
|
||||
if (h * 20 + w < FrameCount)
|
||||
{
|
||||
Console.WriteLine(f);
|
||||
frame = srcImage[f];
|
||||
|
||||
var data = tileset.LockBits(new Rectangle(w * frame.Width, h * frame.Height, 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);
|
||||
|
||||
tileset.UnlockBits(data);
|
||||
f++;
|
||||
}
|
||||
}
|
||||
}
|
||||
bitmap = tileset;
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int f = startFrame; f < endFrame; f++)
|
||||
{
|
||||
frame = srcImage[f];
|
||||
if (args.Contains("--infantrydeath"))
|
||||
{
|
||||
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(',');
|
||||
|
||||
@@ -54,6 +54,7 @@
|
||||
<ItemGroup>
|
||||
<Compile Include="Command.cs" />
|
||||
<Compile Include="Program.cs" />
|
||||
<Compile Include="R8Reader.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
|
||||
@@ -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,13 @@ 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 START END FILENAME [--transparent] [--infrantry] [--vehicle] [--projectile] [--building] [--wall] [--tileset] Convert Dune 2000 DATA.R8 to PNGs choosing start- and endframe as well as 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)
|
||||
|
||||
139
OpenRA.Utility/R8Reader.cs
Normal file
@@ -0,0 +1,139 @@
|
||||
#region Copyright & License Information
|
||||
/*
|
||||
* 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,
|
||||
* see COPYING.
|
||||
* It also incorporates parts of http://code.google.com/p/dune2000plusone
|
||||
* which is licensed under the BSD 2-Clause License.
|
||||
*/
|
||||
#endregion
|
||||
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Drawing;
|
||||
using System.IO;
|
||||
using System;
|
||||
|
||||
namespace OpenRA.Utility
|
||||
{
|
||||
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) // image with custom palette
|
||||
{
|
||||
for (int i = 0; i < Width*Height; i++)
|
||||
Image[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();
|
||||
}
|
||||
}
|
||||
}
|
||||
44
OpenRA.sln
@@ -19,7 +19,7 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Renderer.Cg", "OpenR
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Editor", "OpenRA.Editor\OpenRA.Editor.csproj", "{00038B75-405B-44F5-8691-BD2546DBE224}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.TilesetBuilder", "OpenRA.TilesetBuilder\OpenRA.TilesetBuilder.csproj", "{56B1073B-AE14-499A-BB98-43A8DE9A39CA}"
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.TilesetBuilder", "OpenRA.TilesetBuilder\OpenRA.TilesetBuilder.csproj", "{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RALint", "RALint\RALint.csproj", "{F9FA4D9F-2302-470A-8A07-6E37F488C124}"
|
||||
EndProject
|
||||
@@ -31,6 +31,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Renderer.Gl", "OpenR
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Renderer.SdlCommon", "OpenRA.Renderer.SdlCommon\OpenRA.Renderer.SdlCommon.csproj", "{52FD9F0B-B209-4ED7-8A32-AC8033363263}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "OpenRA.Mods.D2k", "OpenRA.Mods.D2k\OpenRA.Mods.D2k.csproj", "{C0B0465C-6BE2-409C-8770-3A9BF64C4344}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -62,14 +64,14 @@ Global
|
||||
{0DFB103F-2962-400F-8C6D-E2C28CCBA633}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{0DFB103F-2962-400F-8C6D-E2C28CCBA633}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{0DFB103F-2962-400F-8C6D-E2C28CCBA633}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{1A8E50CC-EE32-4E57-8842-0C39C8EA7541}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{2881135D-4D62-493E-8F83-5EEE92CCC6BE}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{2881135D-4D62-493E-8F83-5EEE92CCC6BE}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{2881135D-4D62-493E-8F83-5EEE92CCC6BE}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
@@ -94,14 +96,6 @@ Global
|
||||
{52FD9F0B-B209-4ED7-8A32-AC8033363263}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{52FD9F0B-B209-4ED7-8A32-AC8033363263}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{52FD9F0B-B209-4ED7-8A32-AC8033363263}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{56B1073B-AE14-499A-BB98-43A8DE9A39CA}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{56B1073B-AE14-499A-BB98-43A8DE9A39CA}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{56B1073B-AE14-499A-BB98-43A8DE9A39CA}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{56B1073B-AE14-499A-BB98-43A8DE9A39CA}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{56B1073B-AE14-499A-BB98-43A8DE9A39CA}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{56B1073B-AE14-499A-BB98-43A8DE9A39CA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{56B1073B-AE14-499A-BB98-43A8DE9A39CA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{56B1073B-AE14-499A-BB98-43A8DE9A39CA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{67CF1A10-C5F6-48FA-B1A7-FE83BE4CE2CC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{67CF1A10-C5F6-48FA-B1A7-FE83BE4CE2CC}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{67CF1A10-C5F6-48FA-B1A7-FE83BE4CE2CC}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
@@ -118,6 +112,14 @@ Global
|
||||
{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{BDAEAB25-991E-46A7-AF1E-4F0E03358DAA}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Debug|Mixed Platforms.Build.0 = Debug|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{C0B0465C-6BE2-409C-8770-3A9BF64C4344}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{E9C01A96-C3E2-4772-825B-A740AC513D31}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{E9C01A96-C3E2-4772-825B-A740AC513D31}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{E9C01A96-C3E2-4772-825B-A740AC513D31}.Debug|Mixed Platforms.ActiveCfg = Debug|Any CPU
|
||||
@@ -142,6 +144,14 @@ Global
|
||||
{F9FA4D9F-2302-470A-8A07-6E37F488C124}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{F9FA4D9F-2302-470A-8A07-6E37F488C124}.Release|Mixed Platforms.ActiveCfg = Release|Any CPU
|
||||
{F9FA4D9F-2302-470A-8A07-6E37F488C124}.Release|Mixed Platforms.Build.0 = Release|Any CPU
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Debug|Mixed Platforms.ActiveCfg = Debug|x86
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Debug|Mixed Platforms.Build.0 = Debug|x86
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Release|Mixed Platforms.ActiveCfg = Release|x86
|
||||
{230F65CE-A6DE-4235-8B38-13A3D606C7F7}.Release|Mixed Platforms.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(MonoDevelopProperties) = preSolution
|
||||
StartupItem = OpenRA.Game\OpenRA.Game.csproj
|
||||
|
||||
2
README
@@ -2,4 +2,4 @@ OpenRA is a Libre/Free Real Time Strategy game engine supporting early Westwood
|
||||
|
||||
Distributed mods include a reimagining and updating of both the Red Alert and Command & Conquer multiplayer games.
|
||||
|
||||
Please read INSTALL on how to install an OpenRA development environment and HACKING for an overview of the engine.
|
||||
Please read INSTALL on how to install an OpenRA development environment and HACKING for an overview of the engine.
|
||||
99
doc/d2k formatspecs.txt
Normal 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...
|
||||
39
mods/d2k/TODO
Normal file
@@ -0,0 +1,39 @@
|
||||
# make structures appear earlier when errecting from ground
|
||||
# harvester harvest and unload frames missing (too few DATA.R8 frames in general)
|
||||
# carryalls should automatically transport harvesters (needs complex logic)
|
||||
# windtrap animations missing
|
||||
# outpost animations missing
|
||||
# construction yard crane animations missing
|
||||
# welding animation (factories) missing
|
||||
# chimney animation (refinery) missing
|
||||
# add more spice tiles and make them fit
|
||||
# add game logic for concrete plates (use terrain overlay from bridges/ressources)
|
||||
# allow placing turrets on walls
|
||||
# support separate turret sequence with RenderBuildingTurreted
|
||||
# ornithocopter should flap (might need new RenderOrni code for proper animation)
|
||||
# R8 converter needs infantry frame resorter
|
||||
# add trooper
|
||||
# add engineer
|
||||
# add fremen
|
||||
# add saboteur
|
||||
# add deathhand missile (nuke)
|
||||
# add sandworm
|
||||
# add thumper which really attracts sandworms
|
||||
# add neutral buildings: emperor palace, fremen siech, smugglers factory
|
||||
# allow upgrades
|
||||
# allow different EVA voices for each faction (currently Atreides only)
|
||||
# add SOUND.TS .wav file extractor to RA.Utility.exe
|
||||
# convert .wav to .aud or support .wav files for Dune 2000 sounds
|
||||
# add muzzles and explosions with lightning (might need engine update)
|
||||
# create a shellmap (currently just a blank placeholder)
|
||||
# rework chrome UI, dialoges, tabs
|
||||
# add sonic tank weapon (currently uses tesla)
|
||||
# make deviator change the allegiance of ememy units (currently shoots rockets)
|
||||
# allow frigate to deliver 5 units at once to starport
|
||||
# starport prices should vary
|
||||
# reinforcements have arrived is played twice when ordering via starport
|
||||
# add shroud (Dune's 32x32 tiles differ completely from RA/CnC)
|
||||
# black spots on buildings should be transparent
|
||||
# gamefile extraction (setup/setup.z) from CD fails
|
||||
# support patch 1.06 gamefiles: DATA.R8 has more frames and currently fails to extract, also featuring new terrain with white houses and new unit: grenade thrower
|
||||
# mouse cursor has no transparency and is a little pixelish
|
||||
0
mods/palettetest/d2k.pal → mods/d2k/bits/d2k.pal
Executable file → Normal file
542
mods/d2k/chrome.yaml
Normal file
@@ -0,0 +1,542 @@
|
||||
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
|
||||
ordos-Building: 0,0,27,41
|
||||
ordos-Defense: 0,40,27,41
|
||||
ordos-Infantry: 0,80,27,41
|
||||
ordos-Vehicle: 0,120,27,41
|
||||
ordos-Plane: 0,160,27,41
|
||||
ordos-Ship: 0,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
|
||||
ordos-Building: 27,0,27,41
|
||||
ordos-Defense: 27,40,27,41
|
||||
ordos-Infantry: 27,80,27,41
|
||||
ordos-Vehicle: 27,120,27,41
|
||||
ordos-Plane: 27,160,27,41
|
||||
ordos-Ship: 27,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
|
||||
ordos-Building: 54,0,27,41
|
||||
ordos-Defense: 54,40,27,41
|
||||
ordos-Infantry: 54,80,27,41
|
||||
ordos-Vehicle: 54,120,27,41
|
||||
ordos-Plane: 54,160,27,41
|
||||
ordos-Ship: 54,200,27,41
|
||||
|
||||
flags: buttons.png
|
||||
atreides: 0,84,21,23
|
||||
harkonnen: 22,84,23,23
|
||||
ordos: 45,84,22,23
|
||||
random: 67,84,23,23
|
||||
spectator: 67,84,23,23
|
||||
|
||||
dialog2: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
dialog3: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
dialog4: dialog.png
|
||||
border-t: 773,0,52,6
|
||||
border-b: 773,58,52,6
|
||||
border-l: 768,5,6,54
|
||||
border-r: 826,5,6,54
|
||||
corner-tl: 768,0,6,6
|
||||
corner-tr: 826,0,6,6
|
||||
corner-bl: 768,58,6,6
|
||||
corner-br: 826,58,6,6
|
||||
background: 773,5,52,52
|
||||
|
||||
dialog: dialog.png
|
||||
background: 0,0,480,480
|
||||
border-r: 489,0,9,192
|
||||
border-l: 480,0,9,192
|
||||
border-b: 0,489,191,9
|
||||
border-t: 0,480,191,9
|
||||
corner-tl: 191,480,9,9
|
||||
corner-tr: 200,480,9,9
|
||||
corner-bl: 191,489,9,9
|
||||
corner-br: 200,489,9,9
|
||||
|
||||
spawnpoints: spawnpoints.png
|
||||
unowned: 528,128,16,16
|
||||
owned: 512,128,16,16
|
||||
|
||||
strategic: strategic.png
|
||||
unowned: 0,0,32,32
|
||||
critical_unowned: 0,32,32,32
|
||||
enemy_owned: 32,32,32,32
|
||||
player_owned: 96,0,32,32
|
||||
|
||||
sell-button: buttons.png
|
||||
normal: 0,0,34,28
|
||||
pressed: 34,0,34,28
|
||||
disabled: 68,0,34,28
|
||||
|
||||
repair-button: buttons.png
|
||||
normal: 0,28,34,28
|
||||
pressed: 34,28,34,28
|
||||
disabled: 68,28,34,28
|
||||
|
||||
power-button: buttons.png
|
||||
normal: 0,56,34,28
|
||||
pressed: 34,56,34,28
|
||||
disabled: 68,56,34,28
|
||||
|
||||
music: musicplayer.png
|
||||
pause: 0,0,25,25
|
||||
stop: 28,0,25,25
|
||||
play: 56,0,25,25
|
||||
next: 84,0,25,25
|
||||
prev: 112,0,25,25
|
||||
|
||||
scrollbar: buttons.png
|
||||
down_arrow: 16,112,16,16
|
||||
down_pressed: 16,112,16,16
|
||||
up_arrow: 32,112,16,16
|
||||
up_pressed: 32,112,16,16
|
||||
|
||||
# A copy of dialog3
|
||||
progressbar-bg: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
# A copy of dialog2
|
||||
progressbar-thumb: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
# A copy of dialog2
|
||||
button: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
# A copy of dialog2
|
||||
button-hover: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
# A copy of dialog2
|
||||
button-disabled: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
button-pressed: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
scrollthumb: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
# A copy of dialog2
|
||||
scrollthumb-hover: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
# A copy of dialog2
|
||||
scrollthumb-disabled: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
scrollthumb-pressed: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
textfield: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
textfield-hover: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
textfield-disabled: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
textfield-focused: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
scrollpanel-bg: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
|
||||
# A copy of dialog2
|
||||
slider-tick: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
slider-track: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
checkbox: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
checkbox-bits: buttons.png
|
||||
checked: 0,112,16,16
|
||||
|
||||
# A copy of dialog3
|
||||
checkbox-hover: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
checkbox-disabled: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
# A copy of dialog3
|
||||
scrollitem-selected: dialog.png
|
||||
background: 641,1,126,126
|
||||
border-r: 767,1,1,126
|
||||
border-l: 640,1,1,126
|
||||
border-b: 641,127,126,1
|
||||
border-t: 641,0,126,1
|
||||
corner-tl: 640,0,1,1
|
||||
corner-tr: 722,0,1,1
|
||||
corner-bl: 640,82,1,1
|
||||
corner-br: 722,82,1,1
|
||||
|
||||
# A copy of dialog2
|
||||
scrollitem-hover: dialog.png
|
||||
background: 513,1,126,126
|
||||
border-r: 639,1,1,126
|
||||
border-l: 512,1,1,126
|
||||
border-b: 513,127,126,1
|
||||
border-t: 513,0,126,1
|
||||
corner-tl: 512,0,1,1
|
||||
corner-tr: 594,0,1,1
|
||||
corner-bl: 512,82,1,1
|
||||
corner-br: 594,82,1,1
|
||||
76
mods/d2k/chrome/cheats.yaml
Normal file
@@ -0,0 +1,76 @@
|
||||
Background@CHEATS_PANEL:
|
||||
Logic:CheatsLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:350
|
||||
Height:420
|
||||
Visible:true
|
||||
Children:
|
||||
Label@LABEL_TITLE:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:20
|
||||
Width:250
|
||||
Height:25
|
||||
Text:Developer Mode
|
||||
Align:Center
|
||||
Checkbox@DISABLE_SHROUD:
|
||||
X:30
|
||||
Y:50
|
||||
Height:20
|
||||
Width:PARENT_RIGHT - 30
|
||||
Text:Disable Shroud
|
||||
Button@GIVE_EXPLORATION
|
||||
X:30
|
||||
Y:80
|
||||
Width:200
|
||||
Height:20
|
||||
Text: Give Exploration
|
||||
Checkbox@SHOW_UNIT_PATHS:
|
||||
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:Support Powers Charge Instantly
|
||||
Checkbox@ENABLE_TECH:
|
||||
X:30
|
||||
Y:230
|
||||
Width:PARENT_RIGHT - 30
|
||||
Height:20
|
||||
Text:Build Everything
|
||||
Checkbox@UNLIMITED_POWER:
|
||||
X:30
|
||||
Y:260
|
||||
Width:PARENT_RIGHT - 30
|
||||
Height:20
|
||||
Text:Unlimited Power
|
||||
Checkbox@BUILD_ANYWHERE:
|
||||
X:30
|
||||
Y:290
|
||||
Width:PARENT_RIGHT - 30
|
||||
Height:20
|
||||
Text:Build Anywhere
|
||||
Button@CLOSE:
|
||||
X:30
|
||||
Y:360
|
||||
Width:PARENT_RIGHT - 60
|
||||
Height:20
|
||||
Text:Close
|
||||
Key:escape
|
||||
78
mods/d2k/chrome/create-server.yaml
Normal file
@@ -0,0 +1,78 @@
|
||||
Background@CREATESERVER_BG:
|
||||
Logic:ServerCreationLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:400
|
||||
Height:240
|
||||
Children:
|
||||
Label@LABEL_TITLE:
|
||||
X:0
|
||||
Y:20
|
||||
Width:400
|
||||
Height:25
|
||||
Text:Create Server
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Label@SERVER_NAME_LABEL:
|
||||
X:50
|
||||
Y:59
|
||||
Width:95
|
||||
Height:25
|
||||
Align: Right
|
||||
Text:Game Title:
|
||||
TextField@SERVER_NAME:
|
||||
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@ADVERTISE_CHECKBOX:
|
||||
X:165
|
||||
Y:130
|
||||
Width:300
|
||||
Height:20
|
||||
Text:Advertise game Online
|
||||
Button@CREATE_BUTTON:
|
||||
X:130
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Create
|
||||
Font:Bold
|
||||
Key:return
|
||||
Button@BACK_BUTTON:
|
||||
X:260
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Cancel
|
||||
Font:Bold
|
||||
Key:escape
|
||||
50
mods/d2k/chrome/dropdowns.yaml
Normal file
@@ -0,0 +1,50 @@
|
||||
ScrollPanel@LABEL_DROPDOWN_TEMPLATE:
|
||||
Width:DROPDOWN_WIDTH
|
||||
Children:
|
||||
ScrollItem@TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:25
|
||||
X:2
|
||||
Y:0
|
||||
Visible:false
|
||||
Children:
|
||||
Label@LABEL:
|
||||
X:10
|
||||
Width:PARENT_RIGHT-20
|
||||
Height:25
|
||||
|
||||
ScrollPanel@RACE_DROPDOWN_TEMPLATE:
|
||||
Width:DROPDOWN_WIDTH
|
||||
Children:
|
||||
ScrollItem@TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:25
|
||||
X:2
|
||||
Y:0
|
||||
Visible:false
|
||||
Children:
|
||||
Image@FLAG:
|
||||
X:5
|
||||
Y:5
|
||||
Width:30
|
||||
Height:15
|
||||
Label@LABEL:
|
||||
X:40
|
||||
Width:60
|
||||
Height:25
|
||||
|
||||
ScrollPanel@TEAM_DROPDOWN_TEMPLATE:
|
||||
Width:DROPDOWN_WIDTH
|
||||
Children:
|
||||
ScrollItem@TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:25
|
||||
X:2
|
||||
Y:0
|
||||
Visible:false
|
||||
Children:
|
||||
Label@LABEL:
|
||||
X:0
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Align:Center
|
||||
208
mods/d2k/chrome/gameinit.yaml
Normal file
@@ -0,0 +1,208 @@
|
||||
Background@INSTALL_PANEL:
|
||||
Logic:D2kInstallLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:600
|
||||
Height:300
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:0
|
||||
Y:20
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:Content files missing
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Label@DESC1:
|
||||
X:0
|
||||
Y:50
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:This is the work in progress Dune 2000 mod.
|
||||
Align:Center
|
||||
Label@DESC2:
|
||||
X:0
|
||||
Y:70
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:It requires the original Dune 2000 (and still some Red Alert) game content.
|
||||
Align:Center
|
||||
Label@DESC4:
|
||||
X:0
|
||||
Y:110
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:You need to copy "Dune 2000/Data/GAMESFX" folder and "Dune 2000/DATA/*.R8" files
|
||||
Align:Center
|
||||
Label@DESC5:
|
||||
X:0
|
||||
Y:130
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text: from your local Dune 2000 installation to ~/.openra/Content/d2k/ (Linux)
|
||||
Align:Center
|
||||
Label@DESC6:
|
||||
X:0
|
||||
Y:150
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text: or "My Documents/OpenRA/Content/d2k/" (Windows) and click "Extract Data".
|
||||
Align:Center
|
||||
Label@DESC7:
|
||||
X:0
|
||||
Y:190
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text: Put in your Dune 2000 CD and click "Copy Music" to (optionally) download the tracks.
|
||||
Align:Center
|
||||
Button@EXTRACT_BUTTON:
|
||||
X:PARENT_RIGHT - 280
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:100
|
||||
Height:25
|
||||
Text:Extract Data
|
||||
Font:Bold
|
||||
Button@COPY_BUTTON:
|
||||
X:PARENT_RIGHT - 420
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:90
|
||||
Height:25
|
||||
Text:Copy Music
|
||||
Font:Bold
|
||||
Button@QUIT_BUTTON:
|
||||
X:PARENT_RIGHT - 140
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Quit
|
||||
Font:Bold
|
||||
|
||||
Background@INSTALL_FROMCD_PANEL:
|
||||
Logic:D2kInstallFromCDLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:500
|
||||
Height:160
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:0
|
||||
Y:20
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:Installing (Music) from CD
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Container@INSTALLING:
|
||||
Width:PARENT_RIGHT
|
||||
Height:PARENT_BOTTOM
|
||||
Visible: false
|
||||
Children:
|
||||
ProgressBar@PROGRESS_BAR:
|
||||
X:50
|
||||
Y:55
|
||||
Width:PARENT_RIGHT - 100
|
||||
Height:25
|
||||
Label@STATUS_LABEL:
|
||||
X:50
|
||||
Y:80
|
||||
Width:PARENT_RIGHT - 100
|
||||
Height:25
|
||||
Align:Left
|
||||
Container@INSERT_DISK:
|
||||
Width:PARENT_RIGHT
|
||||
Height:PARENT_BOTTOM
|
||||
Visible: false
|
||||
Children:
|
||||
Label@INFO:
|
||||
Y:50
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:Disk not found.
|
||||
Align:Center
|
||||
Label@INFO2:
|
||||
Y:70
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:Please insert the Dune 2000 install CDs then click Retry.
|
||||
Align:Center
|
||||
Button@RETRY_BUTTON:
|
||||
X:PARENT_RIGHT - 280
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Retry
|
||||
Font:Bold
|
||||
Key:return
|
||||
Button@BACK_BUTTON:
|
||||
X:PARENT_RIGHT - 140
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Back
|
||||
Font:Bold
|
||||
Key:escape
|
||||
|
||||
Background@EXTRACT_GAMEFILES_PANEL:
|
||||
Logic:D2kExtractGameFilesLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:500
|
||||
Height:160
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:0
|
||||
Y:20
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:Extracting and Converting Dune 2000 Gamefiles
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Container@EXTRACTING:
|
||||
Width:PARENT_RIGHT
|
||||
Height:PARENT_BOTTOM
|
||||
Visible: false
|
||||
Children:
|
||||
ProgressBar@PROGRESS_BAR:
|
||||
X:50
|
||||
Y:55
|
||||
Width:PARENT_RIGHT - 100
|
||||
Height:25
|
||||
Label@STATUS_LABEL:
|
||||
X:50
|
||||
Y:80
|
||||
Width:PARENT_RIGHT - 100
|
||||
Height:25
|
||||
Align:Left
|
||||
Container@COPY_FILES:
|
||||
Width:PARENT_RIGHT
|
||||
Height:PARENT_BOTTOM
|
||||
Visible: false
|
||||
Children:
|
||||
Label@INFO:
|
||||
Y:50
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:Gamefiles not not found.
|
||||
Align:Center
|
||||
Label@INFO2:
|
||||
Y:70
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:Please copy the Data/*.R8 files from your Dune 2000 installation to OpenRAs Content/d2k directory then click Retry.
|
||||
Align:Center
|
||||
Button@RETRY_BUTTON:
|
||||
X:PARENT_RIGHT - 280
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Retry
|
||||
Font:Bold
|
||||
Key:return
|
||||
Button@BACK_BUTTON:
|
||||
X:PARENT_RIGHT - 140
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Back
|
||||
Font:Bold
|
||||
Key:escape
|
||||
@@ -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
|
||||
@@ -1,8 +1,7 @@
|
||||
Container@INGAME_ROOT:
|
||||
Delegate:IngameChromeDelegate
|
||||
Visible:false
|
||||
Logic:IngameChromeLogic
|
||||
Children:
|
||||
WorldInteractionController:
|
||||
WorldInteractionController@INTERACTION_CONTROLLER:
|
||||
X:0
|
||||
Y:0
|
||||
Width:WINDOW_RIGHT
|
||||
@@ -12,9 +11,17 @@ Container@INGAME_ROOT:
|
||||
Y:0
|
||||
Width:WINDOW_RIGHT
|
||||
Height:WINDOW_BOTTOM
|
||||
WorldCommand:
|
||||
X:0
|
||||
Y:0
|
||||
Width:WINDOW_RIGHT
|
||||
Height:WINDOW_BOTTOM
|
||||
Timer@GAME_TIMER:
|
||||
X: WINDOW_RIGHT/2
|
||||
Y: 10
|
||||
Y: 0-10
|
||||
StrategicProgress@STRATEGIC_PROGRESS:
|
||||
X: WINDOW_RIGHT/2
|
||||
Y: 40
|
||||
Background@POSTGAME_BG:
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
@@ -25,11 +32,24 @@ Container@INGAME_ROOT:
|
||||
Children:
|
||||
Label@TEXT:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:(PARENT_BOTTOM - HEIGHT)/2
|
||||
Y:0
|
||||
Width:200
|
||||
Height:40
|
||||
Height:80
|
||||
Align:Center
|
||||
Bold:True
|
||||
Button@POSTGAME_OBSERVE:
|
||||
X:10
|
||||
Y:(PARENT_BOTTOM - HEIGHT - 10)
|
||||
Width:150
|
||||
Height:25
|
||||
Font:Bold
|
||||
Text:Observe
|
||||
Button@POSTGAME_QUIT:
|
||||
X:(PARENT_RIGHT - WIDTH - 10)
|
||||
Y:(PARENT_BOTTOM - HEIGHT - 10)
|
||||
Width:150
|
||||
Height:25
|
||||
Font:Bold
|
||||
Text:Leave
|
||||
SupportPowerBin@INGAME_POWERS_BIN:
|
||||
X:0
|
||||
Y:25
|
||||
@@ -44,24 +64,25 @@ Container@INGAME_ROOT:
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Options
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Key: escape
|
||||
Button@INGAME_DIPLOMACY_BUTTON:
|
||||
X:162
|
||||
Y:0
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Diplomacy
|
||||
Bold:True
|
||||
WorldTooltip@INGAME_WORLD_TOOLTIP:
|
||||
Button@INGAME_DEVELOPERMODE_BUTTON:
|
||||
Font:Bold
|
||||
Button@CHEATS_BUTTON:
|
||||
X:324
|
||||
Y:0
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Developer Mode
|
||||
Text:Cheats
|
||||
Visible:false
|
||||
Bold:True
|
||||
Font:Bold
|
||||
RadarBin@INGAME_RADAR_BIN:
|
||||
WorldInteractionController:INTERACTION_CONTROLLER
|
||||
PowerBin@INGAME_POWER_BIN:
|
||||
MoneyBin@INGAME_MONEY_BIN:
|
||||
X:WINDOW_RIGHT - WIDTH
|
||||
@@ -70,7 +91,7 @@ Container@INGAME_ROOT:
|
||||
Height: 32
|
||||
Children:
|
||||
OrderButton@SELL:
|
||||
Delegate:OrderButtonsChromeDelegate
|
||||
Logic:OrderButtonsChromeLogic
|
||||
X:3
|
||||
Y:0
|
||||
Width:30
|
||||
@@ -79,7 +100,7 @@ Container@INGAME_ROOT:
|
||||
Description:Sell
|
||||
LongDesc:Sell buildings, reclaiming a \nproportion of their build cost
|
||||
OrderButton@POWER_DOWN:
|
||||
Delegate:OrderButtonsChromeDelegate
|
||||
Logic:OrderButtonsChromeLogic
|
||||
X:39
|
||||
Y:0
|
||||
Width:30
|
||||
@@ -88,7 +109,7 @@ Container@INGAME_ROOT:
|
||||
Description:Powerdown
|
||||
LongDesc:Disable unneeded structures so their \npower can be used elsewhere
|
||||
OrderButton@REPAIR:
|
||||
Delegate:OrderButtonsChromeDelegate
|
||||
Logic:OrderButtonsChromeLogic
|
||||
X:75
|
||||
Y:0
|
||||
Width:30
|
||||
@@ -101,7 +122,7 @@ Container@INGAME_ROOT:
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:300
|
||||
Height:320
|
||||
Height:295
|
||||
Visible:false
|
||||
Children:
|
||||
Label@LABEL_TITLE:
|
||||
@@ -111,51 +132,45 @@ Container@INGAME_ROOT:
|
||||
Height:25
|
||||
Text:Options
|
||||
Align:Center
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@RESUME:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:60
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Resume
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Key:escape
|
||||
Button@SETTINGS:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:100
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Settings
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@MUSIC:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:140
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Music
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@SURRENDER:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:180
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Surrender
|
||||
Bold:True
|
||||
Font:Bold
|
||||
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
|
||||
Text:Abort Mission
|
||||
Font:Bold
|
||||
Background@DIPLOMACY_BG:
|
||||
Delegate:DiplomacyDelegate
|
||||
Logic:DiplomacyLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:450
|
||||
@@ -169,7 +184,148 @@ Container@INGAME_ROOT:
|
||||
Height:25
|
||||
Text:Diplomacy
|
||||
Align:Center
|
||||
Bold:True
|
||||
Font:Bold
|
||||
ChatDisplay@CHAT_DISPLAY:
|
||||
X:250
|
||||
Y:WINDOW_BOTTOM - HEIGHT - 30
|
||||
Width: 760
|
||||
Height: 200
|
||||
DrawBackground: False
|
||||
RemoveTime:250
|
||||
UseContrast: yes
|
||||
ChatEntry@CHAT_ENTRY:
|
||||
X:250
|
||||
Y:WINDOW_BOTTOM - HEIGHT
|
||||
Width: 760
|
||||
Height: 30
|
||||
UseContrast: yes
|
||||
Background@PERF_BG:
|
||||
ClickThrough:true
|
||||
Background:dialog4
|
||||
Logic:PerfDebugLogic
|
||||
X:10
|
||||
Y:WINDOW_BOTTOM - 250
|
||||
Width: 210
|
||||
Height: 250
|
||||
Children:
|
||||
PerfGraph@GRAPH:
|
||||
X:5
|
||||
Y:5
|
||||
Width:200
|
||||
Height:200
|
||||
Label@TEXT:
|
||||
X:20
|
||||
Y:205
|
||||
Width:170
|
||||
Height:40
|
||||
Container@OBSERVER_ROOT:
|
||||
Visible:true
|
||||
Logic:IngameObserverChromeLogic
|
||||
Children:
|
||||
WorldInteractionController@INTERACTION_CONTROLLER:
|
||||
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: 0-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:0
|
||||
Width:200
|
||||
Height:80
|
||||
Align:Center
|
||||
Button@POSTGAME_OBSERVE:
|
||||
X:10
|
||||
Y:(PARENT_BOTTOM - HEIGHT - 10)
|
||||
Width:150
|
||||
Height:25
|
||||
Font:Bold
|
||||
Text:Observe
|
||||
Button@POSTGAME_QUIT:
|
||||
X:(PARENT_RIGHT - WIDTH - 10)
|
||||
Y:(PARENT_BOTTOM - HEIGHT - 10)
|
||||
Width:150
|
||||
Height:25
|
||||
Font:Bold
|
||||
Text:Leave
|
||||
SupportPowerBin@INGAME_POWERS_BIN:
|
||||
X:0
|
||||
Y:25
|
||||
Button@INGAME_OPTIONS_BUTTON:
|
||||
X:0
|
||||
Y:0
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Options
|
||||
Font:Bold
|
||||
Key:escape
|
||||
WorldTooltip:
|
||||
Background@INGAME_OPTIONS_BG:
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:300
|
||||
Height:295
|
||||
Visible:false
|
||||
Children:
|
||||
Label@LABEL_TITLE:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:20
|
||||
Width:250
|
||||
Height:25
|
||||
Text:Options
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Button@RESUME:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:60
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Resume
|
||||
Font:Bold
|
||||
Key:escape
|
||||
Button@SETTINGS:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:100
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Settings
|
||||
Font:Bold
|
||||
Button@MUSIC:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:140
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Music
|
||||
Font:Bold
|
||||
Button@SURRENDER:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:180
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Surrender
|
||||
Font:Bold
|
||||
Button@DISCONNECT:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:220
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Abort Mission
|
||||
Font:Bold
|
||||
ChatDisplay@CHAT_DISPLAY:
|
||||
X:250
|
||||
Y:WINDOW_BOTTOM - HEIGHT - 30
|
||||
@@ -182,66 +338,32 @@ Container@INGAME_ROOT:
|
||||
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
|
||||
Background@PERF_BG:
|
||||
ClickThrough:true
|
||||
Background:dialog4
|
||||
Logic:PerfDebugLogic
|
||||
X:10
|
||||
Y:WINDOW_BOTTOM - 250
|
||||
Width: 210
|
||||
Height: 250
|
||||
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
|
||||
PerfGraph@GRAPH:
|
||||
X:5
|
||||
Y:5
|
||||
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
|
||||
Height:200
|
||||
Label@TEXT:
|
||||
X:20
|
||||
Y:205
|
||||
Width:170
|
||||
Height:40
|
||||
Background@FMVPLAYER:
|
||||
Width:WINDOW_RIGHT
|
||||
Height:WINDOW_BOTTOM
|
||||
Background:dialog4
|
||||
Children:
|
||||
VqaPlayer:
|
||||
X:0
|
||||
Y:0
|
||||
Width:WINDOW_RIGHT
|
||||
Height:WINDOW_BOTTOM
|
||||
|
||||
465
mods/d2k/chrome/lobby.yaml
Normal file
@@ -0,0 +1,465 @@
|
||||
Background@SERVER_LOBBY:
|
||||
Logic:LobbyLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:800
|
||||
Height:600
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:0
|
||||
Y:17
|
||||
Align:Center
|
||||
Width:800
|
||||
Height:20
|
||||
Font:Bold
|
||||
Text:OpenD2k Multiplayer Lobby
|
||||
Background@LOBBY_MAP_BG:
|
||||
X:PARENT_RIGHT-268
|
||||
Y:50
|
||||
Width:252
|
||||
Height:252
|
||||
Background:dialog3
|
||||
Children:
|
||||
MapPreview@MAP_PREVIEW:
|
||||
X:4
|
||||
Y:4
|
||||
Width:244
|
||||
Height:244
|
||||
ScrollPanel@PLAYERS:
|
||||
X:20
|
||||
Y:67
|
||||
ItemSpacing:5
|
||||
Width:504
|
||||
Height:235
|
||||
Children:
|
||||
Container@TEMPLATE_EDITABLE_PLAYER:
|
||||
X:5
|
||||
Y:0
|
||||
Width:475
|
||||
Height:25
|
||||
Visible:false
|
||||
Children:
|
||||
TextField@NAME:
|
||||
Text:Name
|
||||
Width:150
|
||||
Height:25
|
||||
X:0
|
||||
Y:0
|
||||
MaxLength:16
|
||||
DropDownButton@BOT_DROPDOWN:
|
||||
Text:Name
|
||||
Width:150
|
||||
Height:25
|
||||
Font:Regular
|
||||
Visible:false
|
||||
DropDownButton@COLOR:
|
||||
Width:80
|
||||
Height:25
|
||||
X:160
|
||||
Y:0
|
||||
Children:
|
||||
ColorBlock@COLORBLOCK:
|
||||
X:5
|
||||
Y:6
|
||||
Width:PARENT_RIGHT-35
|
||||
Height:PARENT_BOTTOM-12
|
||||
DropDownButton@FACTION:
|
||||
Width:130
|
||||
Height:25
|
||||
X:250
|
||||
Y:0
|
||||
Children:
|
||||
Image@FACTIONFLAG:
|
||||
Width:23
|
||||
Height:23
|
||||
X:5
|
||||
Y:0
|
||||
Label@FACTIONNAME:
|
||||
Text:Faction
|
||||
Width:70
|
||||
Height:25
|
||||
X:30
|
||||
Y:0
|
||||
DropDownButton@TEAM:
|
||||
Text:Team
|
||||
Width:48
|
||||
Height:25
|
||||
X:390
|
||||
Y:0
|
||||
Checkbox@STATUS_CHECKBOX:
|
||||
X:448
|
||||
Y:2
|
||||
Width:20
|
||||
Height:20
|
||||
Visible:false
|
||||
Image@STATUS_IMAGE:
|
||||
Visible:false
|
||||
X:450
|
||||
Y:4
|
||||
Width:20
|
||||
Height:20
|
||||
ImageCollection:checkbox-bits
|
||||
ImageName:checked
|
||||
Visible:false
|
||||
Container@TEMPLATE_NONEDITABLE_PLAYER:
|
||||
X:5
|
||||
Y:0
|
||||
Width:475
|
||||
Height:25
|
||||
Visible:false
|
||||
Children:
|
||||
Label@NAME:
|
||||
Text:Name
|
||||
Width:145
|
||||
Height:25
|
||||
X:5
|
||||
Y:0-1
|
||||
Button@KICK:
|
||||
Text:X
|
||||
Width:25
|
||||
Height:23
|
||||
X:125
|
||||
Y:2
|
||||
Font:Bold
|
||||
ColorBlock@COLOR:
|
||||
X:165
|
||||
Y:6
|
||||
Width:45
|
||||
Height:13
|
||||
Label@FACTION:
|
||||
Width:130
|
||||
Height:25
|
||||
X:250
|
||||
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:23
|
||||
Height:25
|
||||
Align:Center
|
||||
X:390
|
||||
Y:0
|
||||
Image@STATUS_IMAGE:
|
||||
Visible:false
|
||||
X:450
|
||||
Y:4
|
||||
Width:20
|
||||
Height:20
|
||||
ImageCollection:checkbox-bits
|
||||
ImageName:checked
|
||||
|
||||
Container@TEMPLATE_EMPTY:
|
||||
X:5
|
||||
Y:0
|
||||
Width:475
|
||||
Height:25
|
||||
Visible:false
|
||||
Children:
|
||||
Label@NAME:
|
||||
Text:Name
|
||||
Width:145
|
||||
Height:25
|
||||
X:5
|
||||
Y:0-1
|
||||
DropDownButton@NAME_HOST:
|
||||
Text:Name
|
||||
Width:150
|
||||
Height:25
|
||||
X:0
|
||||
Y:0
|
||||
Visible:false
|
||||
Button@JOIN:
|
||||
Text:Play in this slot
|
||||
Width:278
|
||||
Height:25
|
||||
X:160
|
||||
Y:0
|
||||
Container@TEMPLATE_EDITABLE_SPECTATOR:
|
||||
X:5
|
||||
Y:0
|
||||
Width:475
|
||||
Height:25
|
||||
Visible:false
|
||||
Children:
|
||||
TextField@NAME:
|
||||
Text:Name
|
||||
Width:150
|
||||
Height:25
|
||||
MaxLength:16
|
||||
DropDownButton@COLOR:
|
||||
Width:80
|
||||
Height:25
|
||||
X:160
|
||||
Font:Regular
|
||||
Children:
|
||||
ColorBlock@COLORBLOCK:
|
||||
X:5
|
||||
Y:6
|
||||
Width:PARENT_RIGHT-35
|
||||
Height:PARENT_BOTTOM-12
|
||||
Label@SPECTATOR:
|
||||
Text:Spectator
|
||||
Width:198
|
||||
Height:25
|
||||
X:240
|
||||
Y:0
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Checkbox@STATUS_CHECKBOX:
|
||||
X:448
|
||||
Y:2
|
||||
Width:20
|
||||
Height:20
|
||||
Image@STATUS_IMAGE:
|
||||
Visible:false
|
||||
X:450
|
||||
Y:4
|
||||
Width:20
|
||||
Height:20
|
||||
ImageCollection:checkbox-bits
|
||||
ImageName:checked
|
||||
|
||||
Container@TEMPLATE_NONEDITABLE_SPECTATOR:
|
||||
X:5
|
||||
Y:0
|
||||
Width:475
|
||||
Height:25
|
||||
Visible:false
|
||||
Children:
|
||||
Label@NAME:
|
||||
Text:Name
|
||||
Width:145
|
||||
Height:25
|
||||
X:5
|
||||
Y:0-1
|
||||
Button@KICK:
|
||||
Text:X
|
||||
Width:25
|
||||
Height:23
|
||||
X:125
|
||||
Y:2
|
||||
Font:Bold
|
||||
ColorBlock@COLOR:
|
||||
X:165
|
||||
Y:6
|
||||
Width:45
|
||||
Height:13
|
||||
Label@SPECTATOR:
|
||||
Text:Spectator
|
||||
Width:198
|
||||
Height:25
|
||||
X:240
|
||||
Y:0
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Image@STATUS_IMAGE:
|
||||
Visible:false
|
||||
X:450
|
||||
Y:4
|
||||
Width:20
|
||||
Height:20
|
||||
ImageCollection:checkbox-bits
|
||||
ImageName:checked
|
||||
Container@TEMPLATE_NEW_SPECTATOR:
|
||||
X:5
|
||||
Y:0
|
||||
Width:475
|
||||
Height:25
|
||||
Visible:false
|
||||
Children:
|
||||
Button@SPECTATE:
|
||||
Text:Spectate
|
||||
Font:Regular
|
||||
Width:278
|
||||
Height:25
|
||||
X:160
|
||||
Y:0
|
||||
Container@LABEL_CONTAINER:
|
||||
X:25
|
||||
Y:40
|
||||
Children:
|
||||
Label@LABEL_LOBBY_NAME:
|
||||
Width:150
|
||||
Height:25
|
||||
X:0
|
||||
Y:0
|
||||
Text:Name
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Label@LABEL_LOBBY_COLOR:
|
||||
Width:80
|
||||
Height:25
|
||||
X:160
|
||||
Y:0
|
||||
Text:Color
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Label@LABEL_LOBBY_FACTION:
|
||||
Width:130
|
||||
Height:25
|
||||
X:250
|
||||
Y:0
|
||||
Text:Faction
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Label@LABEL_LOBBY_TEAM:
|
||||
Width:48
|
||||
Height:25
|
||||
X:390
|
||||
Y:0
|
||||
Text:Team
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Label@LABEL_LOBBY_STATUS:
|
||||
X:448
|
||||
Y:0
|
||||
Width:20
|
||||
Height:25
|
||||
Text:Ready
|
||||
Align:Left
|
||||
Font:Bold
|
||||
Button@CHANGEMAP_BUTTON:
|
||||
X:PARENT_RIGHT-154
|
||||
Y:PARENT_BOTTOM-269
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Change Map
|
||||
Font:Bold
|
||||
ScrollPanel@CHAT_DISPLAY:
|
||||
X:20
|
||||
Y:PARENT_BOTTOM - 289
|
||||
Width:PARENT_RIGHT - 200
|
||||
Height:230
|
||||
ItemSpacing:1
|
||||
Children:
|
||||
Container@CHAT_TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:16
|
||||
X:2
|
||||
Y:0
|
||||
Children:
|
||||
Label@TIME:
|
||||
X:3
|
||||
Width:50
|
||||
Height:15
|
||||
VAlign:Top
|
||||
Label@NAME:
|
||||
X:45
|
||||
Width:50
|
||||
Height:15
|
||||
VAlign:Top
|
||||
Label@TEXT:
|
||||
X:55
|
||||
Width:PARENT_RIGHT - 60
|
||||
Height:15
|
||||
WordWrap:true
|
||||
VAlign:Top
|
||||
Label@LABEL_CHATTYPE:
|
||||
Width:65
|
||||
Height:25
|
||||
X:0
|
||||
Y:PARENT_BOTTOM - 50
|
||||
Text:Chat:
|
||||
Align:Right
|
||||
TextField@CHAT_TEXTFIELD:
|
||||
X:70
|
||||
Y:PARENT_BOTTOM - 49
|
||||
Width:550
|
||||
Height:25
|
||||
Button@START_GAME_BUTTON:
|
||||
X:PARENT_RIGHT-154
|
||||
Y:PARENT_BOTTOM-49
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Start Game
|
||||
Font:Bold
|
||||
Button@DISCONNECT_BUTTON:
|
||||
X:PARENT_RIGHT-154
|
||||
Y:PARENT_BOTTOM-189+25
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Disconnect
|
||||
Font:Bold
|
||||
Checkbox@ALLOWCHEATS_CHECKBOX:
|
||||
X: PARENT_RIGHT-154
|
||||
Y: PARENT_BOTTOM-229
|
||||
Width: 80
|
||||
Height: 20
|
||||
Text: Allow Cheats
|
||||
Background@COLOR_CHOOSER:
|
||||
Logic:ColorPickerLogic
|
||||
Background:dialog2
|
||||
Width:310
|
||||
Height:120
|
||||
Children:
|
||||
Button@SAVE_BUTTON:
|
||||
X:210
|
||||
Y:85
|
||||
Width:90
|
||||
Height:25
|
||||
Text:Save
|
||||
Font:Bold
|
||||
Button@RANDOM_BUTTON:
|
||||
X:115
|
||||
Y:85
|
||||
Width:90
|
||||
Height:25
|
||||
Text:Random
|
||||
Font:Bold
|
||||
ShpImage@FACT:
|
||||
X:220
|
||||
Y:10
|
||||
Image:fact
|
||||
Palette:colorpicker
|
||||
Label@HUE_LABEL:
|
||||
X:0
|
||||
Y:5
|
||||
Width:40
|
||||
Height:20
|
||||
Align: Right
|
||||
Text: Hue:
|
||||
Slider@HUE:
|
||||
X:43
|
||||
Y:10
|
||||
Width:160
|
||||
Height:20
|
||||
Ticks:5
|
||||
Label@SAT_LABEL:
|
||||
X:0
|
||||
Y:30
|
||||
Width:40
|
||||
Height:20
|
||||
Align: Right
|
||||
Text: Sat:
|
||||
Slider@SAT:
|
||||
X:43
|
||||
Y:35
|
||||
Width:160
|
||||
Height:20
|
||||
Ticks:5
|
||||
Label@LUM_LABEL:
|
||||
X:0
|
||||
Y:55
|
||||
Width:40
|
||||
Height:20
|
||||
Align: Right
|
||||
Text: Lum:
|
||||
Slider@LUM:
|
||||
X:43
|
||||
Y:60
|
||||
Width:160
|
||||
Height:20
|
||||
Ticks:5
|
||||
MinimumValue: 0.2
|
||||
MaximumValue: 1
|
||||
@@ -2,72 +2,78 @@ Background@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:
|
||||
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:
|
||||
X:45
|
||||
Y:70
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Join Game
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@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:
|
||||
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:
|
||||
X:45
|
||||
Y:190
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Music
|
||||
Bold:True
|
||||
Button@MAINMENU_BUTTON_QUIT:
|
||||
Text:Settings
|
||||
Font:Bold
|
||||
Button@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:
|
||||
X:45
|
||||
Y:260
|
||||
Y:270
|
||||
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:Music
|
||||
Font:Bold
|
||||
Button@MAINMENU_BUTTON_REPLAY_VIEWER:
|
||||
X:45
|
||||
Y:310
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Replay Viewer
|
||||
Font:Bold
|
||||
Button@MAINMENU_BUTTON_QUIT:
|
||||
X:45
|
||||
Y:350
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Quit
|
||||
Font:Bold
|
||||
Background@PERF_BG:
|
||||
ClickThrough:true
|
||||
Background:dialog4
|
||||
Delegate:PerfDebugDelegate
|
||||
Logic:PerfDebugLogic
|
||||
X:10
|
||||
Y:WINDOW_BOTTOM - 250
|
||||
Width: 210
|
||||
@@ -79,18 +85,17 @@ Background@PERF_BG:
|
||||
Width:200
|
||||
Height:200
|
||||
Label@TEXT:
|
||||
Bold: false
|
||||
X:20
|
||||
Y:205
|
||||
Width:170
|
||||
Height:40
|
||||
Background@MUSIC_MENU:
|
||||
Delegate:MusicPlayerDelegate
|
||||
Logic:MusicPlayerLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width: 450
|
||||
Height: 250
|
||||
Visible: false
|
||||
Visible: true
|
||||
Children:
|
||||
Label@SETTINGS_LABEL_TITLE:
|
||||
X:0
|
||||
@@ -99,14 +104,22 @@ Background@MUSIC_MENU:
|
||||
Height:25
|
||||
Text:Music
|
||||
Align:Center
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@BUTTON_INSTALL:
|
||||
X:20
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Install Music
|
||||
Font:Bold
|
||||
Button@BUTTON_CLOSE:
|
||||
X:PARENT_RIGHT - 180
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Close
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Key:escape
|
||||
Container@BUTTONS:
|
||||
X:PARENT_RIGHT - 150
|
||||
Y:50
|
||||
@@ -189,8 +202,8 @@ Background@MUSIC_MENU:
|
||||
Width:280
|
||||
Height:140
|
||||
Children:
|
||||
Label@MUSIC_TEMPLATE:
|
||||
Width:PARENT_RIGHT-28
|
||||
ScrollItem@MUSIC_TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:25
|
||||
X:2
|
||||
Y:0
|
||||
@@ -217,4 +230,4 @@ Background@MUSIC_MENU:
|
||||
Y:140
|
||||
Width:100
|
||||
Height:20
|
||||
Text:Repeat
|
||||
Text:Loop
|
||||
|
||||
74
mods/d2k/chrome/map-chooser.yaml
Normal file
@@ -0,0 +1,74 @@
|
||||
Background@MAPCHOOSER_PANEL:
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Logic:MapChooserLogic
|
||||
Width:800
|
||||
Height:600
|
||||
Children:
|
||||
Label@MAPCHOOSER_TITLE:
|
||||
X:0
|
||||
Y:17
|
||||
Align:Center
|
||||
Width:800
|
||||
Height:20
|
||||
Text:Choose Map
|
||||
Font:Bold
|
||||
ScrollPanel@MAP_LIST:
|
||||
X:20
|
||||
Y:47
|
||||
Width:PARENT_RIGHT - 40
|
||||
Height:474
|
||||
Children:
|
||||
ScrollItem@MAP_TEMPLATE:
|
||||
Width:180
|
||||
Height:208
|
||||
X:2
|
||||
Y:0
|
||||
Visible:false
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:2
|
||||
Y:PARENT_BOTTOM-47
|
||||
Width:PARENT_RIGHT-4
|
||||
Height:25
|
||||
Align:Center
|
||||
Label@DETAILS:
|
||||
Width:PARENT_RIGHT-4
|
||||
X:2
|
||||
Y:PARENT_BOTTOM-35
|
||||
Align:Center
|
||||
Height:25
|
||||
Font:Tiny
|
||||
Label@AUTHOR:
|
||||
Width:PARENT_RIGHT-4
|
||||
X:2
|
||||
Y:PARENT_BOTTOM-26
|
||||
Align:Center
|
||||
Height:25
|
||||
Font:Tiny
|
||||
MapPreview@PREVIEW:
|
||||
X:(PARENT_RIGHT - WIDTH)/2
|
||||
Y:4
|
||||
Width:160
|
||||
Height:160
|
||||
DropDownButton@GAMEMODE_FILTER:
|
||||
X:PARENT_RIGHT - 220
|
||||
Y:17
|
||||
Width:200
|
||||
Height:25
|
||||
Button@BUTTON_OK:
|
||||
X:PARENT_RIGHT - 295
|
||||
Y:PARENT_BOTTOM - 49
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Ok
|
||||
Font:Bold
|
||||
Key:return
|
||||
Button@BUTTON_CANCEL:
|
||||
X:PARENT_RIGHT-154
|
||||
Y:PARENT_BOTTOM-49
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Cancel
|
||||
Font:Bold
|
||||
Key:escape
|
||||
84
mods/d2k/chrome/modchooser.yaml
Normal file
@@ -0,0 +1,84 @@
|
||||
Background@MODS_PANEL:
|
||||
Logic:ModBrowserLogic
|
||||
Width:740
|
||||
Height:500
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Children:
|
||||
Label@TITLE:
|
||||
Text:Select Mod
|
||||
Width:PARENT_RIGHT
|
||||
Y:20
|
||||
Font:Bold
|
||||
Align:Center
|
||||
ScrollPanel@MOD_LIST:
|
||||
X:15
|
||||
Y:70
|
||||
Width:710
|
||||
Height:PARENT_BOTTOM - 125
|
||||
Children:
|
||||
ScrollItem@MOD_TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:25
|
||||
X:2
|
||||
Y:0
|
||||
Visible:false
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:10
|
||||
Width:200
|
||||
Height:25
|
||||
Label@AUTHOR:
|
||||
X:PARENT_RIGHT-300
|
||||
Align:Center
|
||||
Width:50
|
||||
Height:25
|
||||
Label@VERSION:
|
||||
Width:140
|
||||
X:PARENT_RIGHT-150
|
||||
Align:Center
|
||||
Height:25
|
||||
Container@MOD_LABELS:
|
||||
Width:710-25
|
||||
Height:25
|
||||
X:15
|
||||
Y:45
|
||||
Children:
|
||||
Label@TITLE:
|
||||
Width:125
|
||||
Height:25
|
||||
X:0
|
||||
Y:0
|
||||
Text:Title
|
||||
Align:Center
|
||||
Font:Bold
|
||||
Label@AUTHOR:
|
||||
X:PARENT_RIGHT-300
|
||||
Align:Center
|
||||
Width:50
|
||||
Height:25
|
||||
Text:Author
|
||||
Font:Bold
|
||||
Label@VERSION:
|
||||
Width:140
|
||||
X:PARENT_RIGHT-150
|
||||
Align:Center
|
||||
Height:25
|
||||
Text:Version
|
||||
Font:Bold
|
||||
Button@BACK_BUTTON:
|
||||
Key:escape
|
||||
X:PARENT_RIGHT-180
|
||||
Y:PARENT_BOTTOM-45
|
||||
Width:160
|
||||
Height:25
|
||||
Font:Bold
|
||||
Text:Cancel
|
||||
Button@LOAD_BUTTON:
|
||||
Key:return
|
||||
X:PARENT_RIGHT-360
|
||||
Y:PARENT_BOTTOM-45
|
||||
Width:160
|
||||
Height:25
|
||||
Font:Bold
|
||||
Text:Load Mod
|
||||
102
mods/d2k/chrome/replaybrowser.yaml
Normal file
@@ -0,0 +1,102 @@
|
||||
Background@REPLAYBROWSER_BG:
|
||||
Logic:ReplayBrowserLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:700
|
||||
Height:410
|
||||
Children:
|
||||
Label@REPLAYBROWSER_LABEL_TITLE:
|
||||
X:0
|
||||
Y:20
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Text:Choose Replay
|
||||
Align:Center
|
||||
Font:Bold
|
||||
ScrollPanel@REPLAY_LIST:
|
||||
X:20
|
||||
Y:50
|
||||
Width:390
|
||||
Height:300
|
||||
Children:
|
||||
ScrollItem@REPLAY_TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:25
|
||||
X:2
|
||||
Y:0
|
||||
Visible:false
|
||||
Children:
|
||||
Label@TITLE:
|
||||
X:10
|
||||
Width:PARENT_RIGHT-20
|
||||
Height:25
|
||||
Container@REPLAY_INFO:
|
||||
X:0
|
||||
Y:0
|
||||
Width:PARENT_RIGHT
|
||||
Height:PARENT_BOTTOM
|
||||
Visible:false
|
||||
Children:
|
||||
MapPreview@MAP_PREVIEW:
|
||||
X:PARENT_RIGHT-241
|
||||
Y:30
|
||||
Width:192
|
||||
Height:192
|
||||
Label@MAP_TITLE_LABEL:
|
||||
X:PARENT_RIGHT - 200 - WIDTH
|
||||
Y:250
|
||||
Align:Right
|
||||
Width:70
|
||||
Height:20
|
||||
Text:Map:
|
||||
Font:Bold
|
||||
Label@MAP_TITLE:
|
||||
X:PARENT_RIGHT - 195
|
||||
Y:250
|
||||
Align:Left
|
||||
Width:70
|
||||
Height:20
|
||||
Label@DURATION_LABEL:
|
||||
X:PARENT_RIGHT - 200 - WIDTH
|
||||
Y:270
|
||||
Align:Right
|
||||
Width:70
|
||||
Height:20
|
||||
Text:Duration:
|
||||
Font:Bold
|
||||
Label@DURATION:
|
||||
X:PARENT_RIGHT - 195
|
||||
Y:270
|
||||
Align:Left
|
||||
Width:70
|
||||
Height:20
|
||||
Label@PLAYERS_LABEL:
|
||||
X:PARENT_RIGHT - 200 - WIDTH
|
||||
Y:290
|
||||
Align:Right
|
||||
Width:70
|
||||
Height:20
|
||||
Text:Players:
|
||||
Font:Bold
|
||||
Label@PLAYERS:
|
||||
X:PARENT_RIGHT - 195
|
||||
Y:290
|
||||
Align:Left
|
||||
Width:70
|
||||
Height:20
|
||||
Button@WATCH_BUTTON:
|
||||
X:PARENT_RIGHT - 140 - 130
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Watch
|
||||
Font:Bold
|
||||
Key:return
|
||||
Button@CANCEL_BUTTON:
|
||||
X:PARENT_RIGHT - 140
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Cancel
|
||||
Font:Bold
|
||||
Key:escape
|
||||
@@ -1,93 +1,9 @@
|
||||
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
|
||||
Logic:ServerBrowserLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:700
|
||||
Height:410
|
||||
Visible:false
|
||||
Width:540
|
||||
Height:535
|
||||
Children:
|
||||
Label@JOINSERVER_LABEL_TITLE:
|
||||
X:0
|
||||
@@ -96,130 +12,95 @@ Background@JOINSERVER_BG:
|
||||
Height:25
|
||||
Text:Join Server
|
||||
Align:Center
|
||||
Bold:True
|
||||
Font:Bold
|
||||
ScrollPanel@SERVER_LIST:
|
||||
X:20
|
||||
Y:50
|
||||
Width:390
|
||||
Height:300
|
||||
Width:500
|
||||
Height:425
|
||||
Children:
|
||||
Label@SERVER_TEMPLATE:
|
||||
Width:PARENT_RIGHT-28
|
||||
Height:25
|
||||
ScrollItem@SERVER_TEMPLATE:
|
||||
Width:PARENT_RIGHT-27
|
||||
Height:68
|
||||
X:2
|
||||
Y:0
|
||||
Visible:false
|
||||
Label@JOINSERVER_PROGRESS_TITLE:
|
||||
X:150
|
||||
Children:
|
||||
MapPreview@MAP_PREVIEW:
|
||||
X:2
|
||||
Y:2
|
||||
Width:64
|
||||
Height:64
|
||||
ShowSpawnPoints:no
|
||||
Label@TITLE:
|
||||
X:70
|
||||
Width:200
|
||||
Height:25
|
||||
Font:Bold
|
||||
Label@MAP:
|
||||
X:70
|
||||
Y:20
|
||||
Width:250
|
||||
Height:25
|
||||
Label@PLAYERS:
|
||||
X:70
|
||||
Y:40
|
||||
Width:50
|
||||
Height:25
|
||||
Label@STATE:
|
||||
Width:140
|
||||
X:PARENT_RIGHT-150
|
||||
Align:Right
|
||||
Height:25
|
||||
Font:Bold
|
||||
Label@IP:
|
||||
Width:140
|
||||
X:PARENT_RIGHT-150
|
||||
Y:20
|
||||
Align:Right
|
||||
Height:25
|
||||
Label@VERSION:
|
||||
Width:140
|
||||
X:PARENT_RIGHT-150
|
||||
Y:40
|
||||
Align:Right
|
||||
Height:25
|
||||
|
||||
Label@PROGRESS_LABEL:
|
||||
X:(PARENT_RIGHT - WIDTH) / 2
|
||||
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
|
||||
Align:Center
|
||||
Button@REFRESH_BUTTON:
|
||||
X:160
|
||||
X:20
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Refresh
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@JOIN_BUTTON:
|
||||
X:PARENT_RIGHT - 140 - 130
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Join
|
||||
Bold:True
|
||||
Button@CANCEL_BUTTON:
|
||||
Font:Bold
|
||||
Key:return
|
||||
Button@BACK_BUTTON:
|
||||
X:PARENT_RIGHT - 140
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Cancel
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Key:escape
|
||||
Background@DIRECTCONNECT_BG:
|
||||
Delegate:ServerBrowserDelegate
|
||||
Logic:DirectConnectLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:400
|
||||
Height:155
|
||||
Visible:false
|
||||
Children:
|
||||
Label@DIRECTCONNECT_LABEL_TITLE:
|
||||
X:0
|
||||
@@ -228,7 +109,7 @@ Background@DIRECTCONNECT_BG:
|
||||
Height:25
|
||||
Text:Direct Connect
|
||||
Align:Center
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Label@ADDRESS_LABEL:
|
||||
X:50
|
||||
Y:59
|
||||
@@ -236,33 +117,40 @@ Background@DIRECTCONNECT_BG:
|
||||
Height:25
|
||||
Align:Right
|
||||
Text:Server Address:
|
||||
TextField@SERVER_ADDRESS:
|
||||
TextField@IP:
|
||||
X:150
|
||||
Y:60
|
||||
Width:200
|
||||
Width:160
|
||||
MaxLength:50
|
||||
Height:25
|
||||
TextField@PORT:
|
||||
X:315
|
||||
Y:60
|
||||
Width:55
|
||||
MaxLength:5
|
||||
Height:25
|
||||
Button@JOIN_BUTTON:
|
||||
X:130
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Join
|
||||
Bold:True
|
||||
Button@CANCEL_BUTTON:
|
||||
Font:Bold
|
||||
Key:return
|
||||
Button@BACK_BUTTON:
|
||||
X:260
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:120
|
||||
Height:25
|
||||
Text:Cancel
|
||||
Bold:True
|
||||
Background@CONNECTION_FAILED_BG:
|
||||
Delegate:ConnectionDialogsDelegate
|
||||
Font:Bold
|
||||
Key:escape
|
||||
Background@CONNECTIONFAILED_PANEL:
|
||||
Logic:ConnectionFailedLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:450
|
||||
Height:150
|
||||
Visible:false
|
||||
Children:
|
||||
Label@CONNECTION_FAILED_TITLE:
|
||||
X:0
|
||||
@@ -271,35 +159,36 @@ Background@CONNECTION_FAILED_BG:
|
||||
Height:25
|
||||
Text:Connection Failed
|
||||
Align:Center
|
||||
Bold:True
|
||||
Label@CONNECTION_FAILED_DESC:
|
||||
Font:Bold
|
||||
Label@CONNECTING_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:
|
||||
Button@RETRY_BUTTON:
|
||||
X:PARENT_RIGHT - 360
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Retry
|
||||
Bold:True
|
||||
Button@CONNECTION_BUTTON_CANCEL:
|
||||
Font:Bold
|
||||
Key:return
|
||||
Button@ABORT_BUTTON:
|
||||
X:PARENT_RIGHT - 180
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Cancel
|
||||
Bold:True
|
||||
Background@CONNECTING_BG:
|
||||
Delegate:ConnectionDialogsDelegate
|
||||
Font:Bold
|
||||
Key:escape
|
||||
Background@CONNECTING_PANEL:
|
||||
Logic:ConnectionLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM - HEIGHT)/2
|
||||
Width:450
|
||||
Height:150
|
||||
Visible:false
|
||||
Children:
|
||||
Label@CONNECTING_TITLE:
|
||||
X:0
|
||||
@@ -308,7 +197,7 @@ Background@CONNECTING_BG:
|
||||
Height:25
|
||||
Text:Connecting
|
||||
Align:Center
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Label@CONNECTING_DESC:
|
||||
X:0
|
||||
Y:60
|
||||
@@ -316,10 +205,11 @@ Background@CONNECTING_BG:
|
||||
Height:25
|
||||
Text:Connecting to AAA.BBB.CCC.DDD:EEEE...
|
||||
Align:Center
|
||||
Button@CONNECTION_BUTTON_ABORT:
|
||||
Button@ABORT_BUTTON:
|
||||
X:PARENT_RIGHT - 180
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Abort
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Key:escape
|
||||
|
||||
@@ -1,10 +1,9 @@
|
||||
Background@SETTINGS_MENU:
|
||||
Delegate:SettingsMenuDelegate
|
||||
Logic:SettingsMenuLogic
|
||||
X:(WINDOW_RIGHT - WIDTH)/2
|
||||
Y:(WINDOW_BOTTOM- HEIGHT)/2
|
||||
Width: 450
|
||||
Height: 350
|
||||
Visible: false
|
||||
Children:
|
||||
Label@SETTINGS_LABEL_TITLE:
|
||||
X:0
|
||||
@@ -13,14 +12,15 @@ Background@SETTINGS_MENU:
|
||||
Height:25
|
||||
Text:Settings
|
||||
Align:Center
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@BUTTON_CLOSE:
|
||||
X:PARENT_RIGHT - 180
|
||||
Y:PARENT_BOTTOM - 45
|
||||
Width:160
|
||||
Height:25
|
||||
Text:Close
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Key:escape
|
||||
Container@TAB_CONTAINER:
|
||||
X:0
|
||||
Y:50
|
||||
@@ -33,28 +33,28 @@ Background@SETTINGS_MENU:
|
||||
Width:90
|
||||
Height:25
|
||||
Text:General
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@AUDIO:
|
||||
X:135
|
||||
Y:0
|
||||
Width:90
|
||||
Height:25
|
||||
Text:Audio
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@DISPLAY:
|
||||
X:225
|
||||
Y:0
|
||||
Width:90
|
||||
Height:25
|
||||
Text:Display
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Button@DEBUG:
|
||||
X:315
|
||||
Y:0
|
||||
Width:90
|
||||
Height:25
|
||||
Text:Debug
|
||||
Bold:True
|
||||
Font:Bold
|
||||
Container@GENERAL_PANE:
|
||||
X:37
|
||||
Y:100
|
||||
@@ -79,12 +79,36 @@ Background@SETTINGS_MENU:
|
||||
Width:200
|
||||
Height:20
|
||||
Text: Enable Edge Scrolling
|
||||
Label@EDGE_SCROLL_AMOUNT_LABEL:
|
||||
X:0
|
||||
Y:70
|
||||
Text: Scroll Speed
|
||||
Slider@EDGE_SCROLL_AMOUNT:
|
||||
X:130
|
||||
Y:60
|
||||
Width:250
|
||||
Height:20
|
||||
Ticks:5
|
||||
MinimumValue: 10
|
||||
MaximumValue: 50
|
||||
Checkbox@INVERSE_SCROLL:
|
||||
X:0
|
||||
Y:60
|
||||
Y:90
|
||||
Width:200
|
||||
Height:20
|
||||
Text: Invert Mouse Drag Scrolling
|
||||
Checkbox@TEAMCHAT_TOGGLE:
|
||||
X:0
|
||||
Y:120
|
||||
Width:200
|
||||
Height:20
|
||||
Text: Shift-Enter Toggles Team Chat
|
||||
Checkbox@SHOW_SHELLMAP:
|
||||
X:0
|
||||
Y:150
|
||||
Width:200
|
||||
Height:20
|
||||
Text: Show Shellmap
|
||||
Container@AUDIO_PANE:
|
||||
X:37
|
||||
Y:100
|
||||
@@ -119,38 +143,61 @@ Background@SETTINGS_MENU:
|
||||
Height:PARENT_BOTTOM - 100
|
||||
Visible: false
|
||||
Children:
|
||||
Checkbox@FULLSCREEN_CHECKBOX:
|
||||
Label@MODE_LABEL:
|
||||
X:0
|
||||
Y:0
|
||||
Width:300
|
||||
Width:45
|
||||
Height:25
|
||||
Text:Mode:
|
||||
DropDownButton@MODE_DROPDOWN:
|
||||
X:50
|
||||
Y:1
|
||||
Width:170
|
||||
Height:25
|
||||
Font:Regular
|
||||
Text:Windowed
|
||||
Container@WINDOW_RESOLUTION:
|
||||
X:220
|
||||
Y:0
|
||||
Children:
|
||||
Label@At:
|
||||
Text:@
|
||||
Font:Bold
|
||||
Y:0-1
|
||||
Height:25
|
||||
Width:25
|
||||
Align:Center
|
||||
TextField@WINDOW_WIDTH:
|
||||
X:25
|
||||
Width:45
|
||||
Height:25
|
||||
MaxLength:5
|
||||
Label@X:
|
||||
Text:x
|
||||
Font:Bold
|
||||
X:70
|
||||
Y:0-1
|
||||
Height:25
|
||||
Width:15
|
||||
Align:Center
|
||||
TextField@WINDOW_HEIGHT:
|
||||
X:85
|
||||
Width:45
|
||||
Height:25
|
||||
MaxLength:5
|
||||
Label@VIDEO_DESC:
|
||||
Y:25
|
||||
Width:PARENT_RIGHT
|
||||
Height:25
|
||||
Font:Tiny
|
||||
Align:Center
|
||||
Text:Mode/Resolution changes will be applied after the game is restarted
|
||||
Checkbox@PIXELDOUBLE_CHECKBOX:
|
||||
Y:50
|
||||
Width:200
|
||||
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
|
||||
Font:Regular
|
||||
Text:Enable Pixel Doubling
|
||||
Container@DEBUG_PANE:
|
||||
X:37
|
||||
Y:100
|
||||
@@ -164,15 +211,9 @@ Background@SETTINGS_MENU:
|
||||
Width:300
|
||||
Height:20
|
||||
Text:Show Performance Information
|
||||
Checkbox@SYNCREPORTS_CHECKBOX:
|
||||
Checkbox@CHECKUNSYNCED_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
|
||||
Text:Check Sync around Unsynced Code
|
||||
@@ -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
|
||||
@@ -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>
|
||||
238
mods/d2k/cursors.yaml
Normal file
@@ -0,0 +1,238 @@
|
||||
Palettes:
|
||||
cursor: d2k.pal
|
||||
|
||||
Cursors:
|
||||
mouse: cursor
|
||||
scroll-t:
|
||||
start:112
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-tr:
|
||||
start: 120
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-r:
|
||||
start: 128
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-br:
|
||||
start: 136
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-b:
|
||||
start:148
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-bl:
|
||||
start:156
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-l:
|
||||
start:164
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-tl:
|
||||
start:172
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-t-blocked:
|
||||
start:180
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-tr-blocked:
|
||||
start:188
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-r-blocked:
|
||||
start:196
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-br-blocked:
|
||||
start:204
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-b-blocked:
|
||||
start:212
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-bl-blocked:
|
||||
start:220
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-l-blocked:
|
||||
start:228
|
||||
x: 12
|
||||
y: 12
|
||||
scroll-tl-blocked:
|
||||
start:236
|
||||
x: 12
|
||||
y: 12
|
||||
select:
|
||||
start:40
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
|
||||
default:
|
||||
start:0
|
||||
default-minimap:
|
||||
start:0
|
||||
generic-blocked:
|
||||
start:24
|
||||
generic-blocked-minimap:
|
||||
start:24
|
||||
move:
|
||||
start:8
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
move-minimap:
|
||||
start:48
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
move-blocked:
|
||||
start:24
|
||||
x: 12
|
||||
y: 12
|
||||
move-blocked-minimap:
|
||||
start:24
|
||||
x: 12
|
||||
y: 12
|
||||
attack:
|
||||
start:16
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
attack-minimap:
|
||||
start:16
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
attackmove:
|
||||
start:16
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
attackmove-minimap:
|
||||
start:16
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
harvest:
|
||||
start:16
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
harvest-minimap:
|
||||
start:203
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
enter:
|
||||
start:32
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
enter-minimap:
|
||||
start:32
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
enter-blocked:
|
||||
start:104
|
||||
length: 1
|
||||
x: 12
|
||||
y: 12
|
||||
enter-blocked-minimap:
|
||||
start:104
|
||||
c4:
|
||||
start:252
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
c4-minimap:
|
||||
start:252
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
guard:
|
||||
start:72
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
guard-minimap:
|
||||
start:72
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
capture:
|
||||
start:32
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
capture-minimap:
|
||||
start:32
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
ability:
|
||||
start:96
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
ability-minimap:
|
||||
start:96
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
|
||||
# Cursors that need minimap variants
|
||||
deploy:
|
||||
start:96
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
deploy-blocked:
|
||||
start:104
|
||||
length: 1
|
||||
x: 12
|
||||
y: 12
|
||||
nuke:
|
||||
start:244
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
|
||||
sell:
|
||||
start:80
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
sell-blocked:
|
||||
start:56
|
||||
length: 1
|
||||
x: 12
|
||||
y: 12
|
||||
repair:
|
||||
start:88
|
||||
length: 8
|
||||
x: 12
|
||||
y: 12
|
||||
repair-blocked:
|
||||
start:64
|
||||
length: 1
|
||||
x: 12
|
||||
y: 12
|
||||
|
||||
nopower: cursor
|
||||
powerdown-blocked:
|
||||
start:0
|
||||
length: 1
|
||||
x: 12
|
||||
y: 12
|
||||
powerdown:
|
||||
start:1
|
||||
length: 3
|
||||
x: 12
|
||||
y: 12
|
||||
BIN
mods/d2k/maps/blank.oramap
Normal file
BIN
mods/d2k/maps/test.oramap
Normal 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:
|
||||
|
||||
6
mods/d2k/metrics.yaml
Normal file
@@ -0,0 +1,6 @@
|
||||
# General dumping-ground for UI element sizes, etc.
|
||||
|
||||
Metrics:
|
||||
ButtonDepth: 1
|
||||
ButtonFont: Regular
|
||||
CheckboxPressedState: false
|
||||
@@ -1,41 +1,122 @@
|
||||
Metadata:
|
||||
Title: Dune 2000
|
||||
Description: Work in progress d2k port
|
||||
Version: a0001
|
||||
Author: The OpenRA Developers
|
||||
Description: early version of the Dune 2000 mod
|
||||
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
|
||||
~^/Content/d2k/GAMESFX
|
||||
~^/Content/d2k/Music
|
||||
~^/Content/d2k/Tilesets
|
||||
~^/Content/d2k/SHPs
|
||||
./mods/ra/bits
|
||||
./mods/ra/uibits
|
||||
~^/Content/ra
|
||||
|
||||
Packages:
|
||||
mods/d2k/bits/arrakis.mix
|
||||
~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
|
||||
|
||||
Rules:
|
||||
mods/d2k/rules/system.yaml
|
||||
mods/d2k/rules/defaults.yaml
|
||||
mods/d2k/rules/vehicles.yaml
|
||||
mods/d2k/rules/system.yaml
|
||||
mods/d2k/rules/structures.yaml
|
||||
mods/d2k/rules/aircraft.yaml
|
||||
mods/d2k/rules/infantry.yaml
|
||||
mods/d2k/rules/atreides.yaml
|
||||
mods/d2k/rules/harkonnen.yaml
|
||||
mods/d2k/rules/ordos.yaml
|
||||
|
||||
Sequences:
|
||||
mods/d2k/sequences.yaml
|
||||
|
||||
Cursors:
|
||||
mods/d2k/cursors.xml
|
||||
mods/d2k/cursors.yaml
|
||||
|
||||
Chrome:
|
||||
mods/ra/chrome.xml
|
||||
mods/d2k/chrome.yaml
|
||||
|
||||
Assemblies:
|
||||
mods/d2k/OpenRA.Mods.D2k.dll
|
||||
mods/ra/OpenRA.Mods.RA.dll
|
||||
mods/cnc/OpenRA.Mods.Cnc.dll
|
||||
|
||||
ChromeLayout:
|
||||
mods/d2k/chrome/gameinit.yaml
|
||||
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/lobby.yaml
|
||||
mods/d2k/chrome/map-chooser.yaml
|
||||
mods/d2k/chrome/create-server.yaml
|
||||
mods/d2k/chrome/serverbrowser.yaml
|
||||
mods/d2k/chrome/replaybrowser.yaml
|
||||
mods/d2k/chrome/dropdowns.yaml
|
||||
mods/d2k/chrome/modchooser.yaml
|
||||
mods/d2k/chrome/cheats.yaml
|
||||
|
||||
Weapons:
|
||||
mods/d2k/weapons.yaml
|
||||
|
||||
Voices:
|
||||
mods/d2k/voices.yaml
|
||||
|
||||
TileSets:
|
||||
mods/d2k/tilesets/arrakis.yaml
|
||||
mods/d2k/tilesets/base.yaml
|
||||
|
||||
TileSize: 32
|
||||
|
||||
Music:
|
||||
mods/d2k/music.yaml
|
||||
|
||||
Movies:
|
||||
LoadScreen: NullLoadScreen
|
||||
ShellmapUid:1e36d6874ef7960ac0e21edf36bbe1490a4650eb
|
||||
TileSize:32
|
||||
|
||||
LoadScreen: D2kLoadScreen
|
||||
InstallerMenuWidget: INSTALL_PANEL
|
||||
TestFile: carryall.shp
|
||||
|
||||
ServerTraits:
|
||||
LobbyCommands
|
||||
MasterServerPinger
|
||||
|
||||
ChromeMetrics:
|
||||
mods/d2k/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
|
||||
35
mods/d2k/music.yaml
Normal file
@@ -0,0 +1,35 @@
|
||||
# requires Dune 2000/DATA/Music copied to OpenRA/Content/d2k
|
||||
AMBUSH: The Ambush
|
||||
Extension: AUD
|
||||
ARAKATAK: Attack on Arrakis
|
||||
Extension: AUD
|
||||
ATREGAIN: The Atreides Gain
|
||||
Extension: AUD
|
||||
ENTORDOS: Enter the Ordos
|
||||
Extension: AUD
|
||||
FIGHTPWR: Fight for Power
|
||||
Extension: AUD
|
||||
FREMEN: The Fremen
|
||||
Extension: AUD
|
||||
HARK_BAT: Harkonnen Battle
|
||||
Extension: AUD
|
||||
LANDSAND: Land of Sand
|
||||
Extension: AUD
|
||||
OPTIONS: Options
|
||||
Extension: AUD
|
||||
PLOTTING: Plotting
|
||||
Extension: AUD
|
||||
RISEHARK: Rise of Harkonnen
|
||||
Extension: AUD
|
||||
ROBOTIX: Robotix
|
||||
Extension: AUD
|
||||
SCORE: Score
|
||||
Extension: AUD
|
||||
SOLDAPPR: The Soldiers Approach
|
||||
Extension: AUD
|
||||
SPICESCT: Spice Scouting
|
||||
Extension: AUD
|
||||
UNDERCON: Under Construction
|
||||
Extension: AUD
|
||||
WAITGAME: The Waiting Game
|
||||
Extension: AUD
|
||||
|
Before Width: | Height: | Size: 751 KiB |
|
Before Width: | Height: | Size: 801 KiB |
101
mods/d2k/rules/aircraft.yaml
Normal file
@@ -0,0 +1,101 @@
|
||||
CARRYALL:
|
||||
Inherits: ^Helicopter
|
||||
Buildable:
|
||||
Queue: Plane
|
||||
BuildPaletteOrder: 110
|
||||
Prerequisites: anyhightech
|
||||
BuiltAt: hightecha
|
||||
Owner: atreides,harkonnen,ordos
|
||||
Valued:
|
||||
Cost: 1200
|
||||
Tooltip:
|
||||
Name: Carryall
|
||||
Description: Fast drop ship.\n Unarmed
|
||||
Health:
|
||||
HP: 500
|
||||
Armor:
|
||||
Type: Light
|
||||
RevealsShroud:
|
||||
Range: 12
|
||||
Helicopter:
|
||||
InitialFacing: 0
|
||||
ROT: 5
|
||||
Speed: 15
|
||||
LandableTerrainTypes: Sand, Rock, Spice, Dune
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: hightecha
|
||||
RenderUnit:
|
||||
RenderCargo:
|
||||
WithShadow:
|
||||
Cargo:
|
||||
Types: Vehicle
|
||||
MaxWeight: 1
|
||||
PipCount: 1
|
||||
FallsToEarth:
|
||||
Explosion: UnitExplode
|
||||
|
||||
FRIGATE:
|
||||
ParaDrop:
|
||||
LZRange: 1
|
||||
Inherits: ^Plane
|
||||
Tooltip:
|
||||
Name: Frigate
|
||||
Description: Supply spacecraft
|
||||
Plane:
|
||||
ROT: 5
|
||||
Speed: 35
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: hightecha
|
||||
Health:
|
||||
HP: 25
|
||||
Armor:
|
||||
Type: Heavy
|
||||
RenderUnit:
|
||||
Image: frigate
|
||||
WithShadow:
|
||||
Cargo:
|
||||
MaxWeight: 10
|
||||
PipCount: 10
|
||||
Invulnerable:
|
||||
-Selectable:
|
||||
-GainsExperience:
|
||||
FlyAwayOnIdle:
|
||||
|
||||
ORNI:
|
||||
Inherits: ^Helicopter
|
||||
Buildable:
|
||||
Queue: Plane
|
||||
BuildPaletteOrder: 90
|
||||
Prerequisites: researcha
|
||||
BuiltAt: hightecha
|
||||
Owner: atreides
|
||||
Valued:
|
||||
Cost: 1000
|
||||
Tooltip:
|
||||
Name: Ornithocopter
|
||||
Description: Helicopter Gunship with Chainguns.\n Strong vs Infantry, Light Vehicles.\n Weak vs Tanks
|
||||
Health:
|
||||
HP: 150
|
||||
Armor:
|
||||
Type: Light
|
||||
RevealsShroud:
|
||||
Range: 10
|
||||
AttackHeli:
|
||||
PrimaryWeapon: ChainGun
|
||||
PrimaryOffset: -5,-2,0,2
|
||||
FacingTolerance: 20
|
||||
Helicopter:
|
||||
LandWhenIdle: false
|
||||
InitialFacing: 20
|
||||
ROT: 4
|
||||
Speed: 12
|
||||
RepairBuildings: repaira,repairo,repairh
|
||||
RearmBuildings: hightecha
|
||||
RenderUnit:
|
||||
WithShadow:
|
||||
Selectable:
|
||||
Bounds: 38,32,0,0
|
||||
FallsToEarth:
|
||||
Explosion: UnitExplode
|
||||
SmokeTrailWhenDamaged:
|
||||
Offset: 0,-10
|
||||
139
mods/d2k/rules/atreides.yaml
Normal file
@@ -0,0 +1,139 @@
|
||||
CONYARDA:
|
||||
Inherits: ^CONYARD
|
||||
Buildable:
|
||||
Owner: atreides
|
||||
Transforms:
|
||||
IntoActor: mcva
|
||||
Offset:1,1
|
||||
Facing: 270
|
||||
|
||||
PWRA:
|
||||
Inherits: ^POWER
|
||||
Buildable:
|
||||
Prerequisites: conyarda
|
||||
Owner: atreides
|
||||
|
||||
REFA:
|
||||
Inherits: ^REFINERY
|
||||
Buildable:
|
||||
Prerequisites: pwra
|
||||
Owner: atreides
|
||||
RenderBuildingWarFactory:
|
||||
Image: REFA
|
||||
|
||||
BARRA:
|
||||
Inherits: ^BARRACKS
|
||||
Buildable:
|
||||
Prerequisites: pwra
|
||||
Owner: atreides
|
||||
|
||||
HIGHTECHA:
|
||||
Inherits: ^HIGHTECH
|
||||
Buildable:
|
||||
Prerequisites: radara
|
||||
Owner: atreides
|
||||
|
||||
RESEARCHA:
|
||||
Inherits: ^RESEARCH
|
||||
Buildable:
|
||||
Prerequisites: radara,heavya
|
||||
Owner: atreides
|
||||
|
||||
PALACEA:
|
||||
Inherits: ^PALACE
|
||||
Buildable:
|
||||
Prerequisites: researcha
|
||||
Owner: atreides
|
||||
|
||||
SILOA:
|
||||
Inherits: ^SILO
|
||||
Buildable:
|
||||
Prerequisites: refa
|
||||
Owner: atreides
|
||||
|
||||
LIGHTA:
|
||||
Inherits: ^LIGHT
|
||||
Buildable:
|
||||
Prerequisites: refa
|
||||
Owner: atreides
|
||||
RenderBuildingWarFactory:
|
||||
Image: LIGHTA
|
||||
|
||||
HEAVYA:
|
||||
Inherits: ^HEAVY
|
||||
Buildable:
|
||||
Prerequisites: lighta
|
||||
Owner: atreides
|
||||
RenderBuildingWarFactory:
|
||||
Image: HEAVYA
|
||||
|
||||
RADARA:
|
||||
Inherits: ^RADAR
|
||||
Buildable:
|
||||
Prerequisites: barra
|
||||
Owner: atreides
|
||||
|
||||
STARPORTA:
|
||||
Inherits: ^STARPORT
|
||||
Buildable:
|
||||
Prerequisites: radara
|
||||
Owner: atreides
|
||||
ProductionQueue:
|
||||
QueuedAudio: AI_ORDER.AUD
|
||||
ReadyAudio: AI_REINF.AUD
|
||||
OnHoldAudio: AI_HOLD.AUD
|
||||
CancelledAudio: AI_CANCL.AUD
|
||||
|
||||
REPAIRA:
|
||||
Inherits: ^REPAIR
|
||||
Buildable:
|
||||
Prerequisites: heavya
|
||||
Owner: atreides
|
||||
|
||||
MCVA:
|
||||
Inherits: ^MCV
|
||||
Buildable:
|
||||
Prerequisites: heavya,repaira
|
||||
Owner: atreides
|
||||
Transforms:
|
||||
Facing: 10
|
||||
IntoActor: conyarda
|
||||
Offset:-1,-1
|
||||
TransformSounds:
|
||||
NoTransformSounds: AI_DPLOY.AUD
|
||||
RenderUnit:
|
||||
Image: DMCV
|
||||
|
||||
COMBATA:
|
||||
Inherits: ^COMBAT
|
||||
Buildable:
|
||||
Prerequisites: heavya
|
||||
Owner: atreides
|
||||
|
||||
SONIC:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 15
|
||||
Prerequisites: heavya,researcha
|
||||
Owner: atreides
|
||||
Valued:
|
||||
Cost: 1500
|
||||
Tooltip:
|
||||
Name: Sonic Tank
|
||||
Description: Fires a sound wave\n Strong vs Infantry.\n Weak vs Tanks
|
||||
Selectable:
|
||||
Bounds: 24,24
|
||||
Health:
|
||||
HP: 150
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
Speed: 8
|
||||
RevealsShroud:
|
||||
Range: 7
|
||||
RenderUnit:
|
||||
AttackFrontal:
|
||||
PrimaryWeapon: TTankZap
|
||||
PrimaryOffset: 0,0,0,-5
|
||||
AutoTarget:
|
||||
@@ -1,16 +1,171 @@
|
||||
^Vehicle:
|
||||
AppearsOnRadar:
|
||||
Mobile:
|
||||
Crushes: crate
|
||||
TerrainSpeeds:
|
||||
Clear: 100%
|
||||
Sand: 80
|
||||
Rock: 90
|
||||
Concrete: 100
|
||||
Spice: 70
|
||||
SpiceBlobs: 70
|
||||
Dune: 40
|
||||
ROT: 5
|
||||
SelectionDecorations:
|
||||
Selectable:
|
||||
Targetable:
|
||||
Voice: VehicleVoice
|
||||
TargetableUnit:
|
||||
TargetTypes: Ground
|
||||
Repairable:
|
||||
Passenger:
|
||||
CargoType: Vehicle
|
||||
AttackMove:
|
||||
HiddenUnderFog:
|
||||
GainsExperience:
|
||||
GivesExperience:
|
||||
DrawLineToTarget:
|
||||
DrawLineToTarget:
|
||||
ActorLostNotification:
|
||||
Notification:
|
||||
ProximityCaptor:
|
||||
Types:Vehicle
|
||||
GivesBounty:
|
||||
WithSmoke:
|
||||
Repairable:
|
||||
RepairBuildings: repaira,repairh,repairo
|
||||
|
||||
^Tank:
|
||||
AppearsOnRadar:
|
||||
Mobile:
|
||||
Crushes: crate
|
||||
TerrainSpeeds:
|
||||
Sand: 80
|
||||
Rock: 90
|
||||
Concrete: 100
|
||||
Spice: 70
|
||||
SpiceBlobs: 70
|
||||
Dune: 40
|
||||
ROT: 5
|
||||
SelectionDecorations:
|
||||
Selectable:
|
||||
Voice: VehicleVoice
|
||||
TargetableUnit:
|
||||
TargetTypes: Ground
|
||||
Passenger:
|
||||
CargoType: Vehicle
|
||||
AttackMove:
|
||||
HiddenUnderFog:
|
||||
GainsExperience:
|
||||
GivesExperience:
|
||||
DrawLineToTarget:
|
||||
ActorLostNotification:
|
||||
Notification:
|
||||
ProximityCaptor:
|
||||
Types:Tank
|
||||
GivesBounty:
|
||||
WithSmoke:
|
||||
Repairable:
|
||||
RepairBuildings: repaira,repairh,repairo
|
||||
|
||||
^Infantry:
|
||||
AppearsOnRadar:
|
||||
Health:
|
||||
Radius: 3
|
||||
Armor:
|
||||
Type: None
|
||||
RevealsShroud:
|
||||
Range: 4
|
||||
Mobile:
|
||||
Crushes: crate
|
||||
SharesCell: true
|
||||
TerrainSpeeds:
|
||||
Sand: 80
|
||||
Rock: 90
|
||||
Concrete: 100
|
||||
Spice: 70
|
||||
SpiceBlobs: 70
|
||||
Dune: 40
|
||||
Rough: 60
|
||||
SelectionDecorations:
|
||||
Selectable:
|
||||
Voice: GenericVoice
|
||||
TargetableUnit:
|
||||
TargetTypes: Ground
|
||||
RenderInfantry:
|
||||
AutoTarget:
|
||||
AttackMove:
|
||||
Passenger:
|
||||
CargoType: Infantry
|
||||
HiddenUnderFog:
|
||||
GainsExperience:
|
||||
GivesExperience:
|
||||
DrawLineToTarget:
|
||||
ActorLostNotification:
|
||||
Notification:
|
||||
ProximityCaptor:
|
||||
Types:Infantry
|
||||
GivesBounty:
|
||||
CrushableInfantry:
|
||||
CrushSound:
|
||||
|
||||
^Plane:
|
||||
AppearsOnRadar:
|
||||
UseLocation: yes
|
||||
SelectionDecorations:
|
||||
Selectable:
|
||||
Voice: GenericVoice
|
||||
TargetableAircraft:
|
||||
TargetTypes: Air
|
||||
GroundedTargetTypes: Ground
|
||||
HiddenUnderFog:
|
||||
GainsExperience:
|
||||
GivesExperience:
|
||||
DrawLineToTarget:
|
||||
ActorLostNotification:
|
||||
Notification:
|
||||
DebugAircraftFacing:
|
||||
DebugAircraftSubPxX:
|
||||
DebugAircraftSubPxY:
|
||||
DebugAircraftAltitude:
|
||||
ProximityCaptor:
|
||||
Types:Plane
|
||||
EjectOnDeath:
|
||||
PilotActor: RIFLE
|
||||
SuccessRate: 50
|
||||
GivesBounty:
|
||||
|
||||
^Helicopter:
|
||||
Inherits: ^Plane
|
||||
|
||||
^Building:
|
||||
AppearsOnRadar:
|
||||
SelectionDecorations:
|
||||
Selectable:
|
||||
Priority: 3
|
||||
TargetableBuilding:
|
||||
TargetTypes: Ground
|
||||
Building:
|
||||
Dimensions: 1,1
|
||||
Footprint: x
|
||||
TerrainTypes: Rock, Concrete
|
||||
GivesBuildableArea:
|
||||
Capturable:
|
||||
CapturableBar:
|
||||
SoundOnDamageTransition:
|
||||
DamagedSound:
|
||||
DestroyedSound:
|
||||
RenderBuilding:
|
||||
WithBuildingExplosion:
|
||||
RepairableBuilding:
|
||||
EmitInfantryOnSell:
|
||||
ActorTypes: rifle,rifle,rifle,rifle,rifle,rifle
|
||||
MustBeDestroyed:
|
||||
GivesExperience:
|
||||
# FrozenUnderFog:
|
||||
CaptureNotification:
|
||||
Notification:
|
||||
EditorAppearance:
|
||||
RelativeToTopLeft: yes
|
||||
ShakeOnDeath:
|
||||
ProximityCaptor:
|
||||
Types:Building
|
||||
Sellable:
|
||||
AcceptsSupplies:
|
||||
GivesBounty:
|
||||
146
mods/d2k/rules/harkonnen.yaml
Normal file
@@ -0,0 +1,146 @@
|
||||
CONYARDH:
|
||||
Inherits: ^CONYARD
|
||||
Buildable:
|
||||
Owner: harkonnen
|
||||
Transforms:
|
||||
IntoActor: mcvh
|
||||
Offset:1,1
|
||||
Facing: 270
|
||||
|
||||
PWRH:
|
||||
Inherits: ^POWER
|
||||
Buildable:
|
||||
Prerequisites: conyardh
|
||||
Owner: harkonnen
|
||||
|
||||
REFH:
|
||||
Inherits: ^REFINERY
|
||||
Buildable:
|
||||
Prerequisites: pwrh
|
||||
Owner: harkonnen
|
||||
RenderBuildingWarFactory:
|
||||
Image: REFH
|
||||
|
||||
BARRH:
|
||||
Inherits: ^BARRACKS
|
||||
Buildable:
|
||||
Prerequisites: pwrh
|
||||
Owner: harkonnen
|
||||
|
||||
HIGHTECHH:
|
||||
Inherits: ^HIGHTECH
|
||||
Buildable:
|
||||
Prerequisites: radarh
|
||||
Owner: harkonnen
|
||||
|
||||
RESEARCHH:
|
||||
Inherits: ^RESEARCH
|
||||
Buildable:
|
||||
Prerequisites: radarh,heavyh
|
||||
Owner: harkonnen
|
||||
|
||||
PALACEH:
|
||||
Inherits: ^PALACE
|
||||
Buildable:
|
||||
Prerequisites: researchh
|
||||
Owner: harkonnen
|
||||
|
||||
SILOH:
|
||||
Inherits: ^SILO
|
||||
Buildable:
|
||||
Prerequisites: refh
|
||||
Owner: harkonnen
|
||||
|
||||
LIGHTH:
|
||||
Inherits: ^LIGHT
|
||||
Buildable:
|
||||
Prerequisites: refh
|
||||
Owner: harkonnen
|
||||
RenderBuildingWarFactory:
|
||||
Image: LIGHTH
|
||||
|
||||
HEAVYH:
|
||||
Inherits: ^HEAVY
|
||||
Buildable:
|
||||
Prerequisites: lighth
|
||||
Owner: harkonnen
|
||||
RenderBuildingWarFactory:
|
||||
Image: HEAVYH
|
||||
|
||||
RADARH:
|
||||
Inherits: ^RADAR
|
||||
Buildable:
|
||||
Prerequisites: barrh
|
||||
Owner: harkonnen
|
||||
|
||||
STARPORTH:
|
||||
Inherits: ^STARPORT
|
||||
Buildable:
|
||||
Prerequisites: radarh
|
||||
Owner: harkonnen
|
||||
ProductionQueue:
|
||||
QueuedAudio: HI_ORDER.AUD
|
||||
ReadyAudio: HI_REINF.AUD
|
||||
OnHoldAudio: HI_HOLD.AUD
|
||||
CancelledAudio: HI_CANCL.AUD
|
||||
|
||||
REPAIRH:
|
||||
Inherits: ^REPAIR
|
||||
Buildable:
|
||||
Prerequisites: heavyh
|
||||
Owner: harkonnen
|
||||
|
||||
MCVH:
|
||||
Inherits: ^MCV
|
||||
Buildable:
|
||||
Prerequisites: heavyh,repairh
|
||||
Owner: harkonnen
|
||||
Transforms:
|
||||
Facing: 10
|
||||
IntoActor: conyardh
|
||||
Offset:-1,-1
|
||||
TransformSounds:
|
||||
NoTransformSounds: HI_DPLOY.AUD
|
||||
RenderUnit:
|
||||
Image: DMCV
|
||||
|
||||
COMBATH:
|
||||
Inherits: ^COMBAT
|
||||
Buildable:
|
||||
Prerequisites: heavyh
|
||||
Owner: harkonnen
|
||||
|
||||
DEVAST:
|
||||
Inherits: ^Tank
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 100
|
||||
Prerequisites: repairh,researchh
|
||||
Owner: harkonnen
|
||||
Valued:
|
||||
Cost: 1800
|
||||
Tooltip:
|
||||
Name: Devastator
|
||||
Description: Big and slow tank.\n Strong vs Tanks\n Weak vs Infantry, Aircraft
|
||||
Health:
|
||||
HP: 900
|
||||
Armor:
|
||||
Type: Heavy
|
||||
Mobile:
|
||||
Speed: 3
|
||||
Crushes: crate, infantry
|
||||
RevealsShroud:
|
||||
Range: 6
|
||||
RenderUnit:
|
||||
AttackFrontal:
|
||||
PrimaryWeapon: 120mm
|
||||
PrimaryLocalOffset: -4,-5,0,0,0, 4,-5,0,0,0
|
||||
PrimaryRecoil: 4
|
||||
PrimaryRecoilRecovery: 0.7
|
||||
AutoTarget:
|
||||
Explodes:
|
||||
Weapon: UnitExplodeSmall
|
||||
EmptyWeapon: UnitExplodeSmall
|
||||
LeavesHusk:
|
||||
Selectable:
|
||||
Bounds: 44,38,0,-4
|
||||
22
mods/d2k/rules/infantry.yaml
Normal file
@@ -0,0 +1,22 @@
|
||||
RIFLE:
|
||||
Inherits: ^Infantry
|
||||
Buildable:
|
||||
Queue: Infantry
|
||||
BuildPaletteOrder: 10
|
||||
Owner: atreides,harkonnen,ordos
|
||||
Valued:
|
||||
Cost: 100
|
||||
Tooltip:
|
||||
Name: Rifle Infantry
|
||||
Description: General-purpose infantry.\n Strong vs Infantry\n Weak vs Vehicles
|
||||
Selectable:
|
||||
Bounds: 12,17,0,0
|
||||
Health:
|
||||
HP: 50
|
||||
Mobile:
|
||||
Speed: 4
|
||||
AttackFrontal:
|
||||
PrimaryWeapon: M1Carbine
|
||||
TakeCover:
|
||||
-RenderInfantry:
|
||||
RenderInfantryProne:
|
||||
169
mods/d2k/rules/ordos.yaml
Normal file
@@ -0,0 +1,169 @@
|
||||
CONYARDO:
|
||||
Inherits: ^CONYARD
|
||||
Buildable:
|
||||
Owner: ordos
|
||||
Transforms:
|
||||
IntoActor: mcvo
|
||||
Offset:1,1
|
||||
Facing: 270
|
||||
|
||||
PWRO:
|
||||
Inherits: ^POWER
|
||||
Buildable:
|
||||
Prerequisites: conyardo
|
||||
Owner: ordos
|
||||
|
||||
REFO:
|
||||
Inherits: ^REFINERY
|
||||
Buildable:
|
||||
Prerequisites: pwro
|
||||
Owner: ordos
|
||||
RenderBuildingWarFactory:
|
||||
Image: REFO
|
||||
|
||||
BARRO:
|
||||
Inherits: ^BARRACKS
|
||||
Buildable:
|
||||
Prerequisites: pwro
|
||||
Owner: ordos
|
||||
|
||||
HIGHTECHO:
|
||||
Inherits: ^HIGHTECH
|
||||
Buildable:
|
||||
Prerequisites: radaro
|
||||
Owner: ordos
|
||||
|
||||
RESEARCHO:
|
||||
Inherits: ^RESEARCH
|
||||
Buildable:
|
||||
Prerequisites: radaro,heavyo
|
||||
Owner: ordos
|
||||
|
||||
PALACEO:
|
||||
Inherits: ^PALACE
|
||||
Buildable:
|
||||
Prerequisites: researcho
|
||||
Owner: ordos
|
||||
|
||||
SILOO:
|
||||
Inherits: ^SILO
|
||||
Buildable:
|
||||
Prerequisites: refo
|
||||
Owner: ordos
|
||||
|
||||
LIGHTO:
|
||||
Inherits: ^LIGHT
|
||||
Buildable:
|
||||
Prerequisites: refo
|
||||
Owner: ordos
|
||||
RenderBuildingWarFactory:
|
||||
Image: LIGHTO
|
||||
|
||||
HEAVYO:
|
||||
Inherits: ^HEAVY
|
||||
Buildable:
|
||||
Prerequisites: lighto
|
||||
Owner: ordos
|
||||
RenderBuildingWarFactory:
|
||||
Image: HEAVYO
|
||||
|
||||
RADARO:
|
||||
Inherits: ^RADAR
|
||||
Buildable:
|
||||
Prerequisites: barro
|
||||
Owner: ordos
|
||||
|
||||
STARPORTO:
|
||||
Inherits: ^STARPORT
|
||||
Buildable:
|
||||
Prerequisites: radaro
|
||||
Owner: ordos
|
||||
ProductionQueue:
|
||||
QueuedAudio: OI_ORDER.AUD
|
||||
ReadyAudio: OI_REINF.AUD
|
||||
OnHoldAudio: OI_HOLD.AUD
|
||||
CancelledAudio: OI_CANCL.AUD
|
||||
|
||||
REPAIRO:
|
||||
Inherits: ^REPAIR
|
||||
Buildable:
|
||||
Prerequisites: heavyo
|
||||
Owner: ordos
|
||||
|
||||
MCVO:
|
||||
Inherits: ^MCV
|
||||
Buildable:
|
||||
Prerequisites: heavyo,repairo
|
||||
Owner: ordos
|
||||
Transforms:
|
||||
Facing: 10
|
||||
IntoActor: conyardo
|
||||
Offset:-1,-1
|
||||
TransformSounds:
|
||||
NoTransformSounds: OI_DPLOY.AUD
|
||||
RenderUnit:
|
||||
Image: DMCV
|
||||
|
||||
COMBATO:
|
||||
Inherits: ^COMBAT
|
||||
Buildable:
|
||||
Prerequisites: heavyo
|
||||
Owner: ordos
|
||||
|
||||
RAIDER:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 15
|
||||
Prerequisites: anylight
|
||||
Owner: ordos
|
||||
Valued:
|
||||
Cost: 200
|
||||
Tooltip:
|
||||
Name: Raider
|
||||
Description: Weak Scout.\n Decent vs. Infantry
|
||||
Selectable:
|
||||
Bounds: 24,24
|
||||
Health:
|
||||
HP: 125
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
ROT: 15
|
||||
Speed: 20
|
||||
RevealsShroud:
|
||||
Range: 8
|
||||
RenderUnit:
|
||||
AttackFrontal:
|
||||
PrimaryWeapon: M60mg
|
||||
PrimaryOffset: 0,0,0,-4
|
||||
SecondaryWeapon: M60mg
|
||||
SecondaryOffset: 0,0,0,-4
|
||||
AutoTarget:
|
||||
|
||||
DEVIATOR:
|
||||
Inherits: ^Tank
|
||||
Valued:
|
||||
Cost: 800
|
||||
Tooltip:
|
||||
Name: Deviator
|
||||
Description: Long range artillery.\n Strong vs Infantry, Tanks, Air\n Weak vs Buildings
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 50
|
||||
Prerequisites: anyheavy
|
||||
Owner: ordos
|
||||
Mobile:
|
||||
Speed: 6
|
||||
Health:
|
||||
HP: 150
|
||||
Armor:
|
||||
Type: Light
|
||||
RevealsShroud:
|
||||
Range: 6
|
||||
RenderUnit:
|
||||
AttackFrontal:
|
||||
PrimaryWeapon: MammothTusk
|
||||
PrimaryLocalOffset: -7,2,0,0,25, 7,2,0,0,-25
|
||||
PrimaryRecoil: 1
|
||||
AutoTarget:
|
||||
458
mods/d2k/rules/structures.yaml
Normal file
@@ -0,0 +1,458 @@
|
||||
^CONYARD:
|
||||
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
|
||||
Valued:
|
||||
Cost: 2500
|
||||
Tooltip:
|
||||
Name: Construction Yard
|
||||
CustomSellValue:
|
||||
Value: 2500
|
||||
BaseBuilding:
|
||||
ProductionBar:
|
||||
|
||||
^POWER:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 0
|
||||
Hotkey: w
|
||||
Valued:
|
||||
Cost: 300
|
||||
Tooltip:
|
||||
Name: Windtrap
|
||||
Description: Provides power for other structures
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: anypower
|
||||
Building:
|
||||
Power: 100
|
||||
Footprint: xx xx xx
|
||||
Dimensions: 2,3
|
||||
Health:
|
||||
HP: 400
|
||||
Armor:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 4
|
||||
Bib:
|
||||
|
||||
^BARRACKS:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 30
|
||||
Prerequisites: anypower
|
||||
Hotkey: b
|
||||
Valued:
|
||||
Cost: 400
|
||||
Tooltip:
|
||||
Name: Barracks
|
||||
Description: Trains infantry
|
||||
Building:
|
||||
Power: -20
|
||||
Footprint: xx xx xx
|
||||
Dimensions: 2,3
|
||||
Health:
|
||||
HP: 800
|
||||
Armor:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 5
|
||||
Bib:
|
||||
RallyPoint:
|
||||
Exit@1:
|
||||
SpawnOffset: -1,19
|
||||
ExitCell: 0,2
|
||||
Exit@2:
|
||||
SpawnOffset: -17,15
|
||||
ExitCell: 0,2
|
||||
Production:
|
||||
Produces: Infantry
|
||||
PrimaryBuilding:
|
||||
ProductionBar:
|
||||
|
||||
^HIGHTECH:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 50
|
||||
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:
|
||||
RallyPoint:
|
||||
Exit@1:
|
||||
SpawnOffset: 5,0
|
||||
ExitCell: 1,1
|
||||
Production:
|
||||
Produces: Plane
|
||||
PrimaryBuilding:
|
||||
ProductionBar:
|
||||
|
||||
^RESEARCH:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 50
|
||||
Valued:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
Name: IX Research Center
|
||||
Description: Provides advanced units
|
||||
Building:
|
||||
Power: -30
|
||||
Footprint: _x_ xxx xxx
|
||||
Dimensions: 3,3
|
||||
Health:
|
||||
HP: 1000
|
||||
Armor:
|
||||
Type: Light
|
||||
RevealsShroud:
|
||||
Range: 4
|
||||
Bib:
|
||||
|
||||
^PALACE:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 50
|
||||
Valued:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
Name: Palace
|
||||
Description: Provides advanced technology
|
||||
Building:
|
||||
Power: -30
|
||||
Footprint: xxx xxx xxx
|
||||
Dimensions: 3,3
|
||||
Health:
|
||||
HP: 2000
|
||||
Armor:
|
||||
Type: Light
|
||||
RevealsShroud:
|
||||
Range: 4
|
||||
Bib:
|
||||
|
||||
|
||||
^REFINERY:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 10
|
||||
Prerequisites: anypower
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: anyref
|
||||
Valued:
|
||||
Cost: 1400
|
||||
Tooltip:
|
||||
Name: Spice Refinery
|
||||
Description: Harvesters unload spice here.
|
||||
Building:
|
||||
Power: -30
|
||||
Footprint: xxx xxx x==
|
||||
Dimensions: 3,3
|
||||
Health:
|
||||
HP: 900
|
||||
Armor:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 6
|
||||
Bib:
|
||||
-RenderBuilding:
|
||||
OreRefinery:
|
||||
StoresOre:
|
||||
PipCount: 17
|
||||
Capacity: 2000
|
||||
CustomSellValue:
|
||||
Value: 600
|
||||
FreeActor:
|
||||
Actor: HARVESTER
|
||||
InitialActivity: FindResources
|
||||
SpawnOffset: 1,2
|
||||
Facing: 64
|
||||
|
||||
^SILO:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 40
|
||||
Valued:
|
||||
Cost: 150
|
||||
Tooltip:
|
||||
Name: Silo
|
||||
Description: Stores excess harvested Spice
|
||||
Building:
|
||||
Power: -10
|
||||
-GivesBuildableArea:
|
||||
Health:
|
||||
HP: 300
|
||||
Armor:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 4
|
||||
-RenderBuilding:
|
||||
RenderBuildingSilo:
|
||||
StoresOre:
|
||||
PipCount: 5
|
||||
Capacity: 1500
|
||||
-EmitInfantryOnSell:
|
||||
|
||||
^LIGHT:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 50
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: anylight
|
||||
Valued:
|
||||
Cost: 1000
|
||||
Tooltip:
|
||||
Name: Light Factory
|
||||
Description: produces light vehicles.
|
||||
Building:
|
||||
Power: -30
|
||||
Footprint: xxx xxx
|
||||
Dimensions: 3,2
|
||||
Health:
|
||||
HP: 750
|
||||
Armor:
|
||||
Type: Light
|
||||
RevealsShroud:
|
||||
Range: 4
|
||||
Bib:
|
||||
-RenderBuilding:
|
||||
RallyPoint:
|
||||
Exit@1:
|
||||
SpawnOffset: 10,0
|
||||
ExitCell: 1,3
|
||||
Production:
|
||||
Produces: Vehicle
|
||||
PrimaryBuilding:
|
||||
ProductionBar:
|
||||
|
||||
^HEAVY:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 50
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: anyheavy
|
||||
Valued:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
Name: Heavy Factory
|
||||
Description: produces tanks
|
||||
Building:
|
||||
Power: -30
|
||||
Footprint: _x_ xxx xxx
|
||||
Dimensions: 3,3
|
||||
Health:
|
||||
HP: 1500
|
||||
Armor:
|
||||
Type: Light
|
||||
RevealsShroud:
|
||||
Range: 4
|
||||
Bib:
|
||||
-RenderBuilding:
|
||||
RallyPoint:
|
||||
Exit@1:
|
||||
SpawnOffset: 10,0
|
||||
ExitCell: 1,3
|
||||
Production:
|
||||
Produces: Vehicle
|
||||
PrimaryBuilding:
|
||||
ProductionBar:
|
||||
|
||||
^RADAR:
|
||||
RequiresPower:
|
||||
CanPowerDown:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 60
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: anyradar
|
||||
Valued:
|
||||
Cost: 1400
|
||||
Tooltip:
|
||||
Name: Outpost
|
||||
Description: Provides a radar map of the battlefield.\n Requires power to operate.
|
||||
Building:
|
||||
Power: -40
|
||||
Footprint: xxx xxx xxx
|
||||
Dimensions: 3,3
|
||||
Health:
|
||||
HP: 1000
|
||||
Armor:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 10
|
||||
Bib:
|
||||
ProvidesRadar:
|
||||
|
||||
^STARPORT:
|
||||
Inherits: ^Building
|
||||
Valued:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
Name: Starport
|
||||
Description: Provides a dropzone for vehicle reinforcements
|
||||
ProvidesCustomPrerequisite:
|
||||
Prerequisite: anystarport
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 60
|
||||
Building:
|
||||
Power: -30
|
||||
Footprint: xxx xxx xxx
|
||||
Dimensions: 3,3
|
||||
Health:
|
||||
HP: 1000
|
||||
RevealsShroud:
|
||||
Range: 7
|
||||
Bib:
|
||||
RallyPoint:
|
||||
RallyPoint: 4,2
|
||||
BelowUnits:
|
||||
Exit@1:
|
||||
SpawnOffset: -24,0
|
||||
ExitCell: 3,1
|
||||
ProductionAirdrop:
|
||||
Produces: Vehicle
|
||||
ReadyAudio: AI_REINF.AUD
|
||||
ActorType: frigate
|
||||
ProductionQueue:
|
||||
Type: Vehicle
|
||||
Group: Vehicle
|
||||
BuildSpeed: .4
|
||||
LowPowerSlowdown: 3
|
||||
ProductionBar:
|
||||
|
||||
WALL:
|
||||
Buildable:
|
||||
Queue: Defense
|
||||
BuildPaletteOrder: 1000
|
||||
Owner: atreides,harkonnen,ordos
|
||||
SoundOnDamageTransition:
|
||||
DamagedSound:
|
||||
DestroyedSound:
|
||||
Valued:
|
||||
Cost: 100
|
||||
CustomSellValue:
|
||||
Value: 0
|
||||
Tooltip:
|
||||
Name: Concrete Wall
|
||||
Description: Stop units and blocks enemy fire.
|
||||
AppearsOnRadar:
|
||||
Building:
|
||||
Dimensions: 1,1
|
||||
Footprint: x
|
||||
BuildSounds:
|
||||
Adjacent: 7
|
||||
TerrainTypes: Clear,Road
|
||||
Health:
|
||||
HP: 500
|
||||
Armor:
|
||||
Type: Concrete
|
||||
Wall:
|
||||
CrushClasses: heavywall
|
||||
LineBuild:
|
||||
Range: 8
|
||||
SelectionDecorations:
|
||||
Selectable:
|
||||
Priority: 1
|
||||
TargetableBuilding:
|
||||
TargetTypes: Ground
|
||||
RenderBuildingWall:
|
||||
HasMakeAnimation: false
|
||||
Palette: d2k
|
||||
GivesExperience:
|
||||
EditorAppearance:
|
||||
RelativeToTopLeft: yes
|
||||
AutoTargetIgnore:
|
||||
ProximityCaptor:
|
||||
Types:Wall
|
||||
Sellable:
|
||||
|
||||
GUNTOWER:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Defense
|
||||
BuildPaletteOrder: 40
|
||||
Owner: atreides,harkonnen,ordos
|
||||
Valued:
|
||||
Cost: 600
|
||||
Tooltip:
|
||||
Name: Turret
|
||||
Description: Anti-Armor base defense.\n Strong vs Tanks\n Weak vs Infantry, Aircraft
|
||||
Icon: turreticon
|
||||
Building:
|
||||
Power: -40
|
||||
-GivesBuildableArea:
|
||||
Health:
|
||||
HP: 400
|
||||
Armor:
|
||||
Type: Heavy
|
||||
RevealsShroud:
|
||||
Range: 7
|
||||
RenderRangeCircle:
|
||||
-RenderBuilding:
|
||||
RenderBuildingTurreted:
|
||||
Palette: d2k
|
||||
Turreted:
|
||||
ROT: 12
|
||||
InitialFacing: 50
|
||||
AttackTurreted:
|
||||
PrimaryWeapon: TurretGun
|
||||
AutoTarget:
|
||||
|
||||
^REPAIR:
|
||||
Inherits: ^Building
|
||||
Buildable:
|
||||
Queue: Building
|
||||
BuildPaletteOrder: 30
|
||||
Valued:
|
||||
Cost: 1000
|
||||
Tooltip:
|
||||
Name: Repair Pad
|
||||
Description: Repairs vehicles and allows\n the construction of additional bases.
|
||||
Building:
|
||||
Power: -30
|
||||
Footprint: xxx xxx xxx
|
||||
Dimensions: 3,3
|
||||
Health:
|
||||
HP: 800
|
||||
Armor:
|
||||
Type: Wood
|
||||
RevealsShroud:
|
||||
Range: 5
|
||||
BelowUnits:
|
||||
Reservable:
|
||||
RepairsUnits:
|
||||
Interval: 10
|
||||
RallyPoint:
|
||||
@@ -1,79 +1,286 @@
|
||||
#TODO: Currently only uses the Atreides voices.
|
||||
Player:
|
||||
TechTree:
|
||||
ClassicProductionQueue@Building:
|
||||
Type: Building
|
||||
BuildSpeed: .4
|
||||
LowPowerSlowdown: 3
|
||||
QueuedAudio: AI_BUILD.AUD
|
||||
OnHoldAudio: AI_HOLD.AUD
|
||||
ReadyAudio: AI_BDRDY.AUD
|
||||
CancelledAudio: AI_CANCL.AUD
|
||||
BlockedAudio: AI_NROOM.AUD
|
||||
ClassicProductionQueue@Defense:
|
||||
Type: Defense
|
||||
BuildSpeed: .4
|
||||
LowPowerSlowdown: 3
|
||||
QueuedAudio: AI_BUILD.AUD
|
||||
OnHoldAudio: AI_HOLD.AUD
|
||||
ReadyAudio: AI_BDRDY.AUD
|
||||
CancelledAudio: AI_CANCL.AUD
|
||||
BlockedAudio: AI_NROOM.AUD
|
||||
ClassicProductionQueue@Vehicle:
|
||||
Type: Vehicle
|
||||
BuildSpeed: .4
|
||||
LowPowerSlowdown: 3
|
||||
ReadyAudio: AI_UNRDY.AUD
|
||||
QueuedAudio:AI_TRAIN.AUD
|
||||
OnHoldAudio: AI_HOLD.AUD
|
||||
CancelledAudio: AI_CANCL.AUD
|
||||
BlockedAudio: AI_NROOM.AUD
|
||||
ClassicProductionQueue@Infantry:
|
||||
Type: Infantry
|
||||
BuildSpeed: .4
|
||||
LowPowerSlowdown: 3
|
||||
ReadyAudio: AI_UNRDY.AUD
|
||||
QueuedAudio:AI_TRAIN.AUD
|
||||
OnHoldAudio: AI_HOLD.AUD
|
||||
CancelledAudio: AI_CANCL.AUD
|
||||
BlockedAudio: AI_NROOM.AUD
|
||||
ClassicProductionQueue@Plane:
|
||||
Type: Plane
|
||||
BuildSpeed: .4
|
||||
LowPowerSlowdown: 3
|
||||
ReadyAudio: AI_UNRDY.AUD
|
||||
QueuedAudio:AI_TRAIN.AUD
|
||||
OnHoldAudio: AI_HOLD.AUD
|
||||
CancelledAudio: AI_CANCL.AUD
|
||||
BlockedAudio: AI_NROOM.AUD
|
||||
PlaceBuilding:
|
||||
SupportPowerManager:
|
||||
ConquestVictoryConditions:
|
||||
WinNotification:AI_MWIN.AUD
|
||||
LoseNotification:AI_MFAIL.AUD
|
||||
PowerManager:
|
||||
AllyRepair:
|
||||
PlayerResources:
|
||||
InitialCash: 5000
|
||||
ActorGroupProxy:
|
||||
DeveloperMode:
|
||||
HackyAI@Omnius:
|
||||
Name:Omnius
|
||||
RallypointTestBuilding: conyarda
|
||||
BuildingFractions:
|
||||
refa: 25.1%
|
||||
refh: 25.1%
|
||||
refo: 25.1%
|
||||
barra: 0.1%
|
||||
barrh: 0.1%
|
||||
barro: 0.1%
|
||||
lighta: 0.1%
|
||||
lighth: 0.1%
|
||||
lighto: 0.1%
|
||||
heavya: 0.1%
|
||||
heavyh: 0.1%
|
||||
heavyo: 0.1%
|
||||
researcha: 0.1%
|
||||
researchh: 0.1%
|
||||
researcho: 0.1%
|
||||
repaira: 0.1%
|
||||
repairh: 0.1%
|
||||
repairo: 0.1%
|
||||
radara: 0.1%
|
||||
radaro: 0.1%
|
||||
radarh: 0.1%
|
||||
powra: 35%
|
||||
powrh: 35%
|
||||
powro: 35%
|
||||
UnitsToBuild:
|
||||
trike: 30%
|
||||
raider: 30%
|
||||
quad: 40%
|
||||
siege: 15%
|
||||
combata: 70%
|
||||
combath: 70%
|
||||
combato: 70%
|
||||
sonic: 25%
|
||||
devast: 25%
|
||||
deviator: 25%
|
||||
SquadSize: 10
|
||||
PlayerColorPalette:
|
||||
BasePalette: d2k
|
||||
PaletteFormat: d2k
|
||||
BaseAttackNotifier:
|
||||
Audio: AI_ATACK.AUD
|
||||
|
||||
World:
|
||||
World:
|
||||
OpenWidgetAtGameStart:
|
||||
Widget: INGAME_ROOT
|
||||
ObserverWidget: OBSERVER_ROOT
|
||||
ScreenShaker:
|
||||
ColorPickerPaletteModifier:
|
||||
NukePaletteEffect:
|
||||
BuildingInfluence:
|
||||
UnitInfluence:
|
||||
ChooseBuildTabOnSelect:
|
||||
CrateSpawner:
|
||||
Minimum: 1
|
||||
Maximum: 3
|
||||
SpawnInterval: 120
|
||||
WaterChance: 0
|
||||
PaletteFromCurrentTileset:
|
||||
Name: terrain
|
||||
PlayerColorPalette:
|
||||
BasePalette: units
|
||||
PaletteFormat: d2k
|
||||
PaletteFromFile@units:
|
||||
Name: units
|
||||
Filename: units.pal
|
||||
PaletteFromFile@d2k:
|
||||
Name: d2k
|
||||
Filename: d2k.pal
|
||||
PaletteFromFile@chrome:
|
||||
Name: chrome
|
||||
Filename: temperat.pal
|
||||
Filename: d2k.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@cloak:
|
||||
Name: cloak
|
||||
R: 0
|
||||
G: 0
|
||||
B: 0
|
||||
A: 140
|
||||
PaletteFromRGBA@highlight:
|
||||
Name: highlight
|
||||
R: 255
|
||||
G: 255
|
||||
B: 255
|
||||
A: 128
|
||||
PaletteFromRGBA@invuln:
|
||||
Name: invuln
|
||||
R: 128
|
||||
G: 0
|
||||
B: 0
|
||||
A: 128
|
||||
PaletteFromRGBA@disabled:
|
||||
Name: disabled
|
||||
R: 0
|
||||
G: 0
|
||||
B: 0
|
||||
A: 180
|
||||
ColorPickerPaletteModifier:
|
||||
ShroudPalette@shroud:
|
||||
ShroudPalette@fog:
|
||||
IsFog: yes
|
||||
Name: fog
|
||||
Country@0:
|
||||
Name: Allies
|
||||
Race: allies
|
||||
Country@Atreides:
|
||||
Name: Atreides
|
||||
Race: atreides
|
||||
Country@Harkonnen:
|
||||
Name: Harkonnen
|
||||
Race: harkonnen
|
||||
Country@Ordos:
|
||||
Name: Ordos
|
||||
Race: ordos
|
||||
# BibLayer:
|
||||
ResourceLayer:
|
||||
ResourceType@spice:
|
||||
ResourceType: 1
|
||||
Palette: d2k
|
||||
TerrainType: Spice
|
||||
SpriteNames: spice0
|
||||
ValuePerUnit: 35
|
||||
Name: Spice
|
||||
PipColor: Yellow
|
||||
AllowedTerrainTypes: Sand
|
||||
AllowUnderActors: false
|
||||
SmudgeLayer@CRATER:
|
||||
Type:Crater
|
||||
Types:rockcrater1,rockcrater2,sandcrater1,sandcrater2
|
||||
Depths:15,15,15,15
|
||||
SpawnMapActors:
|
||||
CreateMPPlayers:
|
||||
MPStartLocations:
|
||||
SpawnMPUnits:
|
||||
SpawnMPUnits@atreides:
|
||||
InitialUnit: mcva
|
||||
Faction: atreides
|
||||
SpawnMPUnits@harkonnen:
|
||||
InitialUnit: mcvh
|
||||
Faction: harkonnen
|
||||
SpawnMPUnits@ordos:
|
||||
InitialUnit: mcvo
|
||||
Faction: ordos
|
||||
#TODO: These are just the Atreides sounds.
|
||||
EvaAlerts:
|
||||
RadarUp:
|
||||
RadarDown:
|
||||
BuildingSelectAudio:
|
||||
BuildingReadyAudio:
|
||||
BuildingCannotPlaceAudio:
|
||||
UnitSelectAudio:
|
||||
UnitReadyAudio:
|
||||
OnHoldAudio:
|
||||
CancelledAudio:
|
||||
BuildingCannotPlaceAudio: AI_PLACE.AUD
|
||||
CashTickUp:
|
||||
CashTickDown:
|
||||
LowPower:
|
||||
SilosNeeded:
|
||||
PrimaryBuildingSelected:
|
||||
NewOptions: AI_NEWOP.AUD
|
||||
LowPower: AI_POWER.AUD
|
||||
SilosNeeded: AI_SILOS.AUD
|
||||
PrimaryBuildingSelected: AI_PRMRY.AUD
|
||||
AbilityInsufficientPower:
|
||||
LevelUp:
|
||||
SpatialBins:
|
||||
BinSize: 4
|
||||
Shroud:
|
||||
Shroud:
|
||||
PathFinder:
|
||||
ValidateOrder:
|
||||
CRATE:
|
||||
Tooltip:
|
||||
Name: Crate
|
||||
Crate:
|
||||
Lifetime: 120
|
||||
TerrainTypes: Sand, Dune, Rock
|
||||
GiveCashCrateAction:
|
||||
Amount: 1000
|
||||
SelectionShares: 50
|
||||
UseCashTick: yes
|
||||
LevelUpCrateAction:
|
||||
SelectionShares: 40
|
||||
ExplodeCrateAction@boom:
|
||||
Weapon: CrateExplosion
|
||||
SelectionShares: 5
|
||||
ExplodeCrateAction@nuke:
|
||||
Weapon: CrateNuke
|
||||
SelectionShares: 5
|
||||
HideMapCrateAction:
|
||||
SelectionShares: 5
|
||||
Effect: hide-map
|
||||
RevealMapCrateAction:
|
||||
SelectionShares: 1
|
||||
Effect: reveal-map
|
||||
#TODO: Currently only gives you an Atreides MCV
|
||||
GiveMcvCrateAction:
|
||||
SelectionShares: 2
|
||||
NoBaseSelectionShares: 9001
|
||||
Unit: mcva
|
||||
GiveUnitCrateAction@trike:
|
||||
SelectionShares: 7
|
||||
Unit: trike
|
||||
GiveUnitCrateAction@quad:
|
||||
SelectionShares: 6
|
||||
Unit: quad
|
||||
RenderSimple:
|
||||
BelowUnits:
|
||||
ProximityCaptor:
|
||||
Types:Crate
|
||||
Passenger:
|
||||
|
||||
mpspawn:
|
||||
Waypoint:
|
||||
RenderEditorOnly:
|
||||
|
||||
waypoint:
|
||||
Waypoint:
|
||||
RenderEditorOnly:
|
||||
|
||||
SPICEBLOOM:
|
||||
RenderBuilding:
|
||||
Palette: d2k
|
||||
Building:
|
||||
Footprint: x
|
||||
Dimensions: 1,1
|
||||
AppearsOnRadar:
|
||||
EditorAppearance:
|
||||
RelativeToTopLeft: yes
|
||||
ProximityCaptor:
|
||||
Types:Tree
|
||||
BelowUnits:
|
||||
Tooltip:
|
||||
Name: Spice Bloom
|
||||
SeedsResource:
|
||||
ResourceType: Spice
|
||||
RadarColorFromTerrain:
|
||||
Terrain: Spice
|
||||
@@ -1,10 +1,14 @@
|
||||
MCV:
|
||||
^MCV:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 110
|
||||
Valued:
|
||||
Cost: 2000
|
||||
Tooltip:
|
||||
Name: Mobile Construction Vehicle
|
||||
Description: Deploys into another Construction Yard.\n Unarmed
|
||||
Icon: mcvicon
|
||||
Selectable:
|
||||
Priority: 3
|
||||
Bounds: 42,42
|
||||
@@ -14,8 +18,190 @@ MCV:
|
||||
Type: Light
|
||||
Mobile:
|
||||
Speed: 6
|
||||
Crushes: crate, infantry
|
||||
RevealsShroud:
|
||||
Range: 4
|
||||
RenderUnit:
|
||||
MustBeDestroyed:
|
||||
BaseBuilding:
|
||||
BaseBuilding:
|
||||
-AttackMove:
|
||||
|
||||
HARVESTER:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 10
|
||||
Prerequisites: anyref,anyheavy
|
||||
Owner: atreides,harkonnen,ordos
|
||||
Valued:
|
||||
Cost: 1100
|
||||
Tooltip:
|
||||
Name: Spice Harvester
|
||||
Description: Collects Spice for processing.\n Unarmed
|
||||
Selectable:
|
||||
Priority: 7
|
||||
Bounds: 42,42
|
||||
Harvester:
|
||||
Capacity: 20
|
||||
Resources: Spice
|
||||
UnloadTicksPerBale: 1
|
||||
Health:
|
||||
HP: 600
|
||||
Armor:
|
||||
Type: Heavy
|
||||
Mobile:
|
||||
Speed: 6
|
||||
Crushes: crate, infantry
|
||||
RenderUnit:
|
||||
RevealsShroud:
|
||||
Range: 4
|
||||
-AttackMove:
|
||||
|
||||
TRIKE:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 15
|
||||
Prerequisites: anylight
|
||||
Owner: atreides,harkonnen
|
||||
Valued:
|
||||
Cost: 200
|
||||
Tooltip:
|
||||
Name: Scout Trike
|
||||
Description: Weak Scout.\n Decent vs. Infantry
|
||||
Selectable:
|
||||
Bounds: 24,24
|
||||
Health:
|
||||
HP: 75
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
ROT: 15
|
||||
Speed: 20
|
||||
RevealsShroud:
|
||||
Range: 8
|
||||
RenderUnit:
|
||||
AttackFrontal:
|
||||
PrimaryWeapon: M60mg
|
||||
PrimaryOffset: 0,0,0,-4
|
||||
AutoTarget:
|
||||
|
||||
QUAD:
|
||||
Inherits: ^Vehicle
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 30
|
||||
Prerequisites: anylight
|
||||
Owner: atreides,harkonnen,ordos
|
||||
Valued:
|
||||
Cost: 400
|
||||
Tooltip:
|
||||
Name: Quad
|
||||
Description: Fast scout vehicle, armed with \nrockets.\n Strong vs Vehicles\n Weak vs Infantry
|
||||
Health:
|
||||
HP: 120
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
ROT: 10
|
||||
Speed: 13
|
||||
RevealsShroud:
|
||||
Range: 7
|
||||
RenderUnit:
|
||||
AttackFrontal:
|
||||
PrimaryWeapon: QuadRockets
|
||||
PrimaryOffset: 0,0,0,-2
|
||||
PrimaryLocalOffset: -4,0,0,0,25, 4,0,0,0,-25
|
||||
AutoTarget:
|
||||
|
||||
^COMBAT:
|
||||
Inherits: ^Tank
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 60
|
||||
Valued:
|
||||
Cost: 850
|
||||
Tooltip:
|
||||
Name: Combat Tank
|
||||
Description: Main Battle Tank.\n Strong vs Tanks, Light Vehicles\n Weak vs Infantry, Aircraft
|
||||
Health:
|
||||
HP: 450
|
||||
Armor:
|
||||
Type: Heavy
|
||||
Mobile:
|
||||
Speed: 6
|
||||
Crushes: crate, infantry
|
||||
RevealsShroud:
|
||||
Range: 5
|
||||
Turreted:
|
||||
ROT: 5
|
||||
AttackTurreted:
|
||||
PrimaryWeapon: 90mm
|
||||
PrimaryRecoil: 3
|
||||
PrimaryRecoilRecovery: 0.9
|
||||
RenderUnitTurreted:
|
||||
AutoTarget:
|
||||
Explodes:
|
||||
Weapon: UnitExplodeSmall
|
||||
EmptyWeapon: UnitExplodeSmall
|
||||
Selectable:
|
||||
Bounds: 30,30
|
||||
|
||||
SIEGE:
|
||||
Inherits: ^Tank
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 80
|
||||
Prerequisites: anyradar
|
||||
Owner: atreides,harkonnen,ordos
|
||||
Valued:
|
||||
Cost: 600
|
||||
Tooltip:
|
||||
Name: Siege Tank
|
||||
Description: Long-range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
|
||||
Health:
|
||||
HP: 75
|
||||
Armor:
|
||||
Type: Light
|
||||
Mobile:
|
||||
Speed: 6
|
||||
Crushes: crate, infantry
|
||||
RevealsShroud:
|
||||
Range: 5
|
||||
Turreted:
|
||||
ROT: 5
|
||||
AttackTurreted:
|
||||
PrimaryWeapon: 155mm
|
||||
PrimaryRecoil: 3
|
||||
PrimaryRecoilRecovery: 0.9
|
||||
RenderUnitTurreted:
|
||||
Explodes:
|
||||
Weapon: UnitExplode
|
||||
Chance: 75
|
||||
AutoTarget:
|
||||
|
||||
MISSILE:
|
||||
Inherits: ^Tank
|
||||
Valued:
|
||||
Cost: 800
|
||||
Tooltip:
|
||||
Name: Missile Tank
|
||||
Description: Long range artillery.\n Strong vs Infantry, Buildings\n Weak vs Tanks, Aircraft
|
||||
Buildable:
|
||||
Queue: Vehicle
|
||||
BuildPaletteOrder: 50
|
||||
Prerequisites: anyheavy
|
||||
Owner: atreides,harkonnen,ordos
|
||||
Mobile:
|
||||
Speed: 6
|
||||
Health:
|
||||
HP: 120
|
||||
Armor:
|
||||
Type: Light
|
||||
RevealsShroud:
|
||||
Range: 6
|
||||
RenderUnit:
|
||||
AttackFrontal:
|
||||
PrimaryWeapon: 227mm
|
||||
PrimaryOffset: 0,6,0,-3
|
||||
PrimaryLocalOffset: 3,-5,0,0,0, -3,-5,0,0,0
|
||||
AutoTarget:
|
||||
@@ -1,12 +1,671 @@
|
||||
mcv:
|
||||
dmcv:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
moveflsh:
|
||||
harvester:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
harvest:
|
||||
Start: 0
|
||||
Length: 0
|
||||
Facings: 8
|
||||
dock:
|
||||
Start: 0
|
||||
Length: 1
|
||||
dock-loop:
|
||||
Start: 0
|
||||
Length: 1
|
||||
|
||||
wall:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 16
|
||||
scratched-idle:
|
||||
Start: 0
|
||||
Length: 16
|
||||
damaged-idle:
|
||||
Start: 16
|
||||
Length: 16
|
||||
critical-idle:
|
||||
Start: 16
|
||||
Length: 16
|
||||
|
||||
carryall:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
unload:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
orni:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
trike:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
quad:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
|
||||
|
||||
siege:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
turret: siegeturret
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
missile:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
sonic:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
guntower:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 1
|
||||
recoil:
|
||||
Start: 0
|
||||
Facings: 1
|
||||
make: silomake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
Facings: 1
|
||||
damaged-recoil:
|
||||
Start: 0
|
||||
Facings: 1
|
||||
turret: gunturret
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
frigate:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 1
|
||||
|
||||
rifle:
|
||||
stand:
|
||||
Start: 0
|
||||
Facings: 8
|
||||
stand2:
|
||||
Start: 0
|
||||
Facings: 8
|
||||
stand3:
|
||||
Start: 0
|
||||
Facings: 8
|
||||
run:
|
||||
Start: 8
|
||||
Length: 6
|
||||
Facings: 8
|
||||
shoot:
|
||||
Start: 56
|
||||
Length: 5
|
||||
Facings: 8
|
||||
prone-stand:
|
||||
Start: 104
|
||||
Length: 1
|
||||
Facings: 8
|
||||
prone-run:
|
||||
Start: 112
|
||||
Length: 3
|
||||
Facings: 8
|
||||
standup-0:
|
||||
Start: 96
|
||||
Length: 1
|
||||
Facings: 8
|
||||
prone-shoot:
|
||||
Start: 136
|
||||
Length: 5
|
||||
Facings: 8
|
||||
die1: rifledeath
|
||||
Start: 0
|
||||
Length: 5
|
||||
die2: rifledeath
|
||||
Start: 5
|
||||
Length: 7
|
||||
die3: rifledeath
|
||||
Start: 12
|
||||
Length: 7
|
||||
die4: rifledeath
|
||||
Start: 19
|
||||
Length: 7
|
||||
die5: rifledeath
|
||||
Start: 26
|
||||
Length: 7
|
||||
die-crushed: rifledeath
|
||||
Start: 54
|
||||
Length: 22
|
||||
Tick: 1600
|
||||
|
||||
conyarda:
|
||||
idle:
|
||||
Start: 0
|
||||
make: conmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
repaira:
|
||||
idle:
|
||||
Start: 0
|
||||
make: repairmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
starporta:
|
||||
idle:
|
||||
Start: 0
|
||||
active:
|
||||
Start: 0
|
||||
Length: 1
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
damaged-active:
|
||||
Start: 1
|
||||
make: starportmake
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
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
|
||||
|
||||
radara:
|
||||
idle:
|
||||
Start: 0
|
||||
make: radarmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
refa:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 1
|
||||
make: refmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
build-top:
|
||||
Start: 1
|
||||
Length: 1
|
||||
damaged-build-top:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle-top:
|
||||
Start: 1
|
||||
damaged-idle-top:
|
||||
Start: 2
|
||||
|
||||
siloa:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 4
|
||||
damaged-idle:
|
||||
Start: 4
|
||||
Length: 1
|
||||
make: silomake
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
hightecha:
|
||||
idle:
|
||||
Start: 0
|
||||
make: highmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
researcha:
|
||||
idle:
|
||||
Start: 0
|
||||
make: researchmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
palacea:
|
||||
idle:
|
||||
Start: 0
|
||||
make: palacemake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
|
||||
lighta:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 1
|
||||
make: lightmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
build-top:
|
||||
Start: 1
|
||||
Length: 1
|
||||
damaged-build-top:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle-top:
|
||||
Start: 1
|
||||
damaged-idle-top:
|
||||
Start: 2
|
||||
|
||||
heavya:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 1
|
||||
make: heavymake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
build-top:
|
||||
Start: 1
|
||||
Length: 1
|
||||
damaged-build-top:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle-top:
|
||||
Start: 1
|
||||
damaged-idle-top:
|
||||
Start: 2
|
||||
|
||||
combata:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
turret: combataturret
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
conyardh:
|
||||
idle:
|
||||
Start: 0
|
||||
make: conmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
repairh:
|
||||
idle:
|
||||
Start: 0
|
||||
make: repairmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
starporth:
|
||||
idle:
|
||||
Start: 0
|
||||
active:
|
||||
Start: 0
|
||||
Length: 1
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
damaged-active:
|
||||
Start: 1
|
||||
make: starportmake
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
pwrh:
|
||||
idle:
|
||||
Start: 0
|
||||
make: wtrpmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
barrh:
|
||||
idle:
|
||||
Start: 0
|
||||
make: barramake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
radarh:
|
||||
idle:
|
||||
Start: 0
|
||||
make: radarmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
refh:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 1
|
||||
make: refmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
build-top:
|
||||
Start: 1
|
||||
Length: 1
|
||||
damaged-build-top:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle-top:
|
||||
Start: 1
|
||||
damaged-idle-top:
|
||||
Start: 2
|
||||
|
||||
siloh:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 4
|
||||
damaged-idle:
|
||||
Start: 4
|
||||
Length: 1
|
||||
make: silomake
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
hightechh:
|
||||
idle:
|
||||
Start: 0
|
||||
make: highmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
researchh:
|
||||
idle:
|
||||
Start: 0
|
||||
make: researchmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
palaceh:
|
||||
idle:
|
||||
Start: 0
|
||||
make: palacemake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
|
||||
lighth:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 1
|
||||
make: lightmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
build-top:
|
||||
Start: 1
|
||||
Length: 1
|
||||
damaged-build-top:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle-top:
|
||||
Start: 1
|
||||
damaged-idle-top:
|
||||
Start: 2
|
||||
|
||||
heavyh:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 1
|
||||
make: heavymake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
build-top:
|
||||
Start: 1
|
||||
Length: 1
|
||||
damaged-build-top:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle-top:
|
||||
Start: 1
|
||||
damaged-idle-top:
|
||||
Start: 2
|
||||
|
||||
combath:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
turret: combathturret
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
devast:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
conyardo:
|
||||
idle:
|
||||
Start: 0
|
||||
make: conmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
repairo:
|
||||
idle:
|
||||
Start: 0
|
||||
make: repairmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
starporto:
|
||||
idle:
|
||||
Start: 0
|
||||
active:
|
||||
Start: 0
|
||||
Length: 1
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
damaged-active:
|
||||
Start: 1
|
||||
make: starportmake
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
pwro:
|
||||
idle:
|
||||
Start: 0
|
||||
make: wtrpmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
barro:
|
||||
idle:
|
||||
Start: 0
|
||||
make: barramake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
radaro:
|
||||
idle:
|
||||
Start: 0
|
||||
make: radarmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
refo:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 1
|
||||
make: refmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
build-top:
|
||||
Start: 1
|
||||
Length: 1
|
||||
damaged-build-top:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle-top:
|
||||
Start: 1
|
||||
damaged-idle-top:
|
||||
Start: 2
|
||||
|
||||
siloo:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 4
|
||||
damaged-idle:
|
||||
Start: 4
|
||||
Length: 1
|
||||
make: silomake
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
hightecho:
|
||||
idle:
|
||||
Start: 0
|
||||
make: highmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
researcho:
|
||||
idle:
|
||||
Start: 0
|
||||
make: researchmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
palaceo:
|
||||
idle:
|
||||
Start: 0
|
||||
make: palacemake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 1
|
||||
|
||||
|
||||
lighto:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 1
|
||||
make: lightmake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
build-top:
|
||||
Start: 1
|
||||
Length: 1
|
||||
damaged-build-top:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle-top:
|
||||
Start: 1
|
||||
damaged-idle-top:
|
||||
Start: 2
|
||||
|
||||
heavyo:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: 1
|
||||
make: heavymake
|
||||
Start: 0
|
||||
Length: *
|
||||
damaged-idle:
|
||||
Start: 0
|
||||
build-top:
|
||||
Start: 1
|
||||
Length: 1
|
||||
damaged-build-top:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle-top:
|
||||
Start: 1
|
||||
damaged-idle-top:
|
||||
Start: 2
|
||||
|
||||
combato:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
turret: combatoturret
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
raider:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
deviator:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
pips:
|
||||
groups:
|
||||
@@ -18,27 +677,218 @@ pips:
|
||||
Start: 3
|
||||
hold:
|
||||
Start: 4
|
||||
pip-empty:
|
||||
Start: 0
|
||||
pip-green:
|
||||
Start: 1
|
||||
pip-yellow:
|
||||
Start: 5
|
||||
pip-gray:
|
||||
Start: 6
|
||||
pip-red:
|
||||
Start: 7
|
||||
tag-fake:
|
||||
Start: 18
|
||||
tag-primary:
|
||||
Start: 2
|
||||
pip-empty: pips2
|
||||
Start: 0
|
||||
pip-green: pips2
|
||||
Start: 1
|
||||
pip-yellow: pips2
|
||||
Start: 2
|
||||
pip-gray: pips2
|
||||
Start: 3
|
||||
pip-red: pips2
|
||||
Start: 4
|
||||
pip-blue: pips2
|
||||
Start: 5
|
||||
|
||||
clock:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
powerdown:
|
||||
disabled: speed
|
||||
Start: 3
|
||||
|
||||
poweroff:
|
||||
offline:
|
||||
Start: 0
|
||||
Length: *
|
||||
Tick: 160
|
||||
|
||||
rank:
|
||||
rank:
|
||||
Start: 0
|
||||
Length: *
|
||||
Length: *
|
||||
|
||||
overlay:
|
||||
build-valid:
|
||||
Start: 0
|
||||
build-invalid:
|
||||
Start: 1
|
||||
target-select:
|
||||
Start: 2
|
||||
target-valid:
|
||||
Start: 0
|
||||
target-invalid:
|
||||
Start: 1
|
||||
|
||||
rallypoint:
|
||||
flag:flagfly
|
||||
Start: 0
|
||||
Length: *
|
||||
circles:fpls
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
dragon:
|
||||
idle:
|
||||
Start: 0
|
||||
Facings: 32
|
||||
|
||||
explosion:
|
||||
piff: piff
|
||||
Start: 0
|
||||
Length: *
|
||||
piffs: piffpiff
|
||||
Start: 0
|
||||
Length: *
|
||||
small_explosion: veh-hit3
|
||||
Start: 0
|
||||
Length: *
|
||||
med_explosion: veh-hit2
|
||||
Start: 0
|
||||
Length: *
|
||||
large_splash: h2o_exp1
|
||||
Start: 0
|
||||
Length: *
|
||||
napalm: napalm2
|
||||
Start: 0
|
||||
Length: *
|
||||
nuke: atomsfx
|
||||
Start: 0
|
||||
Length: *
|
||||
med_splash: h2o_exp2
|
||||
Start: 0
|
||||
Length: *
|
||||
self_destruct: art-exp1
|
||||
Start: 0
|
||||
Length: *
|
||||
building: fball1
|
||||
Start: 0
|
||||
Length: *
|
||||
small_splash: h2o_exp3
|
||||
Start: 0
|
||||
Length: *
|
||||
large_explosion: frag1
|
||||
Start: 0
|
||||
Length: *
|
||||
small_napalm: napalm1
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
smokey:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: *
|
||||
|
||||
smoke_m:
|
||||
idle:
|
||||
Start: 0
|
||||
Length: *
|
||||
loop:
|
||||
Start: 49
|
||||
Length: 42
|
||||
end:
|
||||
Start: 0
|
||||
Length: 26
|
||||
|
||||
120mm:
|
||||
idle:
|
||||
Start: 0
|
||||
|
||||
litning:
|
||||
bright:
|
||||
Start: 0
|
||||
Length: 4
|
||||
dim:
|
||||
Start: 4
|
||||
Length: 4
|
||||
|
||||
crate:
|
||||
idle: crates
|
||||
Start: 0
|
||||
land: crates
|
||||
Start: 0
|
||||
|
||||
crate-effects:
|
||||
speed: speed
|
||||
Start: 0
|
||||
Length: *
|
||||
dollar: dollar
|
||||
Start: 0
|
||||
Length: *
|
||||
reveal-map: earth
|
||||
Start: 0
|
||||
Length: *
|
||||
hide-map: empulse
|
||||
Start: 0
|
||||
Length: *
|
||||
fpower: fpower
|
||||
Start: 0
|
||||
Length: *
|
||||
gps: gpsbox
|
||||
Start: 0
|
||||
Length: *
|
||||
invuln: invulbox
|
||||
Start: 0
|
||||
Length: *
|
||||
heal: invun
|
||||
Start: 0
|
||||
Length: *
|
||||
nuke: missile2
|
||||
Start: 0
|
||||
Length: *
|
||||
parabombs: parabox
|
||||
Start: 0
|
||||
Length: *
|
||||
sonar: sonarbox
|
||||
Start: 0
|
||||
Length: *
|
||||
stealth: stealth2
|
||||
Start: 0
|
||||
Length: *
|
||||
timequake: tquake
|
||||
Start: 0
|
||||
Length: *
|
||||
armor: armor
|
||||
Start: 0
|
||||
Length: *
|
||||
chrono: chronbox
|
||||
Start: 0
|
||||
Length: *
|
||||
airstrike: deviator
|
||||
Start: 0
|
||||
Length: *
|
||||
levelup: levelup
|
||||
Start: 0
|
||||
Length: *
|
||||
Tick: 200
|
||||
|
||||
allyrepair:
|
||||
repair:
|
||||
Start: 0
|
||||
Length: *
|
||||
Tick: 160
|
||||
|
||||
parach:
|
||||
open:
|
||||
Start: 0
|
||||
Length: 5
|
||||
idle:
|
||||
Start: 5
|
||||
Length: 11
|
||||
|
||||
|
||||
spicebloom:
|
||||
make:
|
||||
Start: 0
|
||||
Length: 3
|
||||
active:
|
||||
Start: 2
|
||||
Length: 1
|
||||
idle:
|
||||
Start: 2
|
||||
1930
mods/d2k/tilesets/BASE.tsx
Normal file
1907
mods/d2k/tilesets/BAT.tsx
Normal file
225
mods/d2k/tilesets/BGBS.tsx
Normal file
@@ -0,0 +1,225 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<tileset>
|
||||
<name value="Temperat" />
|
||||
<template>
|
||||
<cell x="0" y="0" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="12" y="0" />
|
||||
<cell x="13" y="0" />
|
||||
<cell x="13" y="1" />
|
||||
<cell x="12" y="1" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="14" y="1" />
|
||||
<cell x="15" y="1" />
|
||||
<cell x="15" y="0" />
|
||||
<cell x="14" y="0" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="13" y="2" />
|
||||
<cell x="13" y="3" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="12" y="3" />
|
||||
<cell x="11" y="3" />
|
||||
<cell x="10" y="3" />
|
||||
<cell x="9" y="3" />
|
||||
<cell x="8" y="3" />
|
||||
<cell x="8" y="2" />
|
||||
<cell x="9" y="2" />
|
||||
<cell x="10" y="2" />
|
||||
<cell x="11" y="2" />
|
||||
<cell x="12" y="2" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="14" y="2" />
|
||||
<cell x="14" y="3" />
|
||||
<cell x="15" y="3" />
|
||||
<cell x="15" y="2" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="16" y="2" />
|
||||
<cell x="17" y="2" />
|
||||
<cell x="17" y="3" />
|
||||
<cell x="16" y="3" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="18" y="3" />
|
||||
<cell x="19" y="3" />
|
||||
<cell x="19" y="2" />
|
||||
<cell x="18" y="2" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="18" y="1" />
|
||||
<cell x="18" y="0" />
|
||||
<cell x="19" y="0" />
|
||||
<cell x="19" y="1" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="17" y="1" />
|
||||
<cell x="16" y="1" />
|
||||
<cell x="16" y="0" />
|
||||
<cell x="17" y="0" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="18" y="4" />
|
||||
<cell x="18" y="5" />
|
||||
<cell x="19" y="5" />
|
||||
<cell x="19" y="4" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="18" y="6" />
|
||||
<cell x="18" y="7" />
|
||||
<cell x="19" y="7" />
|
||||
<cell x="19" y="6" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="16" y="5" />
|
||||
<cell x="15" y="5" />
|
||||
<cell x="15" y="4" />
|
||||
<cell x="16" y="4" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="14" y="4" />
|
||||
<cell x="13" y="4" />
|
||||
<cell x="13" y="5" />
|
||||
<cell x="14" y="5" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="12" y="5" />
|
||||
<cell x="11" y="5" />
|
||||
<cell x="11" y="4" />
|
||||
<cell x="12" y="4" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="10" y="4" />
|
||||
<cell x="9" y="4" />
|
||||
<cell x="9" y="5" />
|
||||
<cell x="10" y="5" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="8" y="5" />
|
||||
<cell x="7" y="5" />
|
||||
<cell x="7" y="4" />
|
||||
<cell x="8" y="4" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="6" y="4" />
|
||||
<cell x="5" y="4" />
|
||||
<cell x="5" y="5" />
|
||||
<cell x="6" y="5" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="0" y="6" />
|
||||
<cell x="1" y="6" />
|
||||
<cell x="1" y="7" />
|
||||
<cell x="0" y="7" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="2" y="7" />
|
||||
<cell x="3" y="7" />
|
||||
<cell x="3" y="6" />
|
||||
<cell x="2" y="6" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="4" y="7" />
|
||||
<cell x="5" y="7" />
|
||||
<cell x="5" y="6" />
|
||||
<cell x="4" y="6" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="6" y="7" />
|
||||
<cell x="7" y="7" />
|
||||
<cell x="7" y="6" />
|
||||
<cell x="6" y="6" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="8" y="6" />
|
||||
<cell x="8" y="7" />
|
||||
<cell x="9" y="7" />
|
||||
<cell x="9" y="6" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="10" y="6" />
|
||||
<cell x="10" y="7" />
|
||||
<cell x="11" y="7" />
|
||||
<cell x="11" y="6" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="12" y="6" />
|
||||
<cell x="12" y="7" />
|
||||
<cell x="13" y="7" />
|
||||
<cell x="13" y="6" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="14" y="6" />
|
||||
<cell x="14" y="7" />
|
||||
<cell x="15" y="7" />
|
||||
<cell x="15" y="6" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="16" y="6" />
|
||||
<cell x="16" y="7" />
|
||||
<cell x="17" y="7" />
|
||||
<cell x="17" y="6" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="1" y="8" />
|
||||
<cell x="1" y="9" />
|
||||
<cell x="0" y="9" />
|
||||
<cell x="0" y="8" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="2" y="8" />
|
||||
<cell x="2" y="9" />
|
||||
<cell x="3" y="9" />
|
||||
<cell x="3" y="8" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="4" y="8" />
|
||||
<cell x="4" y="9" />
|
||||
<cell x="5" y="9" />
|
||||
<cell x="5" y="8" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="6" y="8" />
|
||||
<cell x="6" y="9" />
|
||||
<cell x="7" y="9" />
|
||||
<cell x="7" y="8" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="8" y="8" />
|
||||
<cell x="8" y="9" />
|
||||
<cell x="9" y="9" />
|
||||
<cell x="9" y="8" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="10" y="8" />
|
||||
<cell x="10" y="9" />
|
||||
<cell x="11" y="9" />
|
||||
<cell x="11" y="8" />
|
||||
<cell x="12" y="8" />
|
||||
<cell x="12" y="9" />
|
||||
<cell x="13" y="9" />
|
||||
<cell x="13" y="8" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="14" y="8" />
|
||||
<cell x="14" y="9" />
|
||||
<cell x="15" y="9" />
|
||||
<cell x="15" y="8" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="16" y="8" />
|
||||
<cell x="16" y="9" />
|
||||
<cell x="17" y="9" />
|
||||
<cell x="17" y="8" />
|
||||
</template>
|
||||
<template>
|
||||
<cell x="18" y="8" />
|
||||
<cell x="18" y="9" />
|
||||
<cell x="19" y="9" />
|
||||
<cell x="19" y="8" />
|
||||
</template>
|
||||
</tileset>
|
||||
@@ -1,285 +0,0 @@
|
||||
General:
|
||||
Name: Arrakis
|
||||
TileSize: 32
|
||||
Id: ARRAKIS
|
||||
Palette: arrakis.pal
|
||||
Extensions: .arr,.shp
|
||||
|
||||
Terrain:
|
||||
TerrainType@Clear:
|
||||
Type: Clear
|
||||
Buildable: True
|
||||
AcceptSmudge: True
|
||||
IsWater: False
|
||||
Color: 255,255,255,255
|
||||
|
||||
Templates:
|
||||
Template@0:
|
||||
Id: 0
|
||||
Image: t00
|
||||
Size: 1,1
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
Template@1:
|
||||
Id: 1
|
||||
Image: t01
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@2:
|
||||
Id: 2
|
||||
Image: t02
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@3:
|
||||
Id: 3
|
||||
Image: t03
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@4:
|
||||
Id: 4
|
||||
Image: t04
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@5:
|
||||
Id: 5
|
||||
Image: t05
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@6:
|
||||
Id: 6
|
||||
Image: t06
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@7:
|
||||
Id: 7
|
||||
Image: t07
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@8:
|
||||
Id: 8
|
||||
Image: t08
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@9:
|
||||
Id: 9
|
||||
Image: t09
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@10:
|
||||
Id: 10
|
||||
Image: t10
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@11:
|
||||
Id: 11
|
||||
Image: t11
|
||||
Size: 5,3
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
6: Clear
|
||||
1: Clear
|
||||
5: Clear
|
||||
10: Clear
|
||||
11: Clear
|
||||
12: Clear
|
||||
13: Clear
|
||||
14: Clear
|
||||
9: Clear
|
||||
4: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
7: Clear
|
||||
8: Clear
|
||||
Template@12:
|
||||
Id: 12
|
||||
Image: t12
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@13:
|
||||
Id: 13
|
||||
Image: t13
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@14:
|
||||
Id: 14
|
||||
Image: t14
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@15:
|
||||
Id: 15
|
||||
Image: t15
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@16:
|
||||
Id: 16
|
||||
Image: t16
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@17:
|
||||
Id: 17
|
||||
Image: t17
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@18:
|
||||
Id: 18
|
||||
Image: t18
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@19:
|
||||
Id: 19
|
||||
Image: t19
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@20:
|
||||
Id: 20
|
||||
Image: t20
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@21:
|
||||
Id: 21
|
||||
Image: t21
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@22:
|
||||
Id: 22
|
||||
Image: t22
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@23:
|
||||
Id: 23
|
||||
Image: t23
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@24:
|
||||
Id: 24
|
||||
Image: t24
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
Template@25:
|
||||
Id: 25
|
||||
Image: t25
|
||||
Size: 2,2
|
||||
PickAny: False
|
||||
Tiles:
|
||||
0: Clear
|
||||
1: Clear
|
||||
3: Clear
|
||||
2: Clear
|
||||
|
||||
2408
mods/d2k/tilesets/base.yaml
Normal file
BIN
mods/d2k/uibits/buttons.png
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
mods/d2k/uibits/chrome-atreides.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
mods/d2k/uibits/chrome-harkonnen.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
mods/d2k/uibits/chrome-ordos.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
mods/d2k/uibits/dialog.png
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
mods/d2k/uibits/loadscreen.png
Normal file
|
After Width: | Height: | Size: 35 KiB |