sequence editor actually works for editing

This commit is contained in:
Chris Forbes
2009-10-28 22:52:46 +13:00
parent 1c3b48de04
commit 048f48eeb1
4 changed files with 424 additions and 426 deletions

View File

@@ -30,10 +30,10 @@
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(Form1));
this.toolStripContainer1 = new System.Windows.Forms.ToolStripContainer();
this.surface1 = new SequenceEditor.Surface();
this.toolStrip1 = new System.Windows.Forms.ToolStrip();
this.toolStripButton1 = new System.Windows.Forms.ToolStripButton();
this.toolStripButton2 = new System.Windows.Forms.ToolStripButton();
this.surface1 = new SequenceEditor.Surface();
this.toolStripContainer1.ContentPanel.SuspendLayout();
this.toolStripContainer1.TopToolStripPanel.SuspendLayout();
this.toolStripContainer1.SuspendLayout();
@@ -58,15 +58,6 @@
//
this.toolStripContainer1.TopToolStripPanel.Controls.Add(this.toolStrip1);
//
// surface1
//
this.surface1.Dock = System.Windows.Forms.DockStyle.Fill;
this.surface1.Location = new System.Drawing.Point(0, 0);
this.surface1.Name = "surface1";
this.surface1.Size = new System.Drawing.Size(708, 518);
this.surface1.TabIndex = 0;
this.surface1.Text = "surface1";
//
// toolStrip1
//
this.toolStrip1.Dock = System.Windows.Forms.DockStyle.None;
@@ -96,6 +87,16 @@
this.toolStripButton2.Name = "toolStripButton2";
this.toolStripButton2.Size = new System.Drawing.Size(35, 22);
this.toolStripButton2.Text = "Save";
this.toolStripButton2.Click += new System.EventHandler(this.toolStripButton2_Click);
//
// surface1
//
this.surface1.Dock = System.Windows.Forms.DockStyle.Fill;
this.surface1.Location = new System.Drawing.Point(0, 0);
this.surface1.Name = "surface1";
this.surface1.Size = new System.Drawing.Size(708, 518);
this.surface1.TabIndex = 0;
this.surface1.Text = "surface1";
//
// Form1
//

View File

@@ -24,5 +24,10 @@ namespace SequenceEditor
if (shp == null) return;
Program.Shps.Add(shp, Program.LoadAndResolve(shp));
}
void toolStripButton2_Click(object sender, EventArgs e)
{
Program.Save();
}
}
}

View File

@@ -30,6 +30,33 @@ namespace SequenceEditor
}).ToArray();
}
public static void Save()
{
var e = Doc.SelectSingleNode(string.Format("//unit[@name=\"{0}\"]", UnitName)) as XmlElement;
if (e == null)
{
e = Doc.CreateElement("unit");
e.SetAttribute( "name", UnitName );
e = Doc.SelectSingleNode("sequences").AppendChild(e) as XmlElement;
}
while (e.HasChildNodes) e.RemoveChild(e.FirstChild); /* what a fail */
foreach (var s in Sequences)
{
var seqnode = Doc.CreateElement("sequence");
seqnode.SetAttribute("name", s.Key);
seqnode.SetAttribute("start", s.Value.start.ToString());
seqnode.SetAttribute("length", s.Value.length.ToString());
if (s.Value.shp != UnitName)
seqnode.SetAttribute("src", s.Value.shp);
e.AppendChild(seqnode);
}
Doc.Save("sequences.xml");
}
[STAThread]
static void Main( string[] args )
{
@@ -44,7 +71,12 @@ namespace SequenceEditor
Pal = new Palette(FileSystem.Open("temperat.pal"));
UnitName = args.First();
UnitName = args.FirstOrDefault();
if (UnitName == null)
UnitName = GetTextForm.GetString("Unit to edit?", "e1");
if (UnitName == null)
return;
Shps[UnitName] = LoadAndResolve(UnitName);
/* todo: load supplemental SHPs */

View File

@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8" ?>
<?xml version="1.0" encoding="utf-8"?>
<!-- openra/sequences.xml
this file describes animation sequences for structures and units.
@@ -27,312 +26,266 @@
author: C. Forbes
-->
<sequences>
<!-- forward command post (campaign specific building) -->
<unit name="fcom">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="make" start="0"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" />
</unit>
<!-- construction yard -->
<unit name="fact">
<sequence name="idle" start="0"/>
<sequence name="idle" start="0" />
<sequence name="make" start="0" length="32" src="factmake" />
<sequence name="build" start="1" length="25"/>
<sequence name="damaged-idle" start="26"/>
<sequence name="damaged-build" start="27" length="25"/>
<sequence name="build" start="1" length="25" />
<sequence name="damaged-idle" start="26" />
<sequence name="damaged-build" start="27" length="25" />
</unit>
<!-- refinery -->
<unit name="proc">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="procmake" />
</unit>
<!-- silo -->
<unit name="silo">
<sequence name="idle" start="0" length="5"/>
<sequence name="damaged-idle" start="5" length="5"/>
<sequence name="idle" start="0" length="5" />
<sequence name="damaged-idle" start="5" length="5" />
<sequence name="make" start="0" length="*" src="silomake" />
</unit>
<!-- power plant -->
<unit name="powr">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="powrmake" />
</unit>
<!-- advanced power plant -->
<unit name="apwr">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="apwrmake" />
</unit>
<!-- soviet barracks -->
<unit name="barr">
<sequence name="idle" start="0" length="10"/>
<sequence name="damaged-idle" start="10" length="10"/>
<sequence name="idle" start="0" length="10" />
<sequence name="damaged-idle" start="10" length="10" />
<sequence name="make" start="0" length="*" src="barrmake" />
</unit>
<!-- allied barracks -->
<unit name="tent">
<sequence name="idle" start="0" length="10"/>
<sequence name="damaged-idle" start="10" length="10"/>
<sequence name="idle" start="0" length="10" />
<sequence name="damaged-idle" start="10" length="10" />
<sequence name="make" start="0" length="*" src="tentmake" />
</unit>
<!-- kennel -->
<unit name="kenn">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="kennmake" />
</unit>
<!-- radar dome -->
<unit name="dome">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="domemake" />
</unit>
<!-- allied tech center -->
<unit name="atek">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="atekmake" />
</unit>
<!-- soviet tech center -->
<unit name="stek">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="stekmake" />
</unit>
<!-- war factory -->
<unit name="weap">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="weapmake" />
<sequence name="build-top" start="0" length="4" src="weap2" />
<sequence name="build2-top" start="4" length="4" src="weap2" />
<sequence name="idle-top" start="0" length="1" src="weap2" />
<sequence name="damaged-idle_top" start="4" length="1" src="weap2" />
</unit>
<!-- helipad -->
<unit name="hpad">
<sequence name="idle" start="0" length="7"/>
<sequence name="damaged-idle" start="7" length="7"/>
<sequence name="idle" start="0" length="7" />
<sequence name="damaged-idle" start="7" length="7" />
<sequence name="make" start="0" length="*" src="hpadmake" />
</unit>
<!-- airfield -->
<unit name="afld">
<sequence name="idle" start="0" length="8"/>
<sequence name="damaged-idle" start="8" length="8"/>
<sequence name="idle" start="0" length="8" />
<sequence name="damaged-idle" start="8" length="8" />
<sequence name="make" start="0" length="*" src="afldmake" />
</unit>
<!-- sub pen -->
<unit name="spen">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="spenmake" />
</unit>
<!-- shipyard -->
<unit name="syrd">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="syrdmake" />
</unit>
<!-- repair pad -->
<unit name="fix">
<sequence name="idle" start="0" length="7"/>
<sequence name="damaged-idle" start="7" length="7"/>
<sequence name="idle" start="0" length="7" />
<sequence name="damaged-idle" start="7" length="7" />
<sequence name="make" start="0" length="*" src="fixmake" />
</unit>
<!-- allied gun turret -->
<unit name="gun">
<sequence name="idle" start="0" length="32"/>
<sequence name="damaged-idle" start="32" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="damaged-idle" start="32" length="32" />
<sequence name="make" start="0" length="*" src="gunmake" />
</unit>
<!-- AA gun -->
<unit name="agun">
<sequence name="idle" start="0" length="32"/>
<sequence name="damaged-idle" start="32" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="damaged-idle" start="32" length="32" />
<sequence name="make" start="0" length="*" src="agunmake" />
</unit>
<!-- sam site -->
<unit name="sam">
<sequence name="idle" start="0" length="32"/>
<sequence name="damaged-idle" start="34" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="damaged-idle" start="34" length="32" />
<sequence name="make" start="0" length="*" src="sammake" />
</unit>
<!-- flame turret -->
<unit name="ftur">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="fturmake" />
</unit>
<!-- tesla coil -->
<unit name="tsla">
<sequence name="idle" start="0" length="10"/>
<sequence name="damaged-idle" start="10" length="10"/>
<sequence name="idle" start="0" length="10" />
<sequence name="damaged-idle" start="10" length="10" />
<sequence name="make" start="0" length="*" src="tslamake" />
</unit>
<!-- pillbox -->
<unit name="pbox">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="pboxmake" />
</unit>
<!-- camo pillbox -->
<unit name="hbox">
<sequence name="idle" start="0"/>
<sequence name="damaged-idle" start="1"/>
<sequence name="idle" start="0" />
<sequence name="damaged-idle" start="1" />
<sequence name="make" start="0" length="*" src="hboxmake" />
</unit>
<!-- gap generator -->
<unit name="gap">
<sequence name="idle" start="0" length="32"/>
<sequence name="damaged-idle" start="32" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="damaged-idle" start="32" length="32" />
<sequence name="make" start="0" length="*" src="gapmake" />
</unit>
<!-- iron curtain -->
<unit name="iron">
<sequence name="idle" start="0" length="11"/>
<sequence name="damaged-idle" start="11" length="11"/>
<sequence name="idle" start="0" length="11" />
<sequence name="damaged-idle" start="11" length="11" />
<sequence name="make" start="0" length="*" src="ironmake" />
</unit>
<!-- chronosphere -->
<unit name="pdox">
<sequence name="idle" start="0" length="29"/>
<sequence name="damaged-idle" start="29" length="29"/>
<sequence name="idle" start="0" length="29" />
<sequence name="damaged-idle" start="29" length="29" />
<sequence name="make" start="0" length="*" src="pdoxmake" />
</unit>
<!-- nuclear missile silo -->
<unit name="mslo">
<sequence name="idle" start="0" length="8"/>
<sequence name="damaged-idle" start="8" length="8"/>
<sequence name="idle" start="0" length="8" />
<sequence name="damaged-idle" start="8" length="8" />
<sequence name="make" start="0" length="*" src="mslomake" />
</unit>
<!-- mcv -->
<unit name="mcv">
<sequence name="idle" start="0" length="*"/>
<sequence name="idle" start="0" length="*" />
</unit>
<!-- truck -->
<unit name="truk">
<sequence name="idle" start="0" length="*"/>
<sequence name="idle" start="0" length="*" />
</unit>
<!-- harv -->
<unit name="harv">
<sequence name="idle" start="0" length="32"/>
<sequence name="harvest0" start="32" length="8"/>
<sequence name="harvest1" start="40" length="8"/>
<sequence name="harvest2" start="48" length="8"/>
<sequence name="harvest3" start="56" length="8"/>
<sequence name="harvest4" start="64" length="8"/>
<sequence name="harvest5" start="72" length="8"/>
<sequence name="harvest6" start="80" length="8"/>
<sequence name="harvest7" start="88" length="8"/>
<sequence name="empty" start="96" length="15"/>
<sequence name="idle" start="0" length="32" />
<sequence name="harvest0" start="32" length="8" />
<sequence name="harvest1" start="40" length="8" />
<sequence name="harvest2" start="48" length="8" />
<sequence name="harvest3" start="56" length="8" />
<sequence name="harvest4" start="64" length="8" />
<sequence name="harvest5" start="72" length="8" />
<sequence name="harvest6" start="80" length="8" />
<sequence name="harvest7" start="88" length="8" />
<sequence name="empty" start="96" length="15" />
</unit>
<!-- light tank -->
<unit name="1tnk">
<sequence name="idle" start="0" length="32"/>
<sequence name="turret" start="32" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="turret" start="32" length="32" />
</unit>
<!-- medium tank -->
<unit name="2tnk">
<sequence name="idle" start="0" length="32"/>
<sequence name="turret" start="32" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="turret" start="32" length="32" />
</unit>
<!-- heavy tank -->
<unit name="3tnk">
<sequence name="idle" start="0" length="32"/>
<sequence name="turret" start="32" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="turret" start="32" length="32" />
</unit>
<!-- mammoth tank -->
<unit name="4tnk">
<sequence name="idle" start="0" length="32"/>
<sequence name="turret" start="32" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="turret" start="32" length="32" />
</unit>
<!-- v2 rocket launcher -->
<unit name="v2rl">
<sequence name="idle" start="0" length="32"/>
<sequence name="reloading" start="32" length="32"/>
<sequence name="aiming" start="64" length="16"/>
<sequence name="idle" start="0" length="32" />
<sequence name="reloading" start="32" length="32" />
<sequence name="aiming" start="64" length="16" />
</unit>
<!-- artillery -->
<unit name="arty">
<sequence name="idle" start="0" length="32"/>
<sequence name="idle" start="0" length="32" />
</unit>
<!-- jeep -->
<unit name="jeep">
<sequence name="idle" start="0" length="32"/>
<sequence name="turret" start="32" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="turret" start="32" length="32" />
</unit>
<!-- apc -->
<unit name="apc">
<sequence name="idle" start="0" length="32"/>
<sequence name="idle" start="0" length="32" />
</unit>
<!-- mine layer -->
<unit name="mnly">
<sequence name="idle" start="0" length="32"/>
<sequence name="idle" start="0" length="32" />
<!-- and 16 "lay mine" sprites, not used in real-ra -->
</unit>
<!-- radar jammer -->
<unit name="mrj">
<sequence name="idle" start="0" length="32"/>
<sequence name="turret" start="32" length="32"/>
<sequence name="idle" start="0" length="32" />
<sequence name="turret" start="32" length="32" />
</unit>
<!-- mobile gap generator -->
<unit name="mgg">
<sequence name="idle" start="0" length="32"/>
<sequence name="turret" start="32" length="8"/>
<sequence name="idle" start="0" length="32" />
<sequence name="turret" start="32" length="8" />
</unit>
<!-- submarine -->
<unit name="ss">
<sequence name="idle" start="0" length="16" />
</unit>
<!-- rifle infantry -->
<unit name="e1">
<sequence name="stand" start="0" length="8" />
@@ -386,20 +339,18 @@
<sequence name="die4" start="312" length="12" />
<sequence name="die5" start="324" length="18" />
</unit>
<!-- build clock - hacked in -->
<unit name="clock">
<sequence name="idle" start="0" length="*"/>
<sequence name="idle" start="0" length="*" />
</unit>
<cursor src="mouse">
<sequence name="default" start="0" />
<sequence name="scroll" start="1" length="8" />
<sequence name="generic-blocked" start="9" />
<sequence name="move" start="10" length="4" x="12" y="12"/>
<sequence name="move-blocked" start="14" x="12" y="12"/>
<sequence name="select" start="15" length="6" x="12" y="12"/>
<sequence name="attack" start="21" length="8" x="12" y="12"/>
<sequence name="move" start="10" length="4" x="12" y="12" />
<sequence name="move-blocked" start="14" x="12" y="12" />
<sequence name="select" start="15" length="6" x="12" y="12" />
<sequence name="attack" start="21" length="8" x="12" y="12" />
<sequence name="move-minimap" start="29" length="6" />
<sequence name="repair" start="35" length="24" />
<sequence name="deploy" start="59" length="9" />
@@ -431,13 +382,22 @@
<sequence name="repair2-blocked" start="213" length="1" />
<sequence name="ability-minimap" start="214" length="8" />
</cursor>
<unit name="120mm">
<sequence name="idle" start="0" length="1" />
</unit>
<unit name="veh-hit3">
<sequence name="idle" start="0" length="*" />
</unit>
<unit name="e3">
<sequence name="stand" start="0" length="8" />
<sequence name="stand2" start="8" length="8" />
<sequence name="run-0" start="16" length="6" />
<sequence name="run-1" start="22" length="6" />
<sequence name="run-2" start="28" length="6" />
<sequence name="run-3" start="34" length="6" />
<sequence name="run-4" start="40" length="6" />
<sequence name="run-5" start="46" length="6" />
<sequence name="run-6" start="52" length="6" />
<sequence name="run-7" start="58" length="6" />
</unit>
</sequences>