mirror of
https://git.do.srb2.org/STJr/UltimateZoneBuilder.git
synced 2025-02-07 08:21:59 +00:00
UDMF: sidedef flags are now defined in game configuration instead of being hardcoded.
Texture scale controls now have "Link" button. Thing, Sector (UDMF) and Linedef edit forms now work in realtime mode. Some more fixes in Edit form realtime update stuff. Removed some unused variables and functions.
This commit is contained in:
parent
7f3461209a
commit
bafb8ed511
59 changed files with 2695 additions and 1181 deletions
|
@ -97,6 +97,15 @@ linedefactivations
|
||||||
passuse = "Pass use on";
|
passuse = "Pass use on";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sidedefflags
|
||||||
|
{
|
||||||
|
clipmidtex = "Clip middle texture";
|
||||||
|
wrapmidtex = "Wrap middle texture";
|
||||||
|
nofakecontrast = "No fake contrast";
|
||||||
|
nodecals = "No decals";
|
||||||
|
smoothlighting = "Smooth lighting";
|
||||||
|
lightfog = "Use sidedef brightness on fogged walls";
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
MAP LUMP NAMES
|
MAP LUMP NAMES
|
||||||
|
|
|
@ -367,6 +367,12 @@ mapformat_udmf
|
||||||
include("ZDoom_misc.cfg", "linedefflagstranslation");
|
include("ZDoom_misc.cfg", "linedefflagstranslation");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//SIDEDEF FLAGS
|
||||||
|
sidedefflags
|
||||||
|
{
|
||||||
|
include("UDMF_misc.cfg", "sidedefflags");
|
||||||
|
}
|
||||||
|
|
||||||
// THING FLAGS
|
// THING FLAGS
|
||||||
thingflags
|
thingflags
|
||||||
{
|
{
|
||||||
|
|
|
@ -248,12 +248,6 @@ universalfields
|
||||||
|
|
||||||
sidedef
|
sidedef
|
||||||
{
|
{
|
||||||
clipmidtex
|
|
||||||
{
|
|
||||||
type = 3;
|
|
||||||
default = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
comment
|
comment
|
||||||
{
|
{
|
||||||
type = 2;
|
type = 2;
|
||||||
|
@ -272,18 +266,6 @@ universalfields
|
||||||
default = false;
|
default = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodecals
|
|
||||||
{
|
|
||||||
type = 3;
|
|
||||||
default = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
nofakecontrast
|
|
||||||
{
|
|
||||||
type = 3;
|
|
||||||
default = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
offsetx_top
|
offsetx_top
|
||||||
{
|
{
|
||||||
type = 1;
|
type = 1;
|
||||||
|
@ -355,24 +337,6 @@ universalfields
|
||||||
type = 1;
|
type = 1;
|
||||||
default = 1.0f;
|
default = 1.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
smoothlighting
|
|
||||||
{
|
|
||||||
type = 3;
|
|
||||||
default = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
wrapmidtex
|
|
||||||
{
|
|
||||||
type = 3;
|
|
||||||
default = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
lightfog
|
|
||||||
{
|
|
||||||
type = 3;
|
|
||||||
default = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
thing
|
thing
|
||||||
|
|
|
@ -57,7 +57,7 @@ namespace CodeImp.DoomBuilder.Actions
|
||||||
private bool exclusiverequested;
|
private bool exclusiverequested;
|
||||||
|
|
||||||
// Disposing
|
// Disposing
|
||||||
private bool isdisposed = false;
|
private bool isdisposed;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -530,7 +530,6 @@ namespace CodeImp.DoomBuilder.Actions
|
||||||
internal bool KeyReleased(int key)
|
internal bool KeyReleased(int key)
|
||||||
{
|
{
|
||||||
int strippedkey = key & ~((int)Keys.Alt | (int)Keys.Shift | (int)Keys.Control);
|
int strippedkey = key & ~((int)Keys.Alt | (int)Keys.Shift | (int)Keys.Control);
|
||||||
List<Action> keepactions = new List<Action>();
|
|
||||||
|
|
||||||
// Update pressed keys
|
// Update pressed keys
|
||||||
if(pressedkeys.Contains(strippedkey)) pressedkeys.Remove(strippedkey);
|
if(pressedkeys.Contains(strippedkey)) pressedkeys.Remove(strippedkey);
|
||||||
|
|
|
@ -918,8 +918,10 @@
|
||||||
<Content Include="Resources\Light_animate.png" />
|
<Content Include="Resources\Light_animate.png" />
|
||||||
<None Include="Resources\MLogo.png" />
|
<None Include="Resources\MLogo.png" />
|
||||||
<None Include="Resources\Marine.png" />
|
<None Include="Resources\Marine.png" />
|
||||||
|
<None Include="Resources\Link.png" />
|
||||||
<Content Include="Resources\Model.png" />
|
<Content Include="Resources\Model.png" />
|
||||||
<Content Include="Resources\Model_selected.png" />
|
<Content Include="Resources\Model_selected.png" />
|
||||||
|
<None Include="Resources\Unlink.png" />
|
||||||
<None Include="Resources\Unpin.png" />
|
<None Include="Resources\Unpin.png" />
|
||||||
<None Include="Resources\Pin.png" />
|
<None Include="Resources\Pin.png" />
|
||||||
<None Include="Resources\Reset.png" />
|
<None Include="Resources\Reset.png" />
|
||||||
|
|
|
@ -109,6 +109,9 @@ namespace CodeImp.DoomBuilder.Config
|
||||||
private List<LinedefActivateInfo> linedefactivates;
|
private List<LinedefActivateInfo> linedefactivates;
|
||||||
private List<GeneralizedCategory> genactioncategories;
|
private List<GeneralizedCategory> genactioncategories;
|
||||||
private List<FlagTranslation> linedefflagstranslation;
|
private List<FlagTranslation> linedefflagstranslation;
|
||||||
|
|
||||||
|
//mxd. Sidedefs
|
||||||
|
private Dictionary<string, string> sidedefflags; //mxd
|
||||||
|
|
||||||
// Sectors
|
// Sectors
|
||||||
private Dictionary<string, string> sectorflags; //mxd
|
private Dictionary<string, string> sectorflags; //mxd
|
||||||
|
@ -205,8 +208,11 @@ namespace CodeImp.DoomBuilder.Config
|
||||||
public List<GeneralizedCategory> GenActionCategories { get { return genactioncategories; } }
|
public List<GeneralizedCategory> GenActionCategories { get { return genactioncategories; } }
|
||||||
public List<FlagTranslation> LinedefFlagsTranslation { get { return linedefflagstranslation; } }
|
public List<FlagTranslation> LinedefFlagsTranslation { get { return linedefflagstranslation; } }
|
||||||
|
|
||||||
|
//mxd. Sidedefs
|
||||||
|
public IDictionary<string, string> SidedefFlags { get { return sidedefflags; } }
|
||||||
|
|
||||||
// Sectors
|
// Sectors
|
||||||
public IDictionary<string, string> SectorFlags { get { return sectorflags; } }
|
public IDictionary<string, string> SectorFlags { get { return sectorflags; } } //mxd
|
||||||
public IDictionary<int, SectorEffectInfo> SectorEffects { get { return sectoreffects; } }
|
public IDictionary<int, SectorEffectInfo> SectorEffects { get { return sectoreffects; } }
|
||||||
public List<SectorEffectInfo> SortedSectorEffects { get { return sortedsectoreffects; } }
|
public List<SectorEffectInfo> SortedSectorEffects { get { return sortedsectoreffects; } }
|
||||||
public List<GeneralizedOption> GenEffectOptions { get { return geneffectoptions; } }
|
public List<GeneralizedOption> GenEffectOptions { get { return geneffectoptions; } }
|
||||||
|
@ -250,6 +256,7 @@ namespace CodeImp.DoomBuilder.Config
|
||||||
this.actioncategories = new List<LinedefActionCategory>();
|
this.actioncategories = new List<LinedefActionCategory>();
|
||||||
this.sortedlinedefactions = new List<LinedefActionInfo>();
|
this.sortedlinedefactions = new List<LinedefActionInfo>();
|
||||||
this.linedefactivates = new List<LinedefActivateInfo>();
|
this.linedefactivates = new List<LinedefActivateInfo>();
|
||||||
|
this.sidedefflags = new Dictionary<string, string>(); //mxd
|
||||||
this.genactioncategories = new List<GeneralizedCategory>();
|
this.genactioncategories = new List<GeneralizedCategory>();
|
||||||
this.sectorflags = new Dictionary<string, string>(); //mxd
|
this.sectorflags = new Dictionary<string, string>(); //mxd
|
||||||
this.sectoreffects = new Dictionary<int, SectorEffectInfo>();
|
this.sectoreffects = new Dictionary<int, SectorEffectInfo>();
|
||||||
|
@ -346,6 +353,9 @@ namespace CodeImp.DoomBuilder.Config
|
||||||
LoadLinedefActivations();
|
LoadLinedefActivations();
|
||||||
LoadLinedefGeneralizedActions();
|
LoadLinedefGeneralizedActions();
|
||||||
|
|
||||||
|
//mxd. Sidedefs
|
||||||
|
LoadSidedefFlags();
|
||||||
|
|
||||||
// Sectors
|
// Sectors
|
||||||
LoadSectorFlags(); //mxd
|
LoadSectorFlags(); //mxd
|
||||||
LoadBrightnessLevels();
|
LoadBrightnessLevels();
|
||||||
|
@ -617,6 +627,14 @@ namespace CodeImp.DoomBuilder.Config
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mxd. SIdedef flags
|
||||||
|
private void LoadSidedefFlags() {
|
||||||
|
// Get linedef flags
|
||||||
|
IDictionary dic = cfg.ReadSetting("sidedefflags", new Hashtable());
|
||||||
|
foreach(DictionaryEntry de in dic)
|
||||||
|
sidedefflags.Add(de.Key.ToString(), de.Value.ToString());
|
||||||
|
}
|
||||||
|
|
||||||
//mxd. Sector flags
|
//mxd. Sector flags
|
||||||
private void LoadSectorFlags() {
|
private void LoadSectorFlags() {
|
||||||
// Get linedef flags
|
// Get linedef flags
|
||||||
|
|
|
@ -28,13 +28,13 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
{
|
{
|
||||||
public partial class CheckboxArrayControl : UserControl
|
public partial class CheckboxArrayControl : UserControl
|
||||||
{
|
{
|
||||||
// Constants
|
// Events
|
||||||
//private const int SPACING_Y = 1;
|
public event EventHandler OnValueChanged; //mxd
|
||||||
private int spacingY = 1; //mxd
|
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
private List<CheckBox> checkboxes;
|
private List<CheckBox> checkboxes;
|
||||||
private int columns;
|
private int columns;
|
||||||
|
private int spacingY = 1; //mxd
|
||||||
|
|
||||||
// Properties
|
// Properties
|
||||||
public List<CheckBox> Checkboxes { get { return checkboxes; } }
|
public List<CheckBox> Checkboxes { get { return checkboxes; } }
|
||||||
|
@ -61,6 +61,7 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
c.UseVisualStyleBackColor = true;
|
c.UseVisualStyleBackColor = true;
|
||||||
c.Text = text;
|
c.Text = text;
|
||||||
c.Tag = tag;
|
c.Tag = tag;
|
||||||
|
c.CheckedChanged += new EventHandler(checkbox_CheckedChanged); //mxd
|
||||||
|
|
||||||
// Add to list
|
// Add to list
|
||||||
this.Controls.Add(c);
|
this.Controls.Add(c);
|
||||||
|
@ -138,5 +139,10 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
e.Graphics.DrawRectangle(p, 0, 0, this.ClientRectangle.Width - 1, this.ClientRectangle.Height - 1);
|
e.Graphics.DrawRectangle(p, 0, 0, this.ClientRectangle.Width - 1, this.ClientRectangle.Height - 1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
private void checkbox_CheckedChanged(object sender, EventArgs e) {
|
||||||
|
if(OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -177,7 +177,10 @@ namespace CodeImp.DoomBuilder.Controls
|
||||||
//mxd. Got a valid multiselection? Well, can't show any useful info about that...
|
//mxd. Got a valid multiselection? Well, can't show any useful info about that...
|
||||||
if(typelist.UseMultiSelection && typelist.SelectedNodes.Count > 1 && getValidNodes().Count > 1) {
|
if(typelist.UseMultiSelection && typelist.SelectedNodes.Count > 1 && getValidNodes().Count > 1) {
|
||||||
doupdatenode = false;
|
doupdatenode = false;
|
||||||
typeid.Text = "";
|
if(!string.IsNullOrEmpty(typeid.Text)) // Event will be raised in typeid_OnTextChanged
|
||||||
|
typeid.Text = "";
|
||||||
|
else if(OnTypeChanged != null) // Or raise event here
|
||||||
|
OnTypeChanged(thinginfo);
|
||||||
doupdatenode = true;
|
doupdatenode = true;
|
||||||
}
|
}
|
||||||
else if(typelist.SelectedNode != null) //Anything selected?
|
else if(typelist.SelectedNode != null) //Anything selected?
|
||||||
|
|
|
@ -10,14 +10,27 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
{
|
{
|
||||||
public partial class ColorFieldsControl : UserControl
|
public partial class ColorFieldsControl : UserControl
|
||||||
{
|
{
|
||||||
|
#region ================== Events
|
||||||
|
|
||||||
|
public event EventHandler OnValueChanged; //mxd
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Variables
|
||||||
|
|
||||||
private int defaultValue;
|
private int defaultValue;
|
||||||
private string field;
|
private string field;
|
||||||
|
private bool blockUpdate;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Properties
|
||||||
|
|
||||||
public int DefaultValue { get { return defaultValue; } set { defaultValue = value; } }
|
public int DefaultValue { get { return defaultValue; } set { defaultValue = value; } }
|
||||||
public string Label { get { return cpColor.Label; } set { cpColor.Label = value; } }
|
public string Label { get { return cpColor.Label; } set { cpColor.Label = value; } }
|
||||||
public string Field { get { return field; } set { field = value; } }
|
public string Field { get { return field; } set { field = value; } }
|
||||||
|
|
||||||
private bool blockUpdate;
|
#endregion
|
||||||
|
|
||||||
public ColorFieldsControl() {
|
public ColorFieldsControl() {
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
@ -29,9 +42,12 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
checkColor();
|
checkColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ApplyTo(UniFields fields) {
|
public void ApplyTo(UniFields fields, int oldValue) {
|
||||||
if(string.IsNullOrEmpty(tbColor.Text)) return;
|
if(string.IsNullOrEmpty(tbColor.Text)) {
|
||||||
UDMFTools.SetInteger(fields, field, (cpColor.Color.ToInt() & 0x00ffffff), defaultValue, false);
|
UDMFTools.SetInteger(fields, field, oldValue, defaultValue, false);
|
||||||
|
} else {
|
||||||
|
UDMFTools.SetInteger(fields, field, (cpColor.Color.ToInt() & 0x00ffffff), defaultValue, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkColor() {
|
private void checkColor() {
|
||||||
|
@ -40,6 +56,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
tbColor.ForeColor = changed ? SystemColors.WindowText : SystemColors.GrayText;
|
tbColor.ForeColor = changed ? SystemColors.WindowText : SystemColors.GrayText;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#region ================== Events
|
||||||
|
|
||||||
private void bReset_Click(object sender, EventArgs e) {
|
private void bReset_Click(object sender, EventArgs e) {
|
||||||
cpColor.Color = PixelColor.FromInt(defaultValue).WithAlpha(255);
|
cpColor.Color = PixelColor.FromInt(defaultValue).WithAlpha(255);
|
||||||
cpColor_ColorChanged(this, EventArgs.Empty);
|
cpColor_ColorChanged(this, EventArgs.Empty);
|
||||||
|
@ -53,6 +71,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
blockUpdate = false;
|
blockUpdate = false;
|
||||||
|
|
||||||
checkColor();
|
checkColor();
|
||||||
|
|
||||||
|
if(OnValueChanged != null) OnValueChanged(this, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void tbColor_TextChanged(object sender, EventArgs e) {
|
private void tbColor_TextChanged(object sender, EventArgs e) {
|
||||||
|
@ -69,5 +89,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
|
|
||||||
checkColor();
|
checkColor();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
//validate
|
//validate
|
||||||
for(int i = 0; i < configInfo.LinedefColorPresets.Length; i++) {
|
for(int i = 0; i < configInfo.LinedefColorPresets.Length; i++) {
|
||||||
validatePreset(configInfo.LinedefColorPresets[i]);
|
validatePreset(configInfo.LinedefColorPresets[i]);
|
||||||
hasDuplicates(configInfo.LinedefColorPresets[i]);
|
checkDuplicates(configInfo.LinedefColorPresets[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
lbColorPresets.Items.AddRange(configInfo.LinedefColorPresets);
|
lbColorPresets.Items.AddRange(configInfo.LinedefColorPresets);
|
||||||
|
@ -50,23 +50,22 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
return presets.ToArray();
|
return presets.ToArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool validatePreset(LinedefColorPreset preset) {
|
private void validatePreset(LinedefColorPreset preset) {
|
||||||
bool hasAction = preset.Action != 0;
|
bool hasAction = preset.Action != 0;
|
||||||
bool hasFlags = preset.Flags.Count > 0 || preset.RestrictedFlags.Count > 0;
|
bool hasFlags = preset.Flags.Count > 0 || preset.RestrictedFlags.Count > 0;
|
||||||
bool hasActivation = preset.Activation != 0;
|
bool hasActivation = preset.Activation != 0;
|
||||||
|
|
||||||
//validate
|
//validate
|
||||||
if(!hasAction && !hasFlags && !hasActivation) {
|
if(!hasAction && !hasFlags && !hasActivation) {
|
||||||
if(colorProperties.UDMF) {
|
if(colorProperties.UDMF) {
|
||||||
preset.SetInvalid("Invalid preset: no flags, action or activation type selected!");
|
preset.SetInvalid("Invalid preset: no flags, action or activation type selected!");
|
||||||
} else {
|
} else {
|
||||||
preset.SetInvalid("Invalid preset: no flags or action selected!");
|
preset.SetInvalid("Invalid preset: no flags or action selected!");
|
||||||
}
|
}
|
||||||
return false;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
preset.SetValid();
|
preset.SetValid();
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool validatePresetName() {
|
private bool validatePresetName() {
|
||||||
|
@ -87,8 +86,9 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private bool hasDuplicates(LinedefColorPreset preset) {
|
private void checkDuplicates(LinedefColorPreset preset)
|
||||||
foreach(LinedefColorPreset p in lbColorPresets.Items) {
|
{
|
||||||
|
foreach(LinedefColorPreset p in lbColorPresets.Items) {
|
||||||
if(preset.Name == p.Name) continue;
|
if(preset.Name == p.Name) continue;
|
||||||
if(p.Action != preset.Action) continue;
|
if(p.Action != preset.Action) continue;
|
||||||
if(p.Activation != preset.Activation) continue;
|
if(p.Activation != preset.Activation) continue;
|
||||||
|
@ -114,10 +114,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
|
|
||||||
//we have a match
|
//we have a match
|
||||||
preset.WarningDescription = "Preset matches '" + p.Name + "'";
|
preset.WarningDescription = "Preset matches '" + p.Name + "'";
|
||||||
return true;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updatePresetListControls() {
|
private void updatePresetListControls() {
|
||||||
|
@ -210,7 +208,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
LinedefColorPreset preset = (LinedefColorPreset)lbColorPresets.SelectedItem;
|
LinedefColorPreset preset = (LinedefColorPreset)lbColorPresets.SelectedItem;
|
||||||
preset.SetValid(); //clear error/warning messages
|
preset.SetValid(); //clear error/warning messages
|
||||||
validatePreset(preset); //validate it
|
validatePreset(preset); //validate it
|
||||||
hasDuplicates(preset);
|
checkDuplicates(preset);
|
||||||
colorProperties.UpdateMessages(); //update error/warning messages
|
colorProperties.UpdateMessages(); //update error/warning messages
|
||||||
lbColorPresets.Invalidate(); //redraw icons
|
lbColorPresets.Invalidate(); //redraw icons
|
||||||
|
|
||||||
|
|
|
@ -27,31 +27,43 @@
|
||||||
private void InitializeComponent() {
|
private void InitializeComponent() {
|
||||||
this.label = new System.Windows.Forms.Label();
|
this.label = new System.Windows.Forms.Label();
|
||||||
this.bReset = new System.Windows.Forms.Button();
|
this.bReset = new System.Windows.Forms.Button();
|
||||||
|
this.bLink = new System.Windows.Forms.Button();
|
||||||
this.value1 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
|
this.value1 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
|
||||||
this.value2 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
|
this.value2 = new CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// label
|
// label
|
||||||
//
|
//
|
||||||
this.label.Location = new System.Drawing.Point(0, 6);
|
this.label.Location = new System.Drawing.Point(3, 6);
|
||||||
this.label.Name = "label";
|
this.label.Name = "label";
|
||||||
this.label.Size = new System.Drawing.Size(87, 14);
|
this.label.Size = new System.Drawing.Size(86, 14);
|
||||||
this.label.TabIndex = 36;
|
this.label.TabIndex = 36;
|
||||||
this.label.Text = "Upper Offset:";
|
this.label.Text = "Texture Offsets:";
|
||||||
this.label.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
this.label.TextAlign = System.Drawing.ContentAlignment.TopRight;
|
||||||
//
|
//
|
||||||
// bReset
|
// bReset
|
||||||
//
|
//
|
||||||
this.bReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.bReset.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.bReset.Image = global::CodeImp.DoomBuilder.Properties.Resources.Reset;
|
this.bReset.Image = global::CodeImp.DoomBuilder.Properties.Resources.Reset;
|
||||||
this.bReset.Location = new System.Drawing.Point(222, 1);
|
this.bReset.Location = new System.Drawing.Point(245, 1);
|
||||||
this.bReset.Name = "bReset";
|
this.bReset.Name = "bReset";
|
||||||
this.bReset.Size = new System.Drawing.Size(23, 23);
|
this.bReset.Size = new System.Drawing.Size(23, 23);
|
||||||
this.bReset.TabIndex = 39;
|
this.bReset.TabIndex = 40;
|
||||||
this.bReset.UseVisualStyleBackColor = true;
|
this.bReset.UseVisualStyleBackColor = true;
|
||||||
this.bReset.Visible = false;
|
this.bReset.Visible = false;
|
||||||
this.bReset.Click += new System.EventHandler(this.bReset_Click);
|
this.bReset.Click += new System.EventHandler(this.bReset_Click);
|
||||||
//
|
//
|
||||||
|
// bLink
|
||||||
|
//
|
||||||
|
this.bLink.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
|
this.bLink.Image = global::CodeImp.DoomBuilder.Properties.Resources.Link;
|
||||||
|
this.bLink.Location = new System.Drawing.Point(220, 1);
|
||||||
|
this.bLink.Name = "bLink";
|
||||||
|
this.bLink.Size = new System.Drawing.Size(23, 23);
|
||||||
|
this.bLink.TabIndex = 39;
|
||||||
|
this.bLink.UseVisualStyleBackColor = true;
|
||||||
|
this.bLink.Click += new System.EventHandler(this.bLink_Click);
|
||||||
|
//
|
||||||
// value1
|
// value1
|
||||||
//
|
//
|
||||||
this.value1.AllowDecimal = false;
|
this.value1.AllowDecimal = false;
|
||||||
|
@ -59,7 +71,8 @@
|
||||||
this.value1.AllowRelative = true;
|
this.value1.AllowRelative = true;
|
||||||
this.value1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.value1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.value1.ButtonStep = 1;
|
this.value1.ButtonStep = 1;
|
||||||
this.value1.Location = new System.Drawing.Point(89, 1);
|
this.value1.ButtonStepFloat = 1F;
|
||||||
|
this.value1.Location = new System.Drawing.Point(87, 1);
|
||||||
this.value1.Name = "value1";
|
this.value1.Name = "value1";
|
||||||
this.value1.Size = new System.Drawing.Size(62, 24);
|
this.value1.Size = new System.Drawing.Size(62, 24);
|
||||||
this.value1.StepValues = null;
|
this.value1.StepValues = null;
|
||||||
|
@ -74,33 +87,37 @@
|
||||||
this.value2.AllowRelative = true;
|
this.value2.AllowRelative = true;
|
||||||
this.value2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
this.value2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||||
this.value2.ButtonStep = 1;
|
this.value2.ButtonStep = 1;
|
||||||
this.value2.Location = new System.Drawing.Point(157, 1);
|
this.value2.ButtonStepFloat = 1F;
|
||||||
|
this.value2.Location = new System.Drawing.Point(155, 1);
|
||||||
this.value2.Name = "value2";
|
this.value2.Name = "value2";
|
||||||
this.value2.Size = new System.Drawing.Size(62, 24);
|
this.value2.Size = new System.Drawing.Size(62, 24);
|
||||||
this.value2.StepValues = null;
|
this.value2.StepValues = null;
|
||||||
this.value2.TabIndex = 38;
|
this.value2.TabIndex = 38;
|
||||||
this.value2.Tag = "offsety_top";
|
this.value2.Tag = "offsety_top";
|
||||||
this.value2.WhenTextChanged += new System.EventHandler(this.value1_WhenTextChanged);
|
this.value2.WhenTextChanged += new System.EventHandler(this.value2_WhenTextChanged);
|
||||||
//
|
//
|
||||||
// PairedFieldsControl
|
// PairedFieldsControl
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;
|
||||||
this.Controls.Add(this.bReset);
|
this.Controls.Add(this.bReset);
|
||||||
|
this.Controls.Add(this.bLink);
|
||||||
this.Controls.Add(this.label);
|
this.Controls.Add(this.label);
|
||||||
this.Controls.Add(this.value1);
|
this.Controls.Add(this.value1);
|
||||||
this.Controls.Add(this.value2);
|
this.Controls.Add(this.value2);
|
||||||
|
this.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||||
this.Name = "PairedFieldsControl";
|
this.Name = "PairedFieldsControl";
|
||||||
this.Size = new System.Drawing.Size(249, 26);
|
this.Size = new System.Drawing.Size(268, 26);
|
||||||
this.ResumeLayout(false);
|
this.ResumeLayout(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
private System.Windows.Forms.Button bReset;
|
private System.Windows.Forms.Button bLink;
|
||||||
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox value1;
|
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox value1;
|
||||||
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox value2;
|
private CodeImp.DoomBuilder.Controls.ButtonsNumericTextbox value2;
|
||||||
private System.Windows.Forms.Label label;
|
private System.Windows.Forms.Label label;
|
||||||
|
private System.Windows.Forms.Button bReset;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,15 +1,36 @@
|
||||||
using System;
|
#region ================== Namespaces
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using CodeImp.DoomBuilder.Map;
|
using CodeImp.DoomBuilder.Map;
|
||||||
using CodeImp.DoomBuilder.GZBuilder.Tools;
|
using CodeImp.DoomBuilder.GZBuilder.Tools;
|
||||||
|
using CodeImp.DoomBuilder.Properties;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
{
|
{
|
||||||
public partial class PairedFieldsControl : UserControl
|
public partial class PairedFieldsControl : UserControl
|
||||||
{
|
{
|
||||||
|
#region ================== Events
|
||||||
|
|
||||||
|
public event EventHandler OnValuesChanged;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Variables
|
||||||
|
|
||||||
private float defaultValue;
|
private float defaultValue;
|
||||||
private string field1;
|
private string field1;
|
||||||
private string field2;
|
private string field2;
|
||||||
|
private bool allowValueLinking;
|
||||||
|
private bool linkValues;
|
||||||
|
private bool blockUpdate;
|
||||||
|
private int bResetPosX;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Properties
|
||||||
|
|
||||||
public string Label { get { return label.Text; } set { label.Text = value; } }
|
public string Label { get { return label.Text; } set { label.Text = value; } }
|
||||||
public float DefaultValue { get { return defaultValue; } set { defaultValue = value; } }
|
public float DefaultValue { get { return defaultValue; } set { defaultValue = value; } }
|
||||||
|
@ -18,12 +39,25 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
public bool AllowDecimal { get { return value1.AllowDecimal; } set { value1.AllowDecimal = value; value2.AllowDecimal = value; } }
|
public bool AllowDecimal { get { return value1.AllowDecimal; } set { value1.AllowDecimal = value; value2.AllowDecimal = value; } }
|
||||||
public int ButtonStep { get { return value1.ButtonStep; } set { value1.ButtonStep = value; value2.ButtonStep = value; } }
|
public int ButtonStep { get { return value1.ButtonStep; } set { value1.ButtonStep = value; value2.ButtonStep = value; } }
|
||||||
public float ButtonStepFloat { get { return value1.ButtonStepFloat; } set { value1.ButtonStepFloat = value; value2.ButtonStepFloat = value; } }
|
public float ButtonStepFloat { get { return value1.ButtonStepFloat; } set { value1.ButtonStepFloat = value; value2.ButtonStepFloat = value; } }
|
||||||
|
public bool AllowValueLinking { get { return allowValueLinking; } set { allowValueLinking = value; updateButtons(); } }
|
||||||
|
public bool LinkValues { get { return linkValues; } set { linkValues = value; updateButtons(); } }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Constructor
|
||||||
|
|
||||||
public PairedFieldsControl() {
|
public PairedFieldsControl() {
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
bResetPosX = bReset.Left;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetValuesFrom(UniFields fields) {
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Methods
|
||||||
|
|
||||||
|
public void SetValuesFrom(UniFields fields, bool first) {
|
||||||
|
blockUpdate = true;
|
||||||
|
|
||||||
string newValue1;
|
string newValue1;
|
||||||
string newValue2;
|
string newValue2;
|
||||||
|
|
||||||
|
@ -38,16 +72,28 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
newValue2 = UDMFTools.GetFloat(fields, field2, defaultValue).ToString();
|
newValue2 = UDMFTools.GetFloat(fields, field2, defaultValue).ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
value1.Text = ((!string.IsNullOrEmpty(value1.Text) && value1.Text != newValue1) ? "" : newValue1);
|
if(first) {
|
||||||
value2.Text = ((!string.IsNullOrEmpty(value2.Text) && value2.Text != newValue2) ? "" : newValue2);
|
value1.Text = newValue1;
|
||||||
|
value2.Text = newValue2;
|
||||||
|
} else {
|
||||||
|
value1.Text = ((!string.IsNullOrEmpty(value1.Text) && value1.Text != newValue1) ? "" : newValue1);
|
||||||
|
value2.Text = ((!string.IsNullOrEmpty(value2.Text) && value2.Text != newValue2) ? "" : newValue2);
|
||||||
|
}
|
||||||
checkValues();
|
checkValues();
|
||||||
|
|
||||||
|
blockUpdate = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void ApplyTo(UniFields fields, int min, int max) {
|
public void ApplyTo(UniFields fields, int min, int max, float oldValue1, float oldValue2) {
|
||||||
if(value1.Text != "")
|
if(value1.Text != "")
|
||||||
UDMFTools.SetFloat(fields, field1, General.Clamp(value1.GetResultFloat(defaultValue), min, max), defaultValue, false);
|
UDMFTools.SetFloat(fields, field1, General.Clamp(value1.GetResultFloat(defaultValue), min, max), defaultValue, false);
|
||||||
|
else
|
||||||
|
UDMFTools.SetFloat(fields, field1, oldValue1, defaultValue, false);
|
||||||
|
|
||||||
if(value2.Text != "")
|
if(value2.Text != "")
|
||||||
UDMFTools.SetFloat(fields, field2, General.Clamp(value2.GetResultFloat(defaultValue), min, max), defaultValue, false);
|
UDMFTools.SetFloat(fields, field2, General.Clamp(value2.GetResultFloat(defaultValue), min, max), defaultValue, false);
|
||||||
|
else
|
||||||
|
UDMFTools.SetFloat(fields, field2, oldValue2, defaultValue, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void checkValues() {
|
private void checkValues() {
|
||||||
|
@ -58,6 +104,28 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
|
|
||||||
label.Enabled = changed;
|
label.Enabled = changed;
|
||||||
bReset.Visible = changed;
|
bReset.Visible = changed;
|
||||||
|
|
||||||
|
if(!blockUpdate && OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateButtons() {
|
||||||
|
bLink.Visible = allowValueLinking;
|
||||||
|
|
||||||
|
if(!allowValueLinking) {
|
||||||
|
bReset.Left = bLink.Left;
|
||||||
|
} else {
|
||||||
|
bReset.Left = bResetPosX;
|
||||||
|
bLink.Image = (linkValues ? Resources.Link : Resources.Unlink);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Events
|
||||||
|
|
||||||
|
private void bLink_Click(object sender, EventArgs e) {
|
||||||
|
linkValues = !linkValues;
|
||||||
|
bLink.Image = (linkValues ? Resources.Link : Resources.Unlink);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void bReset_Click(object sender, EventArgs e) {
|
private void bReset_Click(object sender, EventArgs e) {
|
||||||
|
@ -68,7 +136,29 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
}
|
}
|
||||||
|
|
||||||
private void value1_WhenTextChanged(object sender, EventArgs e) {
|
private void value1_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
if(linkValues) {
|
||||||
|
blockUpdate = true;
|
||||||
|
value2.Text = value1.Text;
|
||||||
|
blockUpdate = false;
|
||||||
|
}
|
||||||
|
|
||||||
checkValues();
|
checkValues();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void value2_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
if(linkValues) {
|
||||||
|
blockUpdate = true;
|
||||||
|
value1.Text = value2.Text;
|
||||||
|
blockUpdate = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
checkValues();
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,22 +1,43 @@
|
||||||
using System;
|
#region ================== Namespaces
|
||||||
|
|
||||||
|
using System;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using CodeImp.DoomBuilder.Map;
|
using CodeImp.DoomBuilder.Map;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
{
|
{
|
||||||
public partial class PairedIntControl : UserControl
|
public partial class PairedIntControl : UserControl
|
||||||
{
|
{
|
||||||
|
#region ================== Events
|
||||||
|
|
||||||
|
public event EventHandler OnValuesChanged;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Variables
|
||||||
|
|
||||||
private int defaultValue;
|
private int defaultValue;
|
||||||
|
private bool blockUpdate;
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region ================== Properties
|
||||||
|
|
||||||
public string Label { get { return label.Text; } set { label.Text = value; } }
|
public string Label { get { return label.Text; } set { label.Text = value; } }
|
||||||
public int DefaultValue { get { return defaultValue; } set { defaultValue = value; } }
|
public int DefaultValue { get { return defaultValue; } set { defaultValue = value; } }
|
||||||
public int ButtonStep { get { return (int)value1.ButtonStep; } set { value1.ButtonStep = value; value2.ButtonStep = value; } }
|
public int ButtonStep { get { return (int)value1.ButtonStep; } set { value1.ButtonStep = value; value2.ButtonStep = value; } }
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
public PairedIntControl() {
|
public PairedIntControl() {
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetValues(int val1, int val2) {
|
public void SetValues(int val1, int val2) {
|
||||||
|
blockUpdate = true;
|
||||||
|
|
||||||
if(!string.IsNullOrEmpty(value1.Text) && value1.Text != val1.ToString())
|
if(!string.IsNullOrEmpty(value1.Text) && value1.Text != val1.ToString())
|
||||||
value1.Text = "";
|
value1.Text = "";
|
||||||
else
|
else
|
||||||
|
@ -26,6 +47,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
value2.Text = "";
|
value2.Text = "";
|
||||||
else
|
else
|
||||||
value2.Text = val2.ToString();
|
value2.Text = val2.ToString();
|
||||||
|
|
||||||
|
blockUpdate = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public int GetValue1(int original) {
|
public int GetValue1(int original) {
|
||||||
|
@ -44,6 +67,8 @@ namespace CodeImp.DoomBuilder.GZBuilder.Controls
|
||||||
|
|
||||||
label.Enabled = changed;
|
label.Enabled = changed;
|
||||||
bReset.Visible = changed;
|
bReset.Visible = changed;
|
||||||
|
|
||||||
|
if(!blockUpdate && OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void bReset_Click(object sender, EventArgs e) {
|
private void bReset_Click(object sender, EventArgs e) {
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public enum GZDoomLightType : int
|
public enum GZDoomLightType
|
||||||
{
|
{
|
||||||
NORMAL = 0,
|
NORMAL = 0,
|
||||||
PULSE = 1,
|
PULSE = 1,
|
||||||
|
@ -30,7 +30,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.Data
|
||||||
}
|
}
|
||||||
|
|
||||||
//divide these by 100 to get light color alpha
|
//divide these by 100 to get light color alpha
|
||||||
public enum GZDoomLightRenderStyle : int
|
public enum GZDoomLightRenderStyle
|
||||||
{
|
{
|
||||||
NONE = 0,
|
NONE = 0,
|
||||||
NORMAL = 99,
|
NORMAL = 99,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder.GZBuilder.Data {
|
namespace CodeImp.DoomBuilder.GZBuilder.Data {
|
||||||
public enum GameType : int {
|
public enum GameType {
|
||||||
UNKNOWN = 0,
|
UNKNOWN = 0,
|
||||||
DOOM = 1,
|
DOOM = 1,
|
||||||
HERETIC = 2,
|
HERETIC = 2,
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder.GZBuilder.Data {
|
namespace CodeImp.DoomBuilder.GZBuilder.Data {
|
||||||
internal enum ScriptType : int {
|
internal enum ScriptType {
|
||||||
UNKNOWN = 0,
|
UNKNOWN = 0,
|
||||||
ACS = 1,
|
ACS = 1,
|
||||||
MODELDEF = 2,
|
MODELDEF = 2,
|
||||||
|
|
|
@ -74,7 +74,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
|
||||||
|
|
||||||
//texture has unsupported extension?
|
//texture has unsupported extension?
|
||||||
if(mde.TextureNames[i] == TextureData.INVALID_TEXTURE) {
|
if(mde.TextureNames[i] == TextureData.INVALID_TEXTURE) {
|
||||||
foreach(Mesh m in result.Meshes)
|
for (int c = 0; c < result.Meshes.Count; c++)
|
||||||
mde.Model.Textures.Add(General.Map.Data.UnknownTexture3D.Texture);
|
mde.Model.Textures.Add(General.Map.Data.UnknownTexture3D.Texture);
|
||||||
|
|
||||||
//texture not defined in MODELDEF?
|
//texture not defined in MODELDEF?
|
||||||
|
|
|
@ -530,7 +530,7 @@ namespace CodeImp.DoomBuilder
|
||||||
internal static void Main(string[] args)
|
internal static void Main(string[] args)
|
||||||
{
|
{
|
||||||
Uri localpath;
|
Uri localpath;
|
||||||
Version thisversion;
|
//Version thisversion;
|
||||||
|
|
||||||
// Determine states
|
// Determine states
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
|
@ -555,7 +555,7 @@ namespace CodeImp.DoomBuilder
|
||||||
|
|
||||||
// Get a reference to this assembly
|
// Get a reference to this assembly
|
||||||
thisasm = Assembly.GetExecutingAssembly();
|
thisasm = Assembly.GetExecutingAssembly();
|
||||||
thisversion = thisasm.GetName().Version;
|
//thisversion = thisasm.GetName().Version;
|
||||||
|
|
||||||
// Find application path
|
// Find application path
|
||||||
localpath = new Uri(Path.GetDirectoryName(thisasm.GetName().CodeBase));
|
localpath = new Uri(Path.GetDirectoryName(thisasm.GetName().CodeBase));
|
||||||
|
|
|
@ -345,7 +345,7 @@ namespace CodeImp.DoomBuilder
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
// Unable to start the program
|
// Unable to start the program
|
||||||
General.ShowErrorMessage("Unable to start the test program, " + e.GetType().Name + ": " + e.Message, MessageBoxButtons.OK); ;
|
General.ShowErrorMessage("Unable to start the test program, " + e.GetType().Name + ": " + e.Message, MessageBoxButtons.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
General.MainWindow.DisplayReady();
|
General.MainWindow.DisplayReady();
|
||||||
|
|
|
@ -115,7 +115,7 @@ namespace CodeImp.DoomBuilder.Geometry
|
||||||
ry = 0;
|
ry = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
float r = (float)Math.Sqrt(rx * rx + ry * ry); // length of the summed vector - not being used, but there it is anyway
|
//float r = (float)Math.Sqrt(rx * rx + ry * ry); // length of the summed vector - not being used, but there it is anyway
|
||||||
float theta = (float)Math.Atan2(ry, rx); // angle of the new vector
|
float theta = (float)Math.Atan2(ry, rx); // angle of the new vector
|
||||||
|
|
||||||
float controlDist = Math.Min(a, b) * z; // Distance of curve control points from current point: a fraction the length of the shorter adjacent triangle side
|
float controlDist = Math.Min(a, b) * z; // Distance of curve control points from current point: a fraction the length of the shorter adjacent triangle side
|
||||||
|
|
|
@ -860,7 +860,6 @@ namespace CodeImp.DoomBuilder.Geometry
|
||||||
List<Vertex> newverts = new List<Vertex>();
|
List<Vertex> newverts = new List<Vertex>();
|
||||||
List<Vertex> intersectverts = new List<Vertex>();
|
List<Vertex> intersectverts = new List<Vertex>();
|
||||||
List<Linedef> newlines = new List<Linedef>();
|
List<Linedef> newlines = new List<Linedef>();
|
||||||
List<bool> newlinescw = new List<bool>();
|
|
||||||
List<Linedef> oldlines = new List<Linedef>(General.Map.Map.Linedefs);
|
List<Linedef> oldlines = new List<Linedef>(General.Map.Map.Linedefs);
|
||||||
List<Sidedef> insidesides = new List<Sidedef>();
|
List<Sidedef> insidesides = new List<Sidedef>();
|
||||||
List<Vertex> mergeverts = new List<Vertex>();
|
List<Vertex> mergeverts = new List<Vertex>();
|
||||||
|
|
|
@ -155,7 +155,7 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
private const string ERROR_ASSIGNINVALID = "Invalid assignment. Missing a previous terminator symbol?";
|
private const string ERROR_ASSIGNINVALID = "Invalid assignment. Missing a previous terminator symbol?";
|
||||||
private const string ERROR_VALUEINVALID = "Invalid value in assignment. Missing a previous terminator symbol?";
|
private const string ERROR_VALUEINVALID = "Invalid value in assignment. Missing a previous terminator symbol?";
|
||||||
private const string ERROR_VALUETOOBIG = "Value too big.";
|
private const string ERROR_VALUETOOBIG = "Value too big.";
|
||||||
private const string ERROR_KEYNOTUNQIUE = "Key is not unique within scope.";
|
//private const string ERROR_KEYNOTUNQIUE = "Key is not unique within scope.";
|
||||||
private const string ERROR_KEYWORDUNKNOWN = "Unknown keyword in assignment. Missing a previous terminator symbol?";
|
private const string ERROR_KEYWORDUNKNOWN = "Unknown keyword in assignment. Missing a previous terminator symbol?";
|
||||||
private const string ERROR_UNEXPECTED_END = "Unexpected end of data. Missing a previous terminator symbol?";
|
private const string ERROR_UNEXPECTED_END = "Unexpected end of data. Missing a previous terminator symbol?";
|
||||||
private const string ERROR_UNKNOWN_FUNCTION = "Unknown function call.";
|
private const string ERROR_UNKNOWN_FUNCTION = "Unknown function call.";
|
||||||
|
|
|
@ -169,7 +169,6 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
// Returns null on failure
|
// Returns null on failure
|
||||||
private PixelColorBlock ReadAsPixelData(Stream stream, out int width, out int height)
|
private PixelColorBlock ReadAsPixelData(Stream stream, out int width, out int height)
|
||||||
{
|
{
|
||||||
BinaryReader reader = new BinaryReader(stream);
|
|
||||||
PixelColorBlock pixeldata = null;
|
PixelColorBlock pixeldata = null;
|
||||||
byte[] bytes;
|
byte[] bytes;
|
||||||
|
|
||||||
|
|
|
@ -175,7 +175,7 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
// Returns null on failure
|
// Returns null on failure
|
||||||
private PixelColorBlock ReadAsPixelData(Stream stream, out int width, out int height)
|
private PixelColorBlock ReadAsPixelData(Stream stream, out int width, out int height)
|
||||||
{
|
{
|
||||||
BinaryReader reader = new BinaryReader(stream);
|
new BinaryReader(stream);
|
||||||
PixelColorBlock pixeldata = null;
|
PixelColorBlock pixeldata = null;
|
||||||
float sqrlength;
|
float sqrlength;
|
||||||
byte[] bytes;
|
byte[] bytes;
|
||||||
|
|
|
@ -59,12 +59,10 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
{
|
{
|
||||||
BinaryReader reader = new BinaryReader(stream);
|
BinaryReader reader = new BinaryReader(stream);
|
||||||
int width, height;
|
int width, height;
|
||||||
int dataoffset;
|
|
||||||
int datalength;
|
int datalength;
|
||||||
int columnaddr;
|
int columnaddr;
|
||||||
|
|
||||||
// Initialize
|
// Initialize
|
||||||
dataoffset = (int)stream.Position;
|
|
||||||
datalength = (int)stream.Length - (int)stream.Position;
|
datalength = (int)stream.Length - (int)stream.Position;
|
||||||
|
|
||||||
// Need at least 4 bytes
|
// Need at least 4 bytes
|
||||||
|
|
|
@ -47,7 +47,7 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
// Error strings
|
// Error strings
|
||||||
private const string ERROR_KEYMISSING = "Missing key name in assignment or scope.";
|
private const string ERROR_KEYMISSING = "Missing key name in assignment or scope.";
|
||||||
private const string ERROR_KEYCHARACTERS = "Invalid characters in key name.";
|
private const string ERROR_KEYCHARACTERS = "Invalid characters in key name.";
|
||||||
private const string ERROR_ASSIGNINVALID = "Invalid assignment. Missing a previous terminator symbol?";
|
//private const string ERROR_ASSIGNINVALID = "Invalid assignment. Missing a previous terminator symbol?";
|
||||||
private const string ERROR_VALUEINVALID = "Invalid value in assignment. Missing a previous terminator symbol?";
|
private const string ERROR_VALUEINVALID = "Invalid value in assignment. Missing a previous terminator symbol?";
|
||||||
private const string ERROR_VALUETOOBIG = "Value too big.";
|
private const string ERROR_VALUETOOBIG = "Value too big.";
|
||||||
private const string ERROR_KEYWITHOUTVALUE = "Key has no value assigned.";
|
private const string ERROR_KEYWITHOUTVALUE = "Key has no value assigned.";
|
||||||
|
|
|
@ -95,6 +95,10 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
config.WriteSetting("managedfields.linedef." + fn, true);
|
config.WriteSetting("managedfields.linedef." + fn, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mxd. Add sidedef flags
|
||||||
|
foreach(KeyValuePair<string, string> flag in General.Map.Config.SidedefFlags)
|
||||||
|
config.WriteSetting("managedfields.sidedef." + flag.Key, true);
|
||||||
|
|
||||||
//mxd. Add sector flags
|
//mxd. Add sector flags
|
||||||
foreach(KeyValuePair<string, string> flag in General.Map.Config.SectorFlags)
|
foreach(KeyValuePair<string, string> flag in General.Map.Config.SectorFlags)
|
||||||
config.WriteSetting("managedfields.sector." + flag.Key, true);
|
config.WriteSetting("managedfields.sector." + flag.Key, true);
|
||||||
|
@ -308,13 +312,18 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
string tmid = GetCollectionEntry<string>(sc, "texturemiddle", false, "-", where);
|
string tmid = GetCollectionEntry<string>(sc, "texturemiddle", false, "-", where);
|
||||||
int sector = GetCollectionEntry<int>(sc, "sector", true, 0, where);
|
int sector = GetCollectionEntry<int>(sc, "sector", true, 0, where);
|
||||||
|
|
||||||
|
//mxd. Flags
|
||||||
|
Dictionary<string, bool> stringflags = new Dictionary<string, bool>();
|
||||||
|
foreach(KeyValuePair<string, string> flag in General.Map.Config.SidedefFlags)
|
||||||
|
stringflags[flag.Key] = GetCollectionEntry<bool>(sc, flag.Key, false, false, where);
|
||||||
|
|
||||||
// Create sidedef
|
// Create sidedef
|
||||||
if(sectorlink.ContainsKey(sector))
|
if(sectorlink.ContainsKey(sector))
|
||||||
{
|
{
|
||||||
Sidedef s = map.CreateSidedef(ld, front, sectorlink[sector]);
|
Sidedef s = map.CreateSidedef(ld, front, sectorlink[sector]);
|
||||||
if(s != null)
|
if(s != null)
|
||||||
{
|
{
|
||||||
s.Update(offsetx, offsety, thigh, tmid, tlow);
|
s.Update(offsetx, offsety, thigh, tmid, tlow, stringflags);
|
||||||
|
|
||||||
// Custom fields
|
// Custom fields
|
||||||
ReadCustomFields(sc, s, "sidedef");
|
ReadCustomFields(sc, s, "sidedef");
|
||||||
|
|
|
@ -220,8 +220,6 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
// Go for all sidedefs
|
// Go for all sidedefs
|
||||||
foreach(Sidedef s in sidedefs)
|
foreach(Sidedef s in sidedefs)
|
||||||
{
|
{
|
||||||
int sectorid = (s.Sector != null) ? sectorids[s.Sector] : -1;
|
|
||||||
|
|
||||||
// Make collection
|
// Make collection
|
||||||
UniversalCollection coll = new UniversalCollection();
|
UniversalCollection coll = new UniversalCollection();
|
||||||
if(s.OffsetX != 0) coll.Add("offsetx", s.OffsetX);
|
if(s.OffsetX != 0) coll.Add("offsetx", s.OffsetX);
|
||||||
|
@ -231,6 +229,10 @@ namespace CodeImp.DoomBuilder.IO
|
||||||
if(s.LongMiddleTexture != MapSet.EmptyLongName) coll.Add("texturemiddle", s.MiddleTexture);
|
if(s.LongMiddleTexture != MapSet.EmptyLongName) coll.Add("texturemiddle", s.MiddleTexture);
|
||||||
coll.Add("sector", sectorids[s.Sector]);
|
coll.Add("sector", sectorids[s.Sector]);
|
||||||
coll.Comment = s.Index.ToString();
|
coll.Comment = s.Index.ToString();
|
||||||
|
|
||||||
|
//mxd. Flags
|
||||||
|
foreach(KeyValuePair<string, bool> flag in s.Flags)
|
||||||
|
if(flag.Value) coll.Add(flag.Key, flag.Value);
|
||||||
|
|
||||||
// Add custom fields
|
// Add custom fields
|
||||||
AddCustomFields(s, "sidedef", coll);
|
AddCustomFields(s, "sidedef", coll);
|
||||||
|
|
|
@ -27,10 +27,6 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
{
|
{
|
||||||
public sealed class Sidedef : MapElement
|
public sealed class Sidedef : MapElement
|
||||||
{
|
{
|
||||||
#region ================== Constants
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region ================== Variables
|
#region ================== Variables
|
||||||
|
|
||||||
// Map
|
// Map
|
||||||
|
@ -55,6 +51,9 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
private long longtexnamemid;
|
private long longtexnamemid;
|
||||||
private long longtexnamelow;
|
private long longtexnamelow;
|
||||||
|
|
||||||
|
//mxd. UDMF properties
|
||||||
|
private Dictionary<string, bool> flags;
|
||||||
|
|
||||||
// Clone
|
// Clone
|
||||||
private int serializedindex;
|
private int serializedindex;
|
||||||
|
|
||||||
|
@ -67,6 +66,7 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
public Linedef Line { get { return linedef; } }
|
public Linedef Line { get { return linedef; } }
|
||||||
public Sidedef Other { get { if(this == linedef.Front) return linedef.Back; else return linedef.Front; } }
|
public Sidedef Other { get { if(this == linedef.Front) return linedef.Back; else return linedef.Front; } }
|
||||||
public Sector Sector { get { return sector; } }
|
public Sector Sector { get { return sector; } }
|
||||||
|
internal Dictionary<string, bool> Flags { get { return flags; } } //mxd
|
||||||
public float Angle { get { if(IsFront) return linedef.Angle; else return Angle2D.Normalized(linedef.Angle + Angle2D.PI); } }
|
public float Angle { get { if(IsFront) return linedef.Angle; else return Angle2D.Normalized(linedef.Angle + Angle2D.PI); } }
|
||||||
public int OffsetX { get { return offsetx; } set { BeforePropsChange(); offsetx = value; } }
|
public int OffsetX { get { return offsetx; } set { BeforePropsChange(); offsetx = value; } }
|
||||||
public int OffsetY { get { return offsety; } set { BeforePropsChange(); offsety = value; } }
|
public int OffsetY { get { return offsety; } set { BeforePropsChange(); offsety = value; } }
|
||||||
|
@ -94,6 +94,7 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
this.longtexnamehigh = MapSet.EmptyLongName;
|
this.longtexnamehigh = MapSet.EmptyLongName;
|
||||||
this.longtexnamemid = MapSet.EmptyLongName;
|
this.longtexnamemid = MapSet.EmptyLongName;
|
||||||
this.longtexnamelow = MapSet.EmptyLongName;
|
this.longtexnamelow = MapSet.EmptyLongName;
|
||||||
|
this.flags = new Dictionary<string, bool>(); //mxd
|
||||||
|
|
||||||
// Attach linedef
|
// Attach linedef
|
||||||
this.linedef = l;
|
this.linedef = l;
|
||||||
|
@ -165,6 +166,28 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
|
|
||||||
base.ReadWrite(s);
|
base.ReadWrite(s);
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
if(s.IsWriting) {
|
||||||
|
s.wInt(flags.Count);
|
||||||
|
|
||||||
|
foreach(KeyValuePair<string, bool> f in flags) {
|
||||||
|
s.wString(f.Key);
|
||||||
|
s.wBool(f.Value);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
int c;
|
||||||
|
s.rInt(out c);
|
||||||
|
|
||||||
|
flags = new Dictionary<string, bool>(c);
|
||||||
|
for(int i = 0; i < c; i++) {
|
||||||
|
string t;
|
||||||
|
s.rString(out t);
|
||||||
|
bool b;
|
||||||
|
s.rBool(out b);
|
||||||
|
flags.Add(t, b);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
s.rwInt(ref offsetx);
|
s.rwInt(ref offsetx);
|
||||||
s.rwInt(ref offsety);
|
s.rwInt(ref offsety);
|
||||||
s.rwString(ref texnamehigh);
|
s.rwString(ref texnamehigh);
|
||||||
|
@ -189,6 +212,7 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
s.longtexnamehigh = longtexnamehigh;
|
s.longtexnamehigh = longtexnamehigh;
|
||||||
s.longtexnamemid = longtexnamemid;
|
s.longtexnamemid = longtexnamemid;
|
||||||
s.longtexnamelow = longtexnamelow;
|
s.longtexnamelow = longtexnamelow;
|
||||||
|
s.flags = new Dictionary<string, bool>(flags); //mxd
|
||||||
base.CopyPropertiesTo(s);
|
base.CopyPropertiesTo(s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -241,6 +265,35 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== Methods
|
#region ================== Methods
|
||||||
|
|
||||||
|
// This checks and returns a flag without creating it
|
||||||
|
public bool IsFlagSet(string flagname) {
|
||||||
|
if(flags.ContainsKey(flagname))
|
||||||
|
return flags[flagname];
|
||||||
|
else
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
// This sets a flag
|
||||||
|
public void SetFlag(string flagname, bool value) {
|
||||||
|
if(!flags.ContainsKey(flagname) || (IsFlagSet(flagname) != value)) {
|
||||||
|
BeforePropsChange();
|
||||||
|
|
||||||
|
flags[flagname] = value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// This returns a copy of the flags dictionary
|
||||||
|
public Dictionary<string, bool> GetFlags() {
|
||||||
|
return new Dictionary<string, bool>(flags);
|
||||||
|
}
|
||||||
|
|
||||||
|
// This clears all flags
|
||||||
|
public void ClearFlags() {
|
||||||
|
BeforePropsChange();
|
||||||
|
|
||||||
|
flags.Clear();
|
||||||
|
}
|
||||||
|
|
||||||
// This removes textures that are not required
|
// This removes textures that are not required
|
||||||
public void RemoveUnneededTextures(bool removemiddle)
|
public void RemoveUnneededTextures(bool removemiddle)
|
||||||
|
@ -460,13 +513,19 @@ namespace CodeImp.DoomBuilder.Map
|
||||||
#region ================== Changes
|
#region ================== Changes
|
||||||
|
|
||||||
// This updates all properties
|
// This updates all properties
|
||||||
public void Update(int offsetx, int offsety, string thigh, string tmid, string tlow)
|
public void Update(int offsetx, int offsety, string thigh, string tmid, string tlow) {
|
||||||
|
Update(offsetx, offsety, thigh, tmid, tlow, new Dictionary<string, bool>());
|
||||||
|
}
|
||||||
|
|
||||||
|
//mxd. This updates all properties (UDMF version)
|
||||||
|
public void Update(int offsetx, int offsety, string thigh, string tmid, string tlow, Dictionary<string, bool> flags)
|
||||||
{
|
{
|
||||||
BeforePropsChange();
|
BeforePropsChange();
|
||||||
|
|
||||||
// Apply changes
|
// Apply changes
|
||||||
this.offsetx = offsetx;
|
this.offsetx = offsetx;
|
||||||
this.offsety = offsety;
|
this.offsety = offsety;
|
||||||
|
this.flags = new Dictionary<string, bool>(flags); //mxd
|
||||||
SetTextureHigh(thigh);
|
SetTextureHigh(thigh);
|
||||||
SetTextureMid(tmid);
|
SetTextureMid(tmid);
|
||||||
SetTextureLow(tlow);
|
SetTextureLow(tlow);
|
||||||
|
|
14
Source/Core/Properties/Resources.Designer.cs
generated
14
Source/Core/Properties/Resources.Designer.cs
generated
|
@ -263,6 +263,13 @@ namespace CodeImp.DoomBuilder.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static System.Drawing.Bitmap Link {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Link", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal static System.Drawing.Bitmap List {
|
internal static System.Drawing.Bitmap List {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("List", resourceCulture);
|
object obj = ResourceManager.GetObject("List", resourceCulture);
|
||||||
|
@ -613,6 +620,13 @@ namespace CodeImp.DoomBuilder.Properties {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
internal static System.Drawing.Bitmap Unlink {
|
||||||
|
get {
|
||||||
|
object obj = ResourceManager.GetObject("Unlink", resourceCulture);
|
||||||
|
return ((System.Drawing.Bitmap)(obj));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
internal static System.Drawing.Bitmap Unpin {
|
internal static System.Drawing.Bitmap Unpin {
|
||||||
get {
|
get {
|
||||||
object obj = ResourceManager.GetObject("Unpin", resourceCulture);
|
object obj = ResourceManager.GetObject("Unpin", resourceCulture);
|
||||||
|
|
|
@ -118,8 +118,8 @@
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
|
||||||
<data name="ArrowUp" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="mergegeometry2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\ArrowUp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\mergegeometry2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Monster3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Monster3" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Monster3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Monster3.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
@ -187,6 +187,9 @@
|
||||||
<data name="Status2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Status2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Status2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Status2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Unpin" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Unpin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="Redo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Redo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Redo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -223,9 +226,6 @@
|
||||||
<data name="fx" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="fx" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\fx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\fx.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="mergegeometry2" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\mergegeometry2.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="CLogo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="CLogo" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\CLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\CLogo.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -235,9 +235,15 @@
|
||||||
<data name="List" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="List" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\List.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\List.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Keyboard" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Keyboard.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="Question" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Question" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Question.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Question.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Reset" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Reset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="OpenMap" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="OpenMap" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\OpenMap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\OpenMap.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -319,6 +325,9 @@
|
||||||
<data name="Light_animate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Light_animate" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Light_animate.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="TagStatistics" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\TagStatistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="Add" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Add" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Add.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -337,6 +346,12 @@
|
||||||
<data name="Grid2_arrowup" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Grid2_arrowup" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Grid2_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Grid2_arrowup.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ArrowUp" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\ArrowUp.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
|
<data name="Pin" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
|
<value>..\Resources\Pin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
|
</data>
|
||||||
<data name="ViewNormal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="ViewNormal" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\ViewNormal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\ViewNormal.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
|
@ -370,22 +385,13 @@
|
||||||
<data name="Text" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Text" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Text.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Text.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="TagStatistics" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\TagStatistics.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="Check" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Check" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Check.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Keyboard" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Link" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Keyboard.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Link.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Reset" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
<data name="Unlink" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
||||||
<value>..\Resources\Reset.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
<value>..\Resources\Unlink.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
||||||
</data>
|
|
||||||
<data name="Pin" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\Pin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
|
||||||
<data name="Unpin" type="System.Resources.ResXFileRef, System.Windows.Forms">
|
|
||||||
<value>..\Resources\Unpin.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
|
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
|
@ -324,11 +324,11 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
}
|
}
|
||||||
|
|
||||||
// This is to disable the automatic resize reset
|
// This is to disable the automatic resize reset
|
||||||
private static void CancelResize(object sender, CancelEventArgs e)
|
/*private static void CancelResize(object sender, CancelEventArgs e)
|
||||||
{
|
{
|
||||||
// Cancel resize event
|
// Cancel resize event
|
||||||
e.Cancel = true;
|
e.Cancel = true;
|
||||||
}
|
}*/
|
||||||
|
|
||||||
// This creates present parameters
|
// This creates present parameters
|
||||||
private PresentParameters CreatePresentParameters(int adapter)
|
private PresentParameters CreatePresentParameters(int adapter)
|
||||||
|
@ -376,10 +376,8 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
// This resets the device and returns true on success
|
// This resets the device and returns true on success
|
||||||
internal bool Reset()
|
internal bool Reset()
|
||||||
{
|
{
|
||||||
PresentParameters displaypp;
|
|
||||||
|
|
||||||
// Test the cooperative level
|
// Test the cooperative level
|
||||||
Result coopresult = device.TestCooperativeLevel();
|
//Result coopresult = device.TestCooperativeLevel();
|
||||||
|
|
||||||
// Can we reset?
|
// Can we reset?
|
||||||
//if(coopresult.Name != "D3DERR_DEVICENOTRESET")
|
//if(coopresult.Name != "D3DERR_DEVICENOTRESET")
|
||||||
|
@ -394,7 +392,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
depthbuffer = null;
|
depthbuffer = null;
|
||||||
|
|
||||||
// Make present parameters
|
// Make present parameters
|
||||||
displaypp = CreatePresentParameters(adapter);
|
PresentParameters displaypp = CreatePresentParameters(adapter);
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
|
|
|
@ -49,7 +49,7 @@ namespace CodeImp.DoomBuilder.Rendering
|
||||||
private const float THING_CIRCLE_SIZE = 1f;
|
private const float THING_CIRCLE_SIZE = 1f;
|
||||||
private const float THING_CIRCLE_SHRINK = 0f;
|
private const float THING_CIRCLE_SHRINK = 0f;
|
||||||
private const int THING_BUFFER_SIZE = 100;
|
private const int THING_BUFFER_SIZE = 100;
|
||||||
private const float THINGS_BACK_ALPHA = 0.3f;
|
//private const float THINGS_BACK_ALPHA = 0.3f;
|
||||||
|
|
||||||
private const string FONT_NAME = "Verdana";
|
private const string FONT_NAME = "Verdana";
|
||||||
private const int FONT_WIDTH = 0;
|
private const int FONT_WIDTH = 0;
|
||||||
|
|
BIN
Source/Core/Resources/Link.png
Normal file
BIN
Source/Core/Resources/Link.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 462 B |
BIN
Source/Core/Resources/Unlink.png
Normal file
BIN
Source/Core/Resources/Unlink.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 722 B |
|
@ -476,8 +476,7 @@ namespace CodeImp.DoomBuilder.VisualModes
|
||||||
protected void DoCulling()
|
protected void DoCulling()
|
||||||
{
|
{
|
||||||
Dictionary<Linedef, Linedef> visiblelines = new Dictionary<Linedef, Linedef>(200);
|
Dictionary<Linedef, Linedef> visiblelines = new Dictionary<Linedef, Linedef>(200);
|
||||||
Vector2D campos2d = (Vector2D)General.Map.VisualCamera.Position;
|
Vector2D campos2d = General.Map.VisualCamera.Position;
|
||||||
float viewdist = General.Settings.ViewDistance;
|
|
||||||
|
|
||||||
// Make collections
|
// Make collections
|
||||||
visiblesectors = new Dictionary<Sector, VisualSector>(visiblesectors.Count);
|
visiblesectors = new Dictionary<Sector, VisualSector>(visiblesectors.Count);
|
||||||
|
|
754
Source/Core/Windows/LinedefEditForm.Designer.cs
generated
754
Source/Core/Windows/LinedefEditForm.Designer.cs
generated
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -171,9 +171,6 @@
|
||||||
<metadata name="activationlabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="activationlabel.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>False</value>
|
<value>False</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<metadata name="label1.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>False</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="label7.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="label7.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>False</value>
|
<value>False</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
@ -204,9 +201,6 @@
|
||||||
<metadata name="flags.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="flags.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<metadata name="checkBox1.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="tabproperties.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="tabproperties.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
|
|
@ -52,7 +52,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
private const int MAX_RECENT_FILES_PIXELS = 250;
|
private const int MAX_RECENT_FILES_PIXELS = 250;
|
||||||
|
|
||||||
// Dockers
|
// Dockers
|
||||||
private const int DOCKER_TAB_WIDTH = 20;
|
//private const int DOCKER_TAB_WIDTH = 20;
|
||||||
|
|
||||||
// Status bar
|
// Status bar
|
||||||
private const string STATUS_READY_TEXT = "Ready.";
|
private const string STATUS_READY_TEXT = "Ready.";
|
||||||
|
@ -96,8 +96,8 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
#region ================== Delegates
|
#region ================== Delegates
|
||||||
|
|
||||||
private delegate void CallUpdateStatusIcon();
|
//private delegate void CallUpdateStatusIcon();
|
||||||
private delegate void CallImageDataLoaded(ImageData img);
|
//private delegate void CallImageDataLoaded(ImageData img);
|
||||||
private delegate void CallBlink(); //mxd
|
private delegate void CallBlink(); //mxd
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -287,9 +287,6 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// This sets up the interface
|
// This sets up the interface
|
||||||
internal void SetupInterface()
|
internal void SetupInterface()
|
||||||
{
|
{
|
||||||
float scalex = this.CurrentAutoScaleDimensions.Width / this.AutoScaleDimensions.Width;
|
|
||||||
float scaley = this.CurrentAutoScaleDimensions.Height / this.AutoScaleDimensions.Height;
|
|
||||||
|
|
||||||
// Setup docker
|
// Setup docker
|
||||||
if(General.Settings.DockersPosition != 2)
|
if(General.Settings.DockersPosition != 2)
|
||||||
{
|
{
|
||||||
|
@ -2094,9 +2091,6 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Tag set for this item?
|
// Tag set for this item?
|
||||||
if((item.Tag != null) && (item.Tag is string))
|
if((item.Tag != null) && (item.Tag is string))
|
||||||
{
|
{
|
||||||
// Get the action name
|
|
||||||
string actionname = item.Tag.ToString();
|
|
||||||
|
|
||||||
// Check if the tag doe not already begin with the assembly name
|
// Check if the tag doe not already begin with the assembly name
|
||||||
if(!(item.Tag as string).StartsWith(plugin.Name + "_", StringComparison.InvariantCultureIgnoreCase))
|
if(!(item.Tag as string).StartsWith(plugin.Name + "_", StringComparison.InvariantCultureIgnoreCase))
|
||||||
{
|
{
|
||||||
|
@ -2993,6 +2987,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Show line edit dialog
|
// Show line edit dialog
|
||||||
LinedefEditForm f = new LinedefEditForm();
|
LinedefEditForm f = new LinedefEditForm();
|
||||||
f.Setup(lines);
|
f.Setup(lines);
|
||||||
|
f.OnValuesChanged += new EventHandler(EditForm_OnValuesChanged);
|
||||||
result = f.ShowDialog(this);
|
result = f.ShowDialog(this);
|
||||||
f.Dispose();
|
f.Dispose();
|
||||||
|
|
||||||
|
@ -3030,6 +3025,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Show thing edit dialog
|
// Show thing edit dialog
|
||||||
ThingEditForm f = new ThingEditForm();
|
ThingEditForm f = new ThingEditForm();
|
||||||
f.Setup(things);
|
f.Setup(things);
|
||||||
|
f.OnValuesChanged += new EventHandler(EditForm_OnValuesChanged);
|
||||||
result = f.ShowDialog(this);
|
result = f.ShowDialog(this);
|
||||||
f.Dispose();
|
f.Dispose();
|
||||||
|
|
||||||
|
@ -3038,8 +3034,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
private void EditForm_OnValuesChanged(object sender, EventArgs e) {
|
private void EditForm_OnValuesChanged(object sender, EventArgs e) {
|
||||||
if(OnEditFormValuesChanged != null)
|
if(OnEditFormValuesChanged != null) OnEditFormValuesChanged(sender, e);
|
||||||
OnEditFormValuesChanged(sender, e);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -390,21 +390,6 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
viewdistancelabel.Text = value.ToString() + " mp";
|
viewdistancelabel.Text = value.ToString() + " mp";
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scriptfontname_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
UpdateScriptFontPreview();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void scriptfontsize_SelectedIndexChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
UpdateScriptFontPreview();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void scriptfontbold_CheckedChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
UpdateScriptFontPreview();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void autoscrollspeed_ValueChanged(object sender, EventArgs e)
|
private void autoscrollspeed_ValueChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
if(autoscrollspeed.Value == 0)
|
if(autoscrollspeed.Value == 0)
|
||||||
|
@ -704,14 +689,6 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Key combination displayed
|
|
||||||
private void actionkey_TextChanged(object sender, EventArgs e)
|
|
||||||
{
|
|
||||||
// Cursor to the end
|
|
||||||
actionkey.SelectionStart = actionkey.Text.Length;
|
|
||||||
actionkey.SelectionLength = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Special key selected
|
// Special key selected
|
||||||
private void actioncontrol_SelectedIndexChanged(object sender, EventArgs e)
|
private void actioncontrol_SelectedIndexChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -37,7 +37,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
#region ================== Variables
|
#region ================== Variables
|
||||||
|
|
||||||
private ICollection<Sector> sectors;
|
private ICollection<Sector> sectors;
|
||||||
private List<SectorProperties> sectorProps;
|
private List<SectorProperties> sectorProps; //mxd
|
||||||
private bool blockUpdate; //mxd
|
private bool blockUpdate; //mxd
|
||||||
|
|
||||||
private struct SectorProperties //mxd
|
private struct SectorProperties //mxd
|
||||||
|
@ -85,14 +85,19 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// This sets up the form to edit the given sectors
|
// This sets up the form to edit the given sectors
|
||||||
public void Setup(ICollection<Sector> sectors)
|
public void Setup(ICollection<Sector> sectors)
|
||||||
{
|
{
|
||||||
blockUpdate = true;
|
blockUpdate = true; //mxd
|
||||||
|
|
||||||
Sector sc;
|
Sector sc;
|
||||||
|
|
||||||
// Keep this list
|
// Keep this list
|
||||||
this.sectors = sectors;
|
this.sectors = sectors;
|
||||||
if(sectors.Count > 1) this.Text = "Edit Sectors (" + sectors.Count + ")";
|
if(sectors.Count > 1) this.Text = "Edit Sectors (" + sectors.Count + ")";
|
||||||
sectorProps = new List<SectorProperties>();
|
sectorProps = new List<SectorProperties>(); //mxd
|
||||||
|
|
||||||
|
//mxd. Make undo
|
||||||
|
string undodesc = "sector";
|
||||||
|
if(sectors.Count > 1) undodesc = sectors.Count + " sectors";
|
||||||
|
General.Map.UndoRedo.CreateUndo("Edit " + undodesc);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// Set all options to the first sector properties
|
// Set all options to the first sector properties
|
||||||
|
@ -142,12 +147,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Show sector height
|
// Show sector height
|
||||||
UpdateSectorHeight();
|
UpdateSectorHeight();
|
||||||
|
|
||||||
//mxd. Make undo
|
blockUpdate = false; //mxd
|
||||||
string undodesc = "sector";
|
|
||||||
if(sectors.Count > 1) undodesc = sectors.Count + " sectors";
|
|
||||||
General.Map.UndoRedo.CreateUndo("Edit " + undodesc);
|
|
||||||
|
|
||||||
blockUpdate = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// This updates the sector height field
|
// This updates the sector height field
|
||||||
|
@ -227,6 +227,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
// Done
|
// Done
|
||||||
General.Map.IsChanged = true;
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty); //mxd
|
||||||
this.DialogResult = DialogResult.OK;
|
this.DialogResult = DialogResult.OK;
|
||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
|
@ -235,7 +236,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
private void cancel_Click(object sender, EventArgs e)
|
private void cancel_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
//mxd. perform undo
|
//mxd. perform undo
|
||||||
General.Map.UndoRedo.PerformUndo();
|
General.Map.UndoRedo.WithdrawUndo();
|
||||||
|
|
||||||
// And be gone
|
// And be gone
|
||||||
this.DialogResult = DialogResult.Cancel;
|
this.DialogResult = DialogResult.Cancel;
|
||||||
|
@ -257,7 +258,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== mxd. Control Events
|
#region ================== mxd. Realtime Events
|
||||||
|
|
||||||
// Ceiling height changes
|
// Ceiling height changes
|
||||||
private void ceilingheight_TextChanged(object sender, EventArgs e)
|
private void ceilingheight_TextChanged(object sender, EventArgs e)
|
||||||
|
|
46
Source/Core/Windows/SectorEditFormUDMF.Designer.cs
generated
46
Source/Core/Windows/SectorEditFormUDMF.Designer.cs
generated
|
@ -159,6 +159,7 @@
|
||||||
this.fadeColor.Name = "fadeColor";
|
this.fadeColor.Name = "fadeColor";
|
||||||
this.fadeColor.Size = new System.Drawing.Size(207, 31);
|
this.fadeColor.Size = new System.Drawing.Size(207, 31);
|
||||||
this.fadeColor.TabIndex = 30;
|
this.fadeColor.TabIndex = 30;
|
||||||
|
this.fadeColor.OnValueChanged += new System.EventHandler(this.fadeColor_OnValueChanged);
|
||||||
//
|
//
|
||||||
// lightColor
|
// lightColor
|
||||||
//
|
//
|
||||||
|
@ -169,6 +170,7 @@
|
||||||
this.lightColor.Name = "lightColor";
|
this.lightColor.Name = "lightColor";
|
||||||
this.lightColor.Size = new System.Drawing.Size(207, 29);
|
this.lightColor.Size = new System.Drawing.Size(207, 29);
|
||||||
this.lightColor.TabIndex = 29;
|
this.lightColor.TabIndex = 29;
|
||||||
|
this.lightColor.OnValueChanged += new System.EventHandler(this.lightColor_OnValueChanged);
|
||||||
//
|
//
|
||||||
// brightness
|
// brightness
|
||||||
//
|
//
|
||||||
|
@ -182,6 +184,7 @@
|
||||||
this.brightness.Size = new System.Drawing.Size(81, 24);
|
this.brightness.Size = new System.Drawing.Size(81, 24);
|
||||||
this.brightness.StepValues = null;
|
this.brightness.StepValues = null;
|
||||||
this.brightness.TabIndex = 24;
|
this.brightness.TabIndex = 24;
|
||||||
|
this.brightness.WhenTextChanged += new System.EventHandler(this.brightness_WhenTextChanged);
|
||||||
//
|
//
|
||||||
// desaturation
|
// desaturation
|
||||||
//
|
//
|
||||||
|
@ -458,9 +461,9 @@
|
||||||
// floorAngleControl
|
// floorAngleControl
|
||||||
//
|
//
|
||||||
this.floorAngleControl.Angle = 0;
|
this.floorAngleControl.Angle = 0;
|
||||||
this.floorAngleControl.Location = new System.Drawing.Point(186, 113);
|
this.floorAngleControl.Location = new System.Drawing.Point(186, 108);
|
||||||
this.floorAngleControl.Name = "floorAngleControl";
|
this.floorAngleControl.Name = "floorAngleControl";
|
||||||
this.floorAngleControl.Size = new System.Drawing.Size(32, 32);
|
this.floorAngleControl.Size = new System.Drawing.Size(38, 38);
|
||||||
this.floorAngleControl.TabIndex = 56;
|
this.floorAngleControl.TabIndex = 56;
|
||||||
this.floorAngleControl.AngleChanged += new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl.AngleChangedDelegate(this.floorAngleControl_AngleChanged);
|
this.floorAngleControl.AngleChanged += new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl.AngleChangedDelegate(this.floorAngleControl_AngleChanged);
|
||||||
//
|
//
|
||||||
|
@ -530,9 +533,9 @@
|
||||||
this.floorLightAbsolute.Name = "floorLightAbsolute";
|
this.floorLightAbsolute.Name = "floorLightAbsolute";
|
||||||
this.floorLightAbsolute.Size = new System.Drawing.Size(69, 18);
|
this.floorLightAbsolute.Size = new System.Drawing.Size(69, 18);
|
||||||
this.floorLightAbsolute.TabIndex = 49;
|
this.floorLightAbsolute.TabIndex = 49;
|
||||||
this.floorLightAbsolute.Tag = "lightfloorabsolute";
|
|
||||||
this.floorLightAbsolute.Text = "Absolute";
|
this.floorLightAbsolute.Text = "Absolute";
|
||||||
this.floorLightAbsolute.UseVisualStyleBackColor = true;
|
this.floorLightAbsolute.UseVisualStyleBackColor = true;
|
||||||
|
this.floorLightAbsolute.CheckedChanged += new System.EventHandler(this.floorLightAbsolute_CheckedChanged);
|
||||||
//
|
//
|
||||||
// label12
|
// label12
|
||||||
//
|
//
|
||||||
|
@ -557,6 +560,7 @@
|
||||||
this.floorBrightness.StepValues = null;
|
this.floorBrightness.StepValues = null;
|
||||||
this.floorBrightness.TabIndex = 48;
|
this.floorBrightness.TabIndex = 48;
|
||||||
this.floorBrightness.Tag = "lightfloor";
|
this.floorBrightness.Tag = "lightfloor";
|
||||||
|
this.floorBrightness.WhenTextChanged += new System.EventHandler(this.floorBrightness_WhenTextChanged);
|
||||||
//
|
//
|
||||||
// floorRenderStyle
|
// floorRenderStyle
|
||||||
//
|
//
|
||||||
|
@ -573,30 +577,38 @@
|
||||||
// floorScale
|
// floorScale
|
||||||
//
|
//
|
||||||
this.floorScale.AllowDecimal = true;
|
this.floorScale.AllowDecimal = true;
|
||||||
|
this.floorScale.AllowValueLinking = true;
|
||||||
this.floorScale.ButtonStep = 1;
|
this.floorScale.ButtonStep = 1;
|
||||||
this.floorScale.ButtonStepFloat = 0.1F;
|
this.floorScale.ButtonStepFloat = 0.1F;
|
||||||
this.floorScale.DefaultValue = 1F;
|
this.floorScale.DefaultValue = 1F;
|
||||||
this.floorScale.Field1 = "xscalefloor";
|
this.floorScale.Field1 = "xscalefloor";
|
||||||
this.floorScale.Field2 = "yscalefloor";
|
this.floorScale.Field2 = "yscalefloor";
|
||||||
|
this.floorScale.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||||
this.floorScale.Label = "Texture Scale:";
|
this.floorScale.Label = "Texture Scale:";
|
||||||
|
this.floorScale.LinkValues = false;
|
||||||
this.floorScale.Location = new System.Drawing.Point(23, 51);
|
this.floorScale.Location = new System.Drawing.Point(23, 51);
|
||||||
this.floorScale.Name = "floorScale";
|
this.floorScale.Name = "floorScale";
|
||||||
this.floorScale.Size = new System.Drawing.Size(255, 28);
|
this.floorScale.Size = new System.Drawing.Size(276, 28);
|
||||||
this.floorScale.TabIndex = 17;
|
this.floorScale.TabIndex = 17;
|
||||||
|
this.floorScale.OnValuesChanged += new System.EventHandler(this.floorScale_OnValuesChanged);
|
||||||
//
|
//
|
||||||
// floorOffsets
|
// floorOffsets
|
||||||
//
|
//
|
||||||
this.floorOffsets.AllowDecimal = true;
|
this.floorOffsets.AllowDecimal = true;
|
||||||
|
this.floorOffsets.AllowValueLinking = false;
|
||||||
this.floorOffsets.ButtonStep = 1;
|
this.floorOffsets.ButtonStep = 1;
|
||||||
this.floorOffsets.ButtonStepFloat = 16F;
|
this.floorOffsets.ButtonStepFloat = 16F;
|
||||||
this.floorOffsets.DefaultValue = 0F;
|
this.floorOffsets.DefaultValue = 0F;
|
||||||
this.floorOffsets.Field1 = "xpanningfloor";
|
this.floorOffsets.Field1 = "xpanningfloor";
|
||||||
this.floorOffsets.Field2 = "ypanningfloor";
|
this.floorOffsets.Field2 = "ypanningfloor";
|
||||||
|
this.floorOffsets.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||||
this.floorOffsets.Label = "Texture Offsets:";
|
this.floorOffsets.Label = "Texture Offsets:";
|
||||||
|
this.floorOffsets.LinkValues = false;
|
||||||
this.floorOffsets.Location = new System.Drawing.Point(23, 19);
|
this.floorOffsets.Location = new System.Drawing.Point(23, 19);
|
||||||
this.floorOffsets.Name = "floorOffsets";
|
this.floorOffsets.Name = "floorOffsets";
|
||||||
this.floorOffsets.Size = new System.Drawing.Size(255, 26);
|
this.floorOffsets.Size = new System.Drawing.Size(276, 26);
|
||||||
this.floorOffsets.TabIndex = 16;
|
this.floorOffsets.TabIndex = 16;
|
||||||
|
this.floorOffsets.OnValuesChanged += new System.EventHandler(this.floorOffsets_OnValuesChanged);
|
||||||
//
|
//
|
||||||
// floortex
|
// floortex
|
||||||
//
|
//
|
||||||
|
@ -605,6 +617,7 @@
|
||||||
this.floortex.Size = new System.Drawing.Size(83, 105);
|
this.floortex.Size = new System.Drawing.Size(83, 105);
|
||||||
this.floortex.TabIndex = 15;
|
this.floortex.TabIndex = 15;
|
||||||
this.floortex.TextureName = "";
|
this.floortex.TextureName = "";
|
||||||
|
this.floortex.OnValueChanged += new System.EventHandler(this.floortex_OnValueChanged);
|
||||||
//
|
//
|
||||||
// groupBox1
|
// groupBox1
|
||||||
//
|
//
|
||||||
|
@ -633,9 +646,9 @@
|
||||||
// ceilAngleControl
|
// ceilAngleControl
|
||||||
//
|
//
|
||||||
this.ceilAngleControl.Angle = 0;
|
this.ceilAngleControl.Angle = 0;
|
||||||
this.ceilAngleControl.Location = new System.Drawing.Point(186, 113);
|
this.ceilAngleControl.Location = new System.Drawing.Point(186, 108);
|
||||||
this.ceilAngleControl.Name = "ceilAngleControl";
|
this.ceilAngleControl.Name = "ceilAngleControl";
|
||||||
this.ceilAngleControl.Size = new System.Drawing.Size(32, 32);
|
this.ceilAngleControl.Size = new System.Drawing.Size(38, 38);
|
||||||
this.ceilAngleControl.TabIndex = 55;
|
this.ceilAngleControl.TabIndex = 55;
|
||||||
this.ceilAngleControl.AngleChanged += new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl.AngleChangedDelegate(this.ceilAngleControl_AngleChanged);
|
this.ceilAngleControl.AngleChanged += new CodeImp.DoomBuilder.GZBuilder.Controls.AngleControl.AngleChangedDelegate(this.ceilAngleControl_AngleChanged);
|
||||||
//
|
//
|
||||||
|
@ -705,9 +718,10 @@
|
||||||
this.ceilLightAbsolute.Name = "ceilLightAbsolute";
|
this.ceilLightAbsolute.Name = "ceilLightAbsolute";
|
||||||
this.ceilLightAbsolute.Size = new System.Drawing.Size(69, 18);
|
this.ceilLightAbsolute.Size = new System.Drawing.Size(69, 18);
|
||||||
this.ceilLightAbsolute.TabIndex = 49;
|
this.ceilLightAbsolute.TabIndex = 49;
|
||||||
this.ceilLightAbsolute.Tag = "lightceilingabsolute";
|
this.ceilLightAbsolute.Tag = "";
|
||||||
this.ceilLightAbsolute.Text = "Absolute";
|
this.ceilLightAbsolute.Text = "Absolute";
|
||||||
this.ceilLightAbsolute.UseVisualStyleBackColor = true;
|
this.ceilLightAbsolute.UseVisualStyleBackColor = true;
|
||||||
|
this.ceilLightAbsolute.CheckedChanged += new System.EventHandler(this.ceilLightAbsolute_CheckedChanged);
|
||||||
//
|
//
|
||||||
// labelLightFront
|
// labelLightFront
|
||||||
//
|
//
|
||||||
|
@ -732,6 +746,7 @@
|
||||||
this.ceilBrightness.StepValues = null;
|
this.ceilBrightness.StepValues = null;
|
||||||
this.ceilBrightness.TabIndex = 48;
|
this.ceilBrightness.TabIndex = 48;
|
||||||
this.ceilBrightness.Tag = "lightceiling";
|
this.ceilBrightness.Tag = "lightceiling";
|
||||||
|
this.ceilBrightness.WhenTextChanged += new System.EventHandler(this.ceilBrightness_WhenTextChanged);
|
||||||
//
|
//
|
||||||
// ceilRenderStyle
|
// ceilRenderStyle
|
||||||
//
|
//
|
||||||
|
@ -748,30 +763,38 @@
|
||||||
// ceilScale
|
// ceilScale
|
||||||
//
|
//
|
||||||
this.ceilScale.AllowDecimal = true;
|
this.ceilScale.AllowDecimal = true;
|
||||||
|
this.ceilScale.AllowValueLinking = true;
|
||||||
this.ceilScale.ButtonStep = 1;
|
this.ceilScale.ButtonStep = 1;
|
||||||
this.ceilScale.ButtonStepFloat = 0.1F;
|
this.ceilScale.ButtonStepFloat = 0.1F;
|
||||||
this.ceilScale.DefaultValue = 1F;
|
this.ceilScale.DefaultValue = 1F;
|
||||||
this.ceilScale.Field1 = "xscaleceiling";
|
this.ceilScale.Field1 = "xscaleceiling";
|
||||||
this.ceilScale.Field2 = "yscaleceiling";
|
this.ceilScale.Field2 = "yscaleceiling";
|
||||||
|
this.ceilScale.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||||
this.ceilScale.Label = "Texture Scale:";
|
this.ceilScale.Label = "Texture Scale:";
|
||||||
|
this.ceilScale.LinkValues = false;
|
||||||
this.ceilScale.Location = new System.Drawing.Point(23, 51);
|
this.ceilScale.Location = new System.Drawing.Point(23, 51);
|
||||||
this.ceilScale.Name = "ceilScale";
|
this.ceilScale.Name = "ceilScale";
|
||||||
this.ceilScale.Size = new System.Drawing.Size(255, 28);
|
this.ceilScale.Size = new System.Drawing.Size(276, 28);
|
||||||
this.ceilScale.TabIndex = 17;
|
this.ceilScale.TabIndex = 17;
|
||||||
|
this.ceilScale.OnValuesChanged += new System.EventHandler(this.ceilScale_OnValuesChanged);
|
||||||
//
|
//
|
||||||
// ceilOffsets
|
// ceilOffsets
|
||||||
//
|
//
|
||||||
this.ceilOffsets.AllowDecimal = true;
|
this.ceilOffsets.AllowDecimal = true;
|
||||||
|
this.ceilOffsets.AllowValueLinking = false;
|
||||||
this.ceilOffsets.ButtonStep = 1;
|
this.ceilOffsets.ButtonStep = 1;
|
||||||
this.ceilOffsets.ButtonStepFloat = 16F;
|
this.ceilOffsets.ButtonStepFloat = 16F;
|
||||||
this.ceilOffsets.DefaultValue = 0F;
|
this.ceilOffsets.DefaultValue = 0F;
|
||||||
this.ceilOffsets.Field1 = "xpanningceiling";
|
this.ceilOffsets.Field1 = "xpanningceiling";
|
||||||
this.ceilOffsets.Field2 = "ypanningceiling";
|
this.ceilOffsets.Field2 = "ypanningceiling";
|
||||||
|
this.ceilOffsets.Font = new System.Drawing.Font("Arial", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(204)));
|
||||||
this.ceilOffsets.Label = "Texture Offsets:";
|
this.ceilOffsets.Label = "Texture Offsets:";
|
||||||
|
this.ceilOffsets.LinkValues = false;
|
||||||
this.ceilOffsets.Location = new System.Drawing.Point(23, 19);
|
this.ceilOffsets.Location = new System.Drawing.Point(23, 19);
|
||||||
this.ceilOffsets.Name = "ceilOffsets";
|
this.ceilOffsets.Name = "ceilOffsets";
|
||||||
this.ceilOffsets.Size = new System.Drawing.Size(255, 26);
|
this.ceilOffsets.Size = new System.Drawing.Size(276, 26);
|
||||||
this.ceilOffsets.TabIndex = 16;
|
this.ceilOffsets.TabIndex = 16;
|
||||||
|
this.ceilOffsets.OnValuesChanged += new System.EventHandler(this.ceilOffsets_OnValuesChanged);
|
||||||
//
|
//
|
||||||
// ceilingtex
|
// ceilingtex
|
||||||
//
|
//
|
||||||
|
@ -780,6 +803,7 @@
|
||||||
this.ceilingtex.Size = new System.Drawing.Size(83, 105);
|
this.ceilingtex.Size = new System.Drawing.Size(83, 105);
|
||||||
this.ceilingtex.TabIndex = 15;
|
this.ceilingtex.TabIndex = 15;
|
||||||
this.ceilingtex.TextureName = "";
|
this.ceilingtex.TextureName = "";
|
||||||
|
this.ceilingtex.OnValueChanged += new System.EventHandler(this.ceilingtex_OnValueChanged);
|
||||||
//
|
//
|
||||||
// tabcustom
|
// tabcustom
|
||||||
//
|
//
|
||||||
|
@ -813,6 +837,8 @@
|
||||||
this.fieldslist.TypeColumnVisible = true;
|
this.fieldslist.TypeColumnVisible = true;
|
||||||
this.fieldslist.TypeColumnWidth = 100;
|
this.fieldslist.TypeColumnWidth = 100;
|
||||||
this.fieldslist.ValueColumnVisible = true;
|
this.fieldslist.ValueColumnVisible = true;
|
||||||
|
this.fieldslist.OnFieldUndefined += new CodeImp.DoomBuilder.Controls.FieldsEditorControl.SingleFieldNameEvent(this.fieldslist_OnFieldValueChanged);
|
||||||
|
this.fieldslist.OnFieldValueChanged += new CodeImp.DoomBuilder.Controls.FieldsEditorControl.SingleFieldNameEvent(this.fieldslist_OnFieldValueChanged);
|
||||||
//
|
//
|
||||||
// cancel
|
// cancel
|
||||||
//
|
//
|
||||||
|
|
|
@ -3,7 +3,6 @@ using System.Collections.Generic;
|
||||||
using System.Windows.Forms;
|
using System.Windows.Forms;
|
||||||
using CodeImp.DoomBuilder.Map;
|
using CodeImp.DoomBuilder.Map;
|
||||||
using CodeImp.DoomBuilder.Types;
|
using CodeImp.DoomBuilder.Types;
|
||||||
using CodeImp.DoomBuilder.Rendering;
|
|
||||||
using CodeImp.DoomBuilder.GZBuilder.Tools;
|
using CodeImp.DoomBuilder.GZBuilder.Tools;
|
||||||
|
|
||||||
namespace CodeImp.DoomBuilder.Windows
|
namespace CodeImp.DoomBuilder.Windows
|
||||||
|
@ -19,6 +18,78 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
#region ================== Variables
|
#region ================== Variables
|
||||||
|
|
||||||
private ICollection<Sector> sectors;
|
private ICollection<Sector> sectors;
|
||||||
|
private List<SectorProperties> sectorProps; //mxd
|
||||||
|
private bool blockUpdate; //mxd
|
||||||
|
|
||||||
|
//Value linking
|
||||||
|
private static bool linkCeilingScale;
|
||||||
|
private static bool linkFloorScale;
|
||||||
|
|
||||||
|
private struct SectorProperties //mxd
|
||||||
|
{
|
||||||
|
public int Brightness;
|
||||||
|
public int FloorHeight;
|
||||||
|
public int CeilHeight;
|
||||||
|
public string FloorTexture;
|
||||||
|
public string CeilTexture;
|
||||||
|
|
||||||
|
//UDMF stuff
|
||||||
|
public int LightColor;
|
||||||
|
public int FadeColor;
|
||||||
|
//public float Desaturation;
|
||||||
|
|
||||||
|
//UDMF Ceiling
|
||||||
|
public float CeilOffsetX;
|
||||||
|
public float CeilOffsetY;
|
||||||
|
public float CeilScaleX;
|
||||||
|
public float CeilScaleY;
|
||||||
|
//public float CeilAlpha;
|
||||||
|
public float CeilRotation;
|
||||||
|
public int CeilBrightness;
|
||||||
|
public bool CeilLightAbsoulte;
|
||||||
|
|
||||||
|
//UDMF Floor
|
||||||
|
public float FloorOffsetX;
|
||||||
|
public float FloorOffsetY;
|
||||||
|
public float FloorScaleX;
|
||||||
|
public float FloorScaleY;
|
||||||
|
//public float FloorAlpha;
|
||||||
|
public float FloorRotation;
|
||||||
|
public int FloorBrightness;
|
||||||
|
public bool FloorLightAbsoulte;
|
||||||
|
|
||||||
|
public SectorProperties(Sector s) {
|
||||||
|
Brightness = s.Brightness;
|
||||||
|
FloorHeight = s.FloorHeight;
|
||||||
|
CeilHeight = s.CeilHeight;
|
||||||
|
FloorTexture = s.FloorTexture;
|
||||||
|
CeilTexture = s.CeilTexture;
|
||||||
|
|
||||||
|
//UDMF stuff
|
||||||
|
LightColor = UDMFTools.GetInteger(s.Fields, "lightcolor", 16777215);
|
||||||
|
FadeColor = UDMFTools.GetInteger(s.Fields, "fadecolor", 0);
|
||||||
|
|
||||||
|
//UDMF Ceiling
|
||||||
|
CeilOffsetX = UDMFTools.GetFloat(s.Fields, "xpanningceiling", 0f);
|
||||||
|
CeilOffsetY = UDMFTools.GetFloat(s.Fields, "ypanningceiling", 0f);
|
||||||
|
CeilScaleX = UDMFTools.GetFloat(s.Fields, "xscaleceiling", 1.0f);
|
||||||
|
CeilScaleY = UDMFTools.GetFloat(s.Fields, "yscaleceiling", 1.0f);
|
||||||
|
//CeilAlpha = UDMFTools.GetFloat(s.Fields, "alphaceiling", 1.0f);
|
||||||
|
CeilRotation = s.Fields.GetValue("rotationceiling", 0.0f);
|
||||||
|
CeilBrightness = s.Fields.GetValue("lightceiling", 0);
|
||||||
|
CeilLightAbsoulte = s.Fields.GetValue("lightceilingabsolute", false);
|
||||||
|
|
||||||
|
//UDMF Floor
|
||||||
|
FloorOffsetX = UDMFTools.GetFloat(s.Fields, "xpanningfloor", 0f);
|
||||||
|
FloorOffsetY = UDMFTools.GetFloat(s.Fields, "ypanningfloor", 0f);
|
||||||
|
FloorScaleX = UDMFTools.GetFloat(s.Fields, "xscalefloor", 1.0f);
|
||||||
|
FloorScaleY = UDMFTools.GetFloat(s.Fields, "yscalefloor", 1.0f);
|
||||||
|
//FloorAlpha = UDMFTools.GetFloat(s.Fields, "alphafloor", 1.0f);
|
||||||
|
FloorRotation = s.Fields.GetValue("rotationfloor", 0.0f);
|
||||||
|
FloorBrightness = s.Fields.GetValue("lightfloor", 0);
|
||||||
|
FloorLightAbsoulte = s.Fields.GetValue("lightfloorabsolute", false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -50,6 +121,10 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
// Initialize custom fields editor
|
// Initialize custom fields editor
|
||||||
fieldslist.Setup("sector");
|
fieldslist.Setup("sector");
|
||||||
|
|
||||||
|
// Value linking
|
||||||
|
ceilScale.LinkValues = linkCeilingScale;
|
||||||
|
floorScale.LinkValues = linkFloorScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -58,18 +133,24 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
// This sets up the form to edit the given sectors
|
// This sets up the form to edit the given sectors
|
||||||
public void Setup(ICollection<Sector> sectors) {
|
public void Setup(ICollection<Sector> sectors) {
|
||||||
Sector sc;
|
blockUpdate = true; //mxd
|
||||||
|
|
||||||
// Keep this list
|
// Keep this list
|
||||||
this.sectors = sectors;
|
this.sectors = sectors;
|
||||||
if(sectors.Count > 1) this.Text = "Edit Sectors (" + sectors.Count + ")";
|
if(sectors.Count > 1) this.Text = "Edit Sectors (" + sectors.Count + ")";
|
||||||
|
sectorProps = new List<SectorProperties>(); //mxd
|
||||||
|
|
||||||
|
//mxd. Make undo
|
||||||
|
string undodesc = "sector";
|
||||||
|
if(sectors.Count > 1) undodesc = sectors.Count + " sectors";
|
||||||
|
General.Map.UndoRedo.CreateUndo("Edit " + undodesc);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// Set all options to the first sector properties
|
// Set all options to the first sector properties
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
// Get first sector
|
// Get first sector
|
||||||
sc = General.GetByIndex(sectors, 0);
|
Sector sc = General.GetByIndex(sectors, 0);
|
||||||
|
|
||||||
// Flags
|
// Flags
|
||||||
foreach(CheckBox c in flags.Checkboxes)
|
foreach(CheckBox c in flags.Checkboxes)
|
||||||
|
@ -87,12 +168,12 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
//UDMF stuff
|
//UDMF stuff
|
||||||
//Texture offsets
|
//Texture offsets
|
||||||
ceilOffsets.SetValuesFrom(sc.Fields);
|
ceilOffsets.SetValuesFrom(sc.Fields, true);
|
||||||
floorOffsets.SetValuesFrom(sc.Fields);
|
floorOffsets.SetValuesFrom(sc.Fields, true);
|
||||||
|
|
||||||
//Texture scale
|
//Texture scale
|
||||||
ceilScale.SetValuesFrom(sc.Fields);
|
ceilScale.SetValuesFrom(sc.Fields, true);
|
||||||
floorScale.SetValuesFrom(sc.Fields);
|
floorScale.SetValuesFrom(sc.Fields, true);
|
||||||
|
|
||||||
//Texture rotation
|
//Texture rotation
|
||||||
float ceilAngle = sc.Fields.GetValue("rotationceiling", 0.0f);
|
float ceilAngle = sc.Fields.GetValue("rotationceiling", 0.0f);
|
||||||
|
@ -107,6 +188,8 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
//Texture brightness
|
//Texture brightness
|
||||||
ceilBrightness.Text = sc.Fields.GetValue("lightceiling", 0).ToString();
|
ceilBrightness.Text = sc.Fields.GetValue("lightceiling", 0).ToString();
|
||||||
floorBrightness.Text = sc.Fields.GetValue("lightfloor", 0).ToString();
|
floorBrightness.Text = sc.Fields.GetValue("lightfloor", 0).ToString();
|
||||||
|
ceilLightAbsolute.Checked = sc.Fields.GetValue("lightceilingabsolute", false);
|
||||||
|
floorLightAbsolute.Checked = sc.Fields.GetValue("lightfloorabsolute", false);
|
||||||
|
|
||||||
//Alpha
|
//Alpha
|
||||||
ceilAlpha.Text = General.Clamp(sc.Fields.GetValue("alphaceiling", 1.0f), 0f, 1f).ToString();
|
ceilAlpha.Text = General.Clamp(sc.Fields.GetValue("alphaceiling", 1.0f), 0f, 1f).ToString();
|
||||||
|
@ -160,12 +243,12 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
//mxd. UDMF stuff
|
//mxd. UDMF stuff
|
||||||
//Texture offsets
|
//Texture offsets
|
||||||
ceilOffsets.SetValuesFrom(s.Fields);
|
ceilOffsets.SetValuesFrom(s.Fields, false);
|
||||||
floorOffsets.SetValuesFrom(s.Fields);
|
floorOffsets.SetValuesFrom(s.Fields, false);
|
||||||
|
|
||||||
//Texture scale
|
//Texture scale
|
||||||
ceilScale.SetValuesFrom(s.Fields);
|
ceilScale.SetValuesFrom(s.Fields, false);
|
||||||
floorScale.SetValuesFrom(s.Fields);
|
floorScale.SetValuesFrom(s.Fields, false);
|
||||||
|
|
||||||
//Texture rotation
|
//Texture rotation
|
||||||
if(s.Fields.GetValue("rotationceiling", 0.0f).ToString() != ceilRotation.Text) {
|
if(s.Fields.GetValue("rotationceiling", 0.0f).ToString() != ceilRotation.Text) {
|
||||||
|
@ -179,7 +262,17 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
//Texture brightness
|
//Texture brightness
|
||||||
if(s.Fields.GetValue("lightceiling", 0).ToString() != ceilBrightness.Text) ceilBrightness.Text = "";
|
if(s.Fields.GetValue("lightceiling", 0).ToString() != ceilBrightness.Text) ceilBrightness.Text = "";
|
||||||
if(s.Fields.GetValue("lightfloor", 0).ToString() != floorBrightness.Text) floorBrightness.Text = "";
|
if(s.Fields.GetValue("lightfloor", 0).ToString() != floorBrightness.Text)
|
||||||
|
floorBrightness.Text = "";
|
||||||
|
|
||||||
|
if(s.Fields.GetValue("lightceilingabsolute", false) != ceilLightAbsolute.Checked) {
|
||||||
|
ceilLightAbsolute.ThreeState = true;
|
||||||
|
ceilLightAbsolute.CheckState = CheckState.Indeterminate;
|
||||||
|
}
|
||||||
|
if(s.Fields.GetValue("lightfloorabsolute", false) != floorLightAbsolute.Checked) {
|
||||||
|
floorLightAbsolute.ThreeState = true;
|
||||||
|
floorLightAbsolute.CheckState = CheckState.Indeterminate;
|
||||||
|
}
|
||||||
|
|
||||||
//Alpha
|
//Alpha
|
||||||
if(s.Fields.GetValue("alphaceiling", 1.0f).ToString() != ceilAlpha.Text) ceilAlpha.Text = "";
|
if(s.Fields.GetValue("alphaceiling", 1.0f).ToString() != ceilAlpha.Text) ceilAlpha.Text = "";
|
||||||
|
@ -202,11 +295,17 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
if(s.Tag != sc.Tag) tagSelector.ClearTag(); //mxd
|
if(s.Tag != sc.Tag) tagSelector.ClearTag(); //mxd
|
||||||
|
|
||||||
// Custom fields
|
// Custom fields
|
||||||
|
s.Fields.BeforeFieldsChange(); //mxd
|
||||||
fieldslist.SetValues(s.Fields, false);
|
fieldslist.SetValues(s.Fields, false);
|
||||||
|
|
||||||
|
//mxd. Store initial properties
|
||||||
|
sectorProps.Add(new SectorProperties(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show sector height
|
// Show sector height
|
||||||
UpdateSectorHeight();
|
UpdateSectorHeight();
|
||||||
|
|
||||||
|
blockUpdate = false; //mxd
|
||||||
}
|
}
|
||||||
|
|
||||||
// This updates the sector height field
|
// This updates the sector height field
|
||||||
|
@ -250,8 +349,6 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
#region ================== Events
|
#region ================== Events
|
||||||
|
|
||||||
private void apply_Click(object sender, EventArgs e) {
|
private void apply_Click(object sender, EventArgs e) {
|
||||||
string undodesc = "sector";
|
|
||||||
|
|
||||||
// Verify the tag
|
// Verify the tag
|
||||||
tagSelector.ValidateTag(); //mxd
|
tagSelector.ValidateTag(); //mxd
|
||||||
if((tagSelector.GetTag(0) < General.Map.FormatInterface.MinTag) || (tagSelector.GetTag(0) > General.Map.FormatInterface.MaxTag)) {
|
if((tagSelector.GetTag(0) < General.Map.FormatInterface.MinTag) || (tagSelector.GetTag(0) > General.Map.FormatInterface.MaxTag)) {
|
||||||
|
@ -265,10 +362,6 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make undo
|
|
||||||
if(sectors.Count > 1) undodesc = sectors.Count + " sectors";
|
|
||||||
General.Map.UndoRedo.CreateUndo("Edit " + undodesc);
|
|
||||||
|
|
||||||
// Go for all sectors
|
// Go for all sectors
|
||||||
foreach(Sector s in sectors) {
|
foreach(Sector s in sectors) {
|
||||||
// Apply all flags
|
// Apply all flags
|
||||||
|
@ -281,44 +374,17 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
if(!effect.Empty) s.Effect = effect.Value;
|
if(!effect.Empty) s.Effect = effect.Value;
|
||||||
s.Brightness = General.Clamp(brightness.GetResult(s.Brightness), General.Map.FormatInterface.MinBrightness, General.Map.FormatInterface.MaxBrightness);
|
s.Brightness = General.Clamp(brightness.GetResult(s.Brightness), General.Map.FormatInterface.MinBrightness, General.Map.FormatInterface.MaxBrightness);
|
||||||
|
|
||||||
// Floor/Ceiling
|
|
||||||
s.FloorHeight = floorheight.GetResult(s.FloorHeight);
|
|
||||||
s.CeilHeight = ceilingheight.GetResult(s.CeilHeight);
|
|
||||||
s.SetFloorTexture(floortex.GetResult(s.FloorTexture));
|
|
||||||
s.SetCeilTexture(ceilingtex.GetResult(s.CeilTexture));
|
|
||||||
|
|
||||||
// Action
|
// Action
|
||||||
s.Tag = tagSelector.GetTag(s.Tag); //mxd
|
s.Tag = tagSelector.GetTag(s.Tag); //mxd
|
||||||
|
|
||||||
// Custom fields
|
|
||||||
fieldslist.Apply(s.Fields);
|
|
||||||
|
|
||||||
//mxd. UDMF stuff
|
|
||||||
ceilOffsets.ApplyTo(s.Fields, General.Map.FormatInterface.MinTextureOffset, General.Map.FormatInterface.MaxTextureOffset);
|
|
||||||
floorOffsets.ApplyTo(s.Fields, General.Map.FormatInterface.MinTextureOffset, General.Map.FormatInterface.MaxTextureOffset);
|
|
||||||
|
|
||||||
ceilScale.ApplyTo(s.Fields, General.Map.FormatInterface.MinTextureOffset, General.Map.FormatInterface.MaxTextureOffset);
|
|
||||||
floorScale.ApplyTo(s.Fields, General.Map.FormatInterface.MinTextureOffset, General.Map.FormatInterface.MaxTextureOffset);
|
|
||||||
|
|
||||||
//rotation
|
|
||||||
if(ceilRotation.Text != ""){
|
|
||||||
float angle = General.ClampAngle(ceilRotation.GetResultFloat(0f));
|
|
||||||
UDMFTools.SetFloat(s.Fields, "rotationceiling", angle, 0f, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(floorRotation.Text != "") {
|
|
||||||
float angle = General.ClampAngle(floorRotation.GetResultFloat(0f));
|
|
||||||
UDMFTools.SetFloat(s.Fields, "rotationfloor", angle, 0f, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//alpha
|
//alpha
|
||||||
if(ceilAlpha.Text != "") {
|
if(!string.IsNullOrEmpty(ceilAlpha.Text)) {
|
||||||
float ceilAlphaVal = General.Clamp(ceilAlpha.GetResultFloat(1.0f), 0f, 1f);
|
float ceilAlphaVal = General.Clamp(ceilAlpha.GetResultFloat(s.Fields.GetValue("alphaceiling", 1.0f)), 0f, 1f);
|
||||||
UDMFTools.SetFloat(s.Fields, "alphaceiling", ceilAlphaVal, 1.0f, false);
|
UDMFTools.SetFloat(s.Fields, "alphaceiling", ceilAlphaVal, 1.0f, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(floorAlpha.Text != ""){
|
if(!string.IsNullOrEmpty(floorAlpha.Text)){
|
||||||
float floorAlphaVal = General.Clamp(floorAlpha.GetResultFloat(1.0f), 0f, 1f);
|
float floorAlphaVal = General.Clamp(floorAlpha.GetResultFloat(s.Fields.GetValue("alphafloor", 1.0f)), 0f, 1f);
|
||||||
UDMFTools.SetFloat(s.Fields, "alphafloor", floorAlphaVal, 1.0f, false);
|
UDMFTools.SetFloat(s.Fields, "alphafloor", floorAlphaVal, 1.0f, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -335,30 +401,12 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
s.Fields.Remove("renderstylefloor");
|
s.Fields.Remove("renderstylefloor");
|
||||||
}
|
}
|
||||||
|
|
||||||
//brightness
|
|
||||||
if(!string.IsNullOrEmpty(ceilBrightness.Text)) {
|
|
||||||
string key = ceilBrightness.Tag.ToString();
|
|
||||||
bool absolute = (ceilLightAbsolute.CheckState == CheckState.Checked);
|
|
||||||
int value = General.Clamp(ceilBrightness.GetResult(UDMFTools.GetInteger(s.Fields, key, 0)), (absolute ? 0 : -255), 255);
|
|
||||||
UDMFTools.SetInteger(s.Fields, key, value, 0, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!string.IsNullOrEmpty(floorBrightness.Text)) {
|
|
||||||
string key = floorBrightness.Tag.ToString();
|
|
||||||
bool absolute = (floorLightAbsolute.CheckState == CheckState.Checked);
|
|
||||||
int value = General.Clamp(floorBrightness.GetResult(UDMFTools.GetInteger(s.Fields, key, 0)), (absolute ? 0 : -255), 255);
|
|
||||||
UDMFTools.SetInteger(s.Fields, key, value, 0, false);
|
|
||||||
}
|
|
||||||
|
|
||||||
//Sector colors
|
|
||||||
fadeColor.ApplyTo(s.Fields);
|
|
||||||
lightColor.ApplyTo(s.Fields);
|
|
||||||
|
|
||||||
//misc
|
//misc
|
||||||
if(soundSequence.Text != "") s.Fields["soundsequence"] = new UniValue(UniversalType.String, soundSequence.Text);
|
if(soundSequence.Text != "") s.Fields["soundsequence"] = new UniValue(UniversalType.String, soundSequence.Text);
|
||||||
if(gravity.Text != "") UDMFTools.SetFloat(s.Fields, "alphafloor", gravity.GetResultFloat(1.0f), 1.0f, false);
|
if(gravity.Text != "")
|
||||||
|
UDMFTools.SetFloat(s.Fields, "gravity", gravity.GetResultFloat(s.Fields.GetValue("gravity", 1.0f)), 1.0f, false);
|
||||||
if(desaturation.Text != "") {
|
if(desaturation.Text != "") {
|
||||||
float val = General.Clamp(desaturation.GetResultFloat(0f), 0f, 1f);
|
float val = General.Clamp(desaturation.GetResultFloat(s.Fields.GetValue("desaturation", 0f)), 0f, 1f);
|
||||||
UDMFTools.SetFloat(s.Fields, "desaturation", val, 0f, false);
|
UDMFTools.SetFloat(s.Fields, "desaturation", val, 0f, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -366,17 +414,21 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Update the used textures
|
// Update the used textures
|
||||||
General.Map.Data.UpdateUsedTextures();
|
General.Map.Data.UpdateUsedTextures();
|
||||||
|
|
||||||
|
// Store value linking
|
||||||
|
linkCeilingScale = ceilScale.LinkValues;
|
||||||
|
linkFloorScale = floorScale.LinkValues;
|
||||||
|
|
||||||
// Done
|
// Done
|
||||||
General.Map.IsChanged = true;
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty); //mxd
|
||||||
//dbg
|
|
||||||
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
|
||||||
|
|
||||||
this.DialogResult = DialogResult.OK;
|
this.DialogResult = DialogResult.OK;
|
||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cancel_Click(object sender, EventArgs e) {
|
private void cancel_Click(object sender, EventArgs e) {
|
||||||
|
//mxd. Let's pretend nothing of this really happened...
|
||||||
|
General.Map.UndoRedo.WithdrawUndo();
|
||||||
|
|
||||||
// Be gone
|
// Be gone
|
||||||
this.DialogResult = DialogResult.Cancel;
|
this.DialogResult = DialogResult.Cancel;
|
||||||
this.Close();
|
this.Close();
|
||||||
|
@ -386,14 +438,6 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
effect.Value = EffectBrowserForm.BrowseEffect(this, effect.Value);
|
effect.Value = EffectBrowserForm.BrowseEffect(this, effect.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ceilingheight_WhenTextChanged(object sender, EventArgs e) {
|
|
||||||
UpdateSectorHeight();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void floorheight_WhenTextChanged(object sender, EventArgs e) {
|
|
||||||
UpdateSectorHeight();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void SectorEditFormUDMF_HelpRequested(object sender, HelpEventArgs hlpevent) {
|
private void SectorEditFormUDMF_HelpRequested(object sender, HelpEventArgs hlpevent) {
|
||||||
General.ShowHelp("w_sectoredit.html");
|
General.ShowHelp("w_sectoredit.html");
|
||||||
hlpevent.Handled = true;
|
hlpevent.Handled = true;
|
||||||
|
@ -411,14 +455,493 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
floorRotation.Text = (General.ClampAngle(360 - floorAngleControl.Angle)).ToString();
|
floorRotation.Text = (General.ClampAngle(360 - floorAngleControl.Angle)).ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region mxd. Sector Realtime events
|
||||||
|
|
||||||
|
private void ceilingheight_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
UpdateSectorHeight();
|
||||||
|
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(ceilingheight.Text)) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.CeilHeight = sectorProps[i++].CeilHeight;
|
||||||
|
//update values
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.CeilHeight = ceilingheight.GetResult(s.CeilHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void floorheight_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
UpdateSectorHeight();
|
||||||
|
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(floorheight.Text)) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.FloorHeight = sectorProps[i++].FloorHeight;
|
||||||
|
//update values
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.FloorHeight = floorheight.GetResult(s.FloorHeight);
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void brightness_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(brightness.Text)) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.Brightness = sectorProps[i++].Brightness;
|
||||||
|
//update values
|
||||||
|
} else {
|
||||||
|
//clamp value?
|
||||||
|
int val = brightness.GetResult(0);
|
||||||
|
int clampedVal = General.Clamp(val, 0, 255);
|
||||||
|
if(val != clampedVal) {
|
||||||
|
brightness.Text = clampedVal.ToString();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.Brightness = General.Clamp(brightness.GetResult(s.Brightness), General.Map.FormatInterface.MinBrightness, General.Map.FormatInterface.MaxBrightness);
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ceilingtex_OnValueChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(ceilingtex.TextureName)) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.SetCeilTexture(sectorProps[i++].CeilTexture);
|
||||||
|
//update values
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.SetCeilTexture(ceilingtex.GetResult(s.CeilTexture));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the used textures
|
||||||
|
General.Map.Data.UpdateUsedTextures();
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void floortex_OnValueChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(floortex.TextureName)) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.SetFloorTexture(sectorProps[i++].FloorTexture);
|
||||||
|
//update values
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors)
|
||||||
|
s.SetFloorTexture(floortex.GetResult(s.FloorTexture));
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update the used textures
|
||||||
|
General.Map.Data.UpdateUsedTextures();
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
private void floorRotation_WhenTextChanged(object sender, EventArgs e) {
|
private void floorRotation_WhenTextChanged(object sender, EventArgs e) {
|
||||||
floorAngleControl.Angle = General.ClampAngle(360 - floorRotation.GetResult(0));
|
floorAngleControl.Angle = General.ClampAngle(360 - floorRotation.GetResult(0));
|
||||||
|
|
||||||
|
if(blockUpdate) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(floorRotation.Text)) {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
UDMFTools.SetFloat(s.Fields, "rotationfloor", sectorProps[i++].FloorRotation, 0f, false);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
//update values
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
UDMFTools.SetFloat(s.Fields, "rotationfloor", floorRotation.GetResult((int)sectorProps[i++].FloorRotation), 0f, false);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void ceilRotation_WhenTextChanged(object sender, EventArgs e) {
|
private void ceilRotation_WhenTextChanged(object sender, EventArgs e) {
|
||||||
ceilAngleControl.Angle = General.ClampAngle(360 - ceilRotation.GetResult(0));
|
ceilAngleControl.Angle = General.ClampAngle(360 - ceilRotation.GetResult(0));
|
||||||
|
|
||||||
|
if(blockUpdate) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(ceilRotation.Text)) {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
UDMFTools.SetFloat(s.Fields, "rotationceiling", sectorProps[i++].CeilRotation, 0f, false);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
//update values
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
UDMFTools.SetFloat(s.Fields, "rotationceiling", ceilRotation.GetResult((int)sectorProps[i++].CeilRotation), 0f, false);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fieldslist_OnFieldValueChanged(string fieldname) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
Sector sc = null;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
fieldslist.Apply(s.Fields);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
if(sc == null) sc = s;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(sc == null) return;
|
||||||
|
|
||||||
|
//update interface... yaaaay...
|
||||||
|
switch(fieldname) {
|
||||||
|
case "xpanningfloor":
|
||||||
|
case "ypanningfloor":
|
||||||
|
floorOffsets.SetValuesFrom(sc.Fields, true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "xpanningceiling":
|
||||||
|
case "ypanningceiling":
|
||||||
|
ceilOffsets.SetValuesFrom(sc.Fields, true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "xscalefloor":
|
||||||
|
case "yscalefloor":
|
||||||
|
floorScale.SetValuesFrom(sc.Fields, true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "xscaleceiling":
|
||||||
|
case "yscaleceiling":
|
||||||
|
ceilScale.SetValuesFrom(sc.Fields, true);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "rotationceiling":
|
||||||
|
ceilRotation.Text = sc.Fields.GetValue("rotationceiling", 0f).ToString();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "rotationfloor":
|
||||||
|
floorRotation.Text = sc.Fields.GetValue("rotationfloor", 0f).ToString();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "lightfloor":
|
||||||
|
floorBrightness.Text = sc.Fields.GetValue("lightfloor", 0).ToString();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "lightceiling":
|
||||||
|
ceilBrightness.Text = sc.Fields.GetValue("lightceiling", 0).ToString();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "lightfloorabsolute":
|
||||||
|
floorLightAbsolute.Checked = sc.Fields.GetValue("lightfloorabsolute", false);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "lightceilingabsolute":
|
||||||
|
ceilLightAbsolute.Checked = sc.Fields.GetValue("lightceilingabsolute", false);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "alphafloor":
|
||||||
|
floorAlpha.Text = sc.Fields.GetValue("alphafloor", 1.0f).ToString();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "alphaceiling":
|
||||||
|
floorAlpha.Text = sc.Fields.GetValue("alphaceiling", 1.0f).ToString();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "gravity":
|
||||||
|
gravity.Text = sc.Fields.GetValue("gravity", 1.0f).ToString();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "desaturation":
|
||||||
|
desaturation.Text = sc.Fields.GetValue("desaturation", 0f).ToString();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "lightcolor":
|
||||||
|
lightColor.SetValueFrom(sc.Fields);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "fadecolor":
|
||||||
|
fadeColor.SetValueFrom(sc.Fields);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "renderstylefloor":
|
||||||
|
string rsf = sc.Fields.GetValue("renderstylefloor", string.Empty);
|
||||||
|
|
||||||
|
if(string.IsNullOrEmpty(rsf) || rsf.ToLower() == "translucent") {
|
||||||
|
floorRenderStyle.SelectedIndex = 0;
|
||||||
|
} else {
|
||||||
|
floorRenderStyle.SelectedIndex = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "renderstyleceiling":
|
||||||
|
string rsc = sc.Fields.GetValue("renderstyleceiling", string.Empty);
|
||||||
|
|
||||||
|
if(string.IsNullOrEmpty(rsc) || rsc.ToLower() == "translucent") {
|
||||||
|
ceilRenderStyle.SelectedIndex = 0;
|
||||||
|
} else {
|
||||||
|
ceilRenderStyle.SelectedIndex = 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "soundsequence":
|
||||||
|
soundSequence.Text = sc.Fields.GetValue("soundsequence", string.Empty);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void lightColor_OnValueChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
lightColor.ApplyTo(s.Fields, sectorProps[i++].LightColor);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void fadeColor_OnValueChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
fadeColor.ApplyTo(s.Fields, sectorProps[i++].FadeColor);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region mxd. Ceiling/Floor realtime events
|
||||||
|
|
||||||
|
private void ceilOffsets_OnValuesChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
ceilOffsets.ApplyTo(s.Fields, General.Map.FormatInterface.MinTextureOffset, General.Map.FormatInterface.MaxTextureOffset, sectorProps[i].CeilOffsetX, sectorProps[i++].CeilOffsetY);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void floorOffsets_OnValuesChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
floorOffsets.ApplyTo(s.Fields, General.Map.FormatInterface.MinTextureOffset, General.Map.FormatInterface.MaxTextureOffset, sectorProps[i].FloorOffsetX, sectorProps[i++].FloorOffsetY);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ceilScale_OnValuesChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
ceilScale.ApplyTo(s.Fields, General.Map.FormatInterface.MinTextureOffset, General.Map.FormatInterface.MaxTextureOffset, sectorProps[i].CeilScaleX, sectorProps[i++].CeilScaleY);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void floorScale_OnValuesChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
floorScale.ApplyTo(s.Fields, General.Map.FormatInterface.MinTextureOffset, General.Map.FormatInterface.MaxTextureOffset, sectorProps[i].FloorScaleX, sectorProps[i++].FloorScaleY);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ceilBrightness_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(ceilBrightness.Text)) {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
UDMFTools.SetInteger(s.Fields, "lightceiling", sectorProps[i++].CeilBrightness, 0, false);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
//update values
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
bool absolute = false;
|
||||||
|
if(ceilLightAbsolute.CheckState == CheckState.Indeterminate) {
|
||||||
|
absolute = s.Fields.GetValue("lightceilingabsolute", false);
|
||||||
|
} else if(ceilLightAbsolute.CheckState == CheckState.Checked) {
|
||||||
|
absolute = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int value = General.Clamp(ceilBrightness.GetResult(sectorProps[i++].CeilBrightness), (absolute ? 0 : -255), 255);
|
||||||
|
UDMFTools.SetInteger(s.Fields, "lightceiling", value, 0, false);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void floorBrightness_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(floorBrightness.Text)) {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
UDMFTools.SetInteger(s.Fields, "lightfloor", sectorProps[i++].FloorBrightness, 0, false);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
//update values
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
bool absolute = false;
|
||||||
|
if(floorLightAbsolute.CheckState == CheckState.Indeterminate) {
|
||||||
|
absolute = s.Fields.GetValue("lightfloorabsolute", false);
|
||||||
|
} else if(floorLightAbsolute.CheckState == CheckState.Checked) {
|
||||||
|
absolute = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int value = General.Clamp(floorBrightness.GetResult(sectorProps[i++].FloorBrightness), (absolute ? 0 : -255), 255);
|
||||||
|
UDMFTools.SetInteger(s.Fields, "lightfloor", value, 0, false);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void ceilLightAbsolute_CheckedChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
if(ceilLightAbsolute.Checked) {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
s.Fields["lightceilingabsolute"] = new UniValue(UniversalType.Boolean, true);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
} else if(ceilLightAbsolute.CheckState == CheckState.Indeterminate) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
if(sectorProps[i].CeilLightAbsoulte) {
|
||||||
|
s.Fields["lightceilingabsolute"] = new UniValue(UniversalType.Boolean, true);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}else if(s.Fields.ContainsKey("lightceilingabsolute")) {
|
||||||
|
s.Fields.Remove("lightceilingabsolute");
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
if(s.Fields.ContainsKey("lightceilingabsolute")) {
|
||||||
|
s.Fields.Remove("lightceilingabsolute");
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void floorLightAbsolute_CheckedChanged(object sender, EventArgs e) {
|
||||||
|
if(blockUpdate) return;
|
||||||
|
|
||||||
|
if(floorLightAbsolute.Checked){
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
s.Fields["lightfloorabsolute"] = new UniValue(UniversalType.Boolean, true);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
} else if(floorLightAbsolute.CheckState == CheckState.Indeterminate) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
if(sectorProps[i].FloorLightAbsoulte) {
|
||||||
|
s.Fields["lightfloorabsolute"] = new UniValue(UniversalType.Boolean, true);
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
} else if(s.Fields.ContainsKey("lightfloorabsolute")) {
|
||||||
|
s.Fields.Remove("lightfloorabsolute");
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
foreach(Sector s in sectors) {
|
||||||
|
if(s.Fields.ContainsKey("lightfloorabsolute")) {
|
||||||
|
s.Fields.Remove("lightfloorabsolute");
|
||||||
|
s.UpdateNeeded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -147,6 +147,12 @@
|
||||||
<metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>False</value>
|
<value>False</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="label6.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>False</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="label5.GenerateMember" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>False</value>
|
||||||
|
</metadata>
|
||||||
<metadata name="tabproperties.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="tabproperties.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
@ -156,4 +162,7 @@
|
||||||
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
|
@ -659,8 +659,8 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Fields
|
// Fields
|
||||||
private const string blueColorScheme = "NormalColor";
|
private const string blueColorScheme = "NormalColor";
|
||||||
private const string oliveColorScheme = "HomeStead";
|
private const string oliveColorScheme = "HomeStead";
|
||||||
private const string silverColorScheme = "Metallic";
|
//private const string silverColorScheme = "Metallic";
|
||||||
private Dictionary<TanColorTable.KnownColors, Color> tanRGB;
|
private Dictionary<KnownColors, Color> tanRGB;
|
||||||
|
|
||||||
// Nested Types
|
// Nested Types
|
||||||
private static class DisplayInformation
|
private static class DisplayInformation
|
||||||
|
@ -668,21 +668,21 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Methods
|
// Methods
|
||||||
static DisplayInformation()
|
static DisplayInformation()
|
||||||
{
|
{
|
||||||
SystemEvents.UserPreferenceChanged += TanColorTable.DisplayInformation.OnUserPreferenceChanged;
|
SystemEvents.UserPreferenceChanged += OnUserPreferenceChanged;
|
||||||
TanColorTable.DisplayInformation.SetScheme();
|
SetScheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void OnUserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
|
private static void OnUserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e)
|
||||||
{
|
{
|
||||||
TanColorTable.DisplayInformation.SetScheme();
|
SetScheme();
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetScheme()
|
private static void SetScheme()
|
||||||
{
|
{
|
||||||
TanColorTable.DisplayInformation.isLunaTheme = false;
|
isLunaTheme = false;
|
||||||
if(VisualStyleRenderer.IsSupported)
|
if(VisualStyleRenderer.IsSupported)
|
||||||
{
|
{
|
||||||
DisplayInformation.colorScheme = VisualStyleInformation.ColorScheme;
|
colorScheme = VisualStyleInformation.ColorScheme;
|
||||||
|
|
||||||
if(!VisualStyleInformation.IsEnabledByUser)
|
if(!VisualStyleInformation.IsEnabledByUser)
|
||||||
{
|
{
|
||||||
|
@ -691,11 +691,11 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
StringBuilder builder1 = new StringBuilder(0x200);
|
StringBuilder builder1 = new StringBuilder(0x200);
|
||||||
GetCurrentThemeName(builder1, builder1.Capacity, null, 0, null, 0);
|
GetCurrentThemeName(builder1, builder1.Capacity, null, 0, null, 0);
|
||||||
string text1 = builder1.ToString();
|
string text1 = builder1.ToString();
|
||||||
TanColorTable.DisplayInformation.isLunaTheme = string.Equals(lunaFileName, Path.GetFileName(text1), StringComparison.InvariantCultureIgnoreCase);
|
isLunaTheme = string.Equals(lunaFileName, Path.GetFileName(text1), StringComparison.InvariantCultureIgnoreCase);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
TanColorTable.DisplayInformation.colorScheme = null;
|
colorScheme = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
3
Source/Core/Windows/ThingEditForm.Designer.cs
generated
3
Source/Core/Windows/ThingEditForm.Designer.cs
generated
|
@ -186,6 +186,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
this.posX.Size = new System.Drawing.Size(72, 24);
|
this.posX.Size = new System.Drawing.Size(72, 24);
|
||||||
this.posX.StepValues = null;
|
this.posX.StepValues = null;
|
||||||
this.posX.TabIndex = 13;
|
this.posX.TabIndex = 13;
|
||||||
|
this.posX.WhenTextChanged += new System.EventHandler(this.posX_WhenTextChanged);
|
||||||
//
|
//
|
||||||
// posY
|
// posY
|
||||||
//
|
//
|
||||||
|
@ -199,6 +200,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
this.posY.Size = new System.Drawing.Size(72, 24);
|
this.posY.Size = new System.Drawing.Size(72, 24);
|
||||||
this.posY.StepValues = null;
|
this.posY.StepValues = null;
|
||||||
this.posY.TabIndex = 12;
|
this.posY.TabIndex = 12;
|
||||||
|
this.posY.WhenTextChanged += new System.EventHandler(this.posY_WhenTextChanged);
|
||||||
//
|
//
|
||||||
// posZ
|
// posZ
|
||||||
//
|
//
|
||||||
|
@ -212,6 +214,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
this.posZ.Size = new System.Drawing.Size(72, 24);
|
this.posZ.Size = new System.Drawing.Size(72, 24);
|
||||||
this.posZ.StepValues = null;
|
this.posZ.StepValues = null;
|
||||||
this.posZ.TabIndex = 11;
|
this.posZ.TabIndex = 11;
|
||||||
|
this.posZ.WhenTextChanged += new System.EventHandler(this.posZ_WhenTextChanged);
|
||||||
//
|
//
|
||||||
// angle
|
// angle
|
||||||
//
|
//
|
||||||
|
|
|
@ -35,6 +35,12 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal partial class ThingEditForm : DelayedForm
|
internal partial class ThingEditForm : DelayedForm
|
||||||
{
|
{
|
||||||
|
#region ================== Events
|
||||||
|
|
||||||
|
public event EventHandler OnValuesChanged; //mxd
|
||||||
|
|
||||||
|
#endregion
|
||||||
|
|
||||||
#region ================== Variables
|
#region ================== Variables
|
||||||
|
|
||||||
private ICollection<Thing> things;
|
private ICollection<Thing> things;
|
||||||
|
@ -43,11 +49,26 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
//mxd
|
//mxd
|
||||||
private Vector3D initialPosition; //initial position of a thing used to fill posX, posY and posZ fields
|
private Vector3D initialPosition; //initial position of a thing used to fill posX, posY and posZ fields
|
||||||
private int initialFloorHeight; //floor height of the sector first thing is in
|
private int initialFloorHeight; //floor height of the sector first thing is in
|
||||||
private static bool ABSOLUTE_HEIGHT;
|
private static bool useAbsoluteHeight;
|
||||||
|
|
||||||
#endregion
|
private List<ThingProperties> thingProps; //mxd
|
||||||
|
|
||||||
#region ================== Properties
|
private struct ThingProperties //mxd
|
||||||
|
{
|
||||||
|
public int Type;
|
||||||
|
public int AngleDoom;
|
||||||
|
public float X;
|
||||||
|
public float Y;
|
||||||
|
public float Z;
|
||||||
|
|
||||||
|
public ThingProperties(Thing t) {
|
||||||
|
X = t.Position.x;
|
||||||
|
Y = t.Position.y;
|
||||||
|
Z = t.Position.z;
|
||||||
|
Type = t.Type;
|
||||||
|
AngleDoom = t.AngleDoom;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -85,6 +106,13 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
posZ.Visible = General.Map.FormatInterface.HasThingHeight;
|
posZ.Visible = General.Map.FormatInterface.HasThingHeight;
|
||||||
zlabel.Visible = General.Map.FormatInterface.HasThingHeight;
|
zlabel.Visible = General.Map.FormatInterface.HasThingHeight;
|
||||||
cbAbsoluteHeight.Visible = General.Map.FormatInterface.HasThingHeight; //mxd
|
cbAbsoluteHeight.Visible = General.Map.FormatInterface.HasThingHeight; //mxd
|
||||||
|
|
||||||
|
//mxd. Decimals allowed?
|
||||||
|
if(General.Map.FormatInterface.VertexDecimals > 0) {
|
||||||
|
posX.AllowDecimal = true;
|
||||||
|
posY.AllowDecimal = true;
|
||||||
|
posZ.AllowDecimal = true;
|
||||||
|
}
|
||||||
|
|
||||||
// Setup types list
|
// Setup types list
|
||||||
thingtype.Setup();
|
thingtype.Setup();
|
||||||
|
@ -100,6 +128,11 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Keep this list
|
// Keep this list
|
||||||
this.things = things;
|
this.things = things;
|
||||||
if(things.Count > 1) this.Text = "Edit Things (" + things.Count + ")";
|
if(things.Count > 1) this.Text = "Edit Things (" + things.Count + ")";
|
||||||
|
|
||||||
|
//mxd. Make undo
|
||||||
|
string undodesc = "thing";
|
||||||
|
if(things.Count > 1) undodesc = things.Count + " things";
|
||||||
|
General.Map.UndoRedo.CreateUndo("Edit " + undodesc);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// Set all options to the first thing properties
|
// Set all options to the first thing properties
|
||||||
|
@ -116,8 +149,8 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
// Coordination
|
// Coordination
|
||||||
angle.Text = ft.AngleDoom.ToString();
|
angle.Text = ft.AngleDoom.ToString();
|
||||||
zlabel.Text = ABSOLUTE_HEIGHT ? "Z:" : "Height:"; //mxd
|
zlabel.Text = useAbsoluteHeight ? "Z:" : "Height:"; //mxd
|
||||||
cbAbsoluteHeight.Checked = ABSOLUTE_HEIGHT; //mxd
|
cbAbsoluteHeight.Checked = useAbsoluteHeight; //mxd
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
initialPosition = ft.Position;
|
initialPosition = ft.Position;
|
||||||
|
@ -125,7 +158,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
initialFloorHeight = ft.Sector.FloorHeight;
|
initialFloorHeight = ft.Sector.FloorHeight;
|
||||||
posX.Text = ((int)ft.Position.x).ToString();
|
posX.Text = ((int)ft.Position.x).ToString();
|
||||||
posY.Text = ((int)ft.Position.y).ToString();
|
posY.Text = ((int)ft.Position.y).ToString();
|
||||||
posZ.Text = ABSOLUTE_HEIGHT ? ((int)ft.Position.z + initialFloorHeight).ToString() : ((int)ft.Position.z).ToString();
|
posZ.Text = useAbsoluteHeight ? ((int)ft.Position.z + initialFloorHeight).ToString() : ((int)ft.Position.z).ToString();
|
||||||
posX.ButtonStep = General.Map.Grid.GridSize;
|
posX.ButtonStep = General.Map.Grid.GridSize;
|
||||||
posY.ButtonStep = General.Map.Grid.GridSize;
|
posY.ButtonStep = General.Map.Grid.GridSize;
|
||||||
posZ.ButtonStep = General.Map.Grid.GridSize;
|
posZ.ButtonStep = General.Map.Grid.GridSize;
|
||||||
|
@ -152,7 +185,9 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// Now go for all lines and change the options when a setting is different
|
// Now go for all lines and change the options when a setting is different
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
|
||||||
|
thingProps = new List<ThingProperties>();
|
||||||
|
|
||||||
// Go for all things
|
// Go for all things
|
||||||
foreach(Thing t in things)
|
foreach(Thing t in things)
|
||||||
{
|
{
|
||||||
|
@ -179,7 +214,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
if(t.AngleDoom.ToString() != angle.Text) angle.Text = "";
|
if(t.AngleDoom.ToString() != angle.Text) angle.Text = "";
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
if (ABSOLUTE_HEIGHT && t.Sector != null) {
|
if (useAbsoluteHeight && t.Sector != null) {
|
||||||
if(((int)t.Position.z + t.Sector.FloorHeight).ToString() != posZ.Text) posZ.Text = "";
|
if(((int)t.Position.z + t.Sector.FloorHeight).ToString() != posZ.Text) posZ.Text = "";
|
||||||
} else {
|
} else {
|
||||||
if(((int)t.Position.z).ToString() != posZ.Text) posZ.Text = "";
|
if(((int)t.Position.z).ToString() != posZ.Text) posZ.Text = "";
|
||||||
|
@ -196,8 +231,12 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
if(t.Args[4] != arg4.GetResult(-1)) arg4.ClearValue();
|
if(t.Args[4] != arg4.GetResult(-1)) arg4.ClearValue();
|
||||||
|
|
||||||
// Custom fields
|
// Custom fields
|
||||||
|
t.Fields.BeforeFieldsChange(); //mxd
|
||||||
fieldslist.SetValues(t.Fields, false);
|
fieldslist.SetValues(t.Fields, false);
|
||||||
|
|
||||||
|
//mxd. Store initial properties
|
||||||
|
thingProps.Add(new ThingProperties(t));
|
||||||
|
|
||||||
//mxd. add user vars
|
//mxd. add user vars
|
||||||
/*if(info != null && info.Actor != null && info.Actor.UserVars.Count > 0) {
|
/*if(info != null && info.Actor != null && info.Actor.UserVars.Count > 0) {
|
||||||
foreach(string s in info.Actor.UserVars) {
|
foreach(string s in info.Actor.UserVars) {
|
||||||
|
@ -257,38 +296,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== Interface
|
#region ================== Events
|
||||||
|
|
||||||
// Selected type changes
|
|
||||||
private void thingtype_OnTypeChanged(ThingTypeInfo value)
|
|
||||||
{
|
|
||||||
thinginfo = value;
|
|
||||||
|
|
||||||
// Update preview image
|
|
||||||
if(thinginfo != null)
|
|
||||||
{
|
|
||||||
if(thinginfo.Sprite.ToLowerInvariant().StartsWith(DataManager.INTERNAL_PREFIX) &&
|
|
||||||
(thinginfo.Sprite.Length > DataManager.INTERNAL_PREFIX.Length))
|
|
||||||
{
|
|
||||||
General.DisplayZoomedImage(spritetex, General.Map.Data.GetSpriteImage(thinginfo.Sprite).GetBitmap());
|
|
||||||
}
|
|
||||||
else if((thinginfo.Sprite.Length <= 8) && (thinginfo.Sprite.Length > 0))
|
|
||||||
{
|
|
||||||
General.DisplayZoomedImage(spritetex, General.Map.Data.GetSpriteImage(thinginfo.Sprite).GetPreview());
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
spritetex.BackgroundImage = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
spritetex.BackgroundImage = null;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Update arguments
|
|
||||||
action_ValueChanges(this, EventArgs.Empty);
|
|
||||||
}
|
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
private void thingtype_OnTypeDoubleClicked() {
|
private void thingtype_OnTypeDoubleClicked() {
|
||||||
|
@ -370,19 +378,20 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
private void angle_TextChanged(object sender, EventArgs e)
|
private void angle_TextChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
anglecontrol.Value = angle.GetResult(int.MinValue);
|
anglecontrol.Value = angle.GetResult(int.MinValue);
|
||||||
|
updateAngle(); //mxd
|
||||||
}
|
}
|
||||||
|
|
||||||
// Angle control clicked
|
// Angle control clicked
|
||||||
private void anglecontrol_ButtonClicked(object sender, EventArgs e)
|
private void anglecontrol_ButtonClicked(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
angle.Text = anglecontrol.Value.ToString();
|
angle.Text = anglecontrol.Value.ToString();
|
||||||
|
updateAngle(); //mxd
|
||||||
}
|
}
|
||||||
|
|
||||||
// Apply clicked
|
// Apply clicked
|
||||||
private void apply_Click(object sender, EventArgs e)
|
private void apply_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
List<string> defaultflags = new List<string>();
|
List<string> defaultflags = new List<string>();
|
||||||
string undodesc = "thing";
|
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
// Verify the tag
|
// Verify the tag
|
||||||
|
@ -409,34 +418,25 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Make undo
|
|
||||||
if(things.Count > 1) undodesc = things.Count + " things";
|
|
||||||
General.Map.UndoRedo.CreateUndo("Edit " + undodesc);
|
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
Vector2D delta = new Vector2D((float)posX.GetResult((int)initialPosition.x) - initialPosition.x, (float)posY.GetResult((int)initialPosition.y) - initialPosition.y);
|
|
||||||
bool hasAcs = Array.IndexOf(GZBuilder.GZGeneral.ACS_SPECIALS, action.Value) != -1;
|
bool hasAcs = Array.IndexOf(GZBuilder.GZGeneral.ACS_SPECIALS, action.Value) != -1;
|
||||||
bool hasArg0str = General.Map.UDMF && !action.Empty && hasAcs && arg0str.Text.Length > 0;
|
bool hasArg0str = General.Map.UDMF && !action.Empty && hasAcs && arg0str.Text.Length > 0;
|
||||||
|
|
||||||
// Go for all the things
|
// Go for all the things
|
||||||
foreach(Thing t in things)
|
foreach(Thing t in things)
|
||||||
{
|
{
|
||||||
// Thing type index
|
|
||||||
t.Type = General.Clamp(thingtype.GetResult(t.Type), General.Map.FormatInterface.MinThingType, General.Map.FormatInterface.MaxThingType);
|
|
||||||
|
|
||||||
// Coordination
|
// Coordination
|
||||||
//mxd
|
//mxd
|
||||||
if(cbRandomAngle.Checked) {
|
if(cbRandomAngle.Checked) {
|
||||||
t.Rotate(General.Random(0, 359));
|
t.Rotate(General.Random(0, 359));
|
||||||
} else {
|
|
||||||
t.Rotate(angle.GetResult(t.AngleDoom));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd
|
//mxd. Check position
|
||||||
float z = (float)posZ.GetResult((int)t.Position.z);
|
float px = General.Clamp(t.Position.x, General.Map.Config.LeftBoundary, General.Map.Config.RightBoundary);
|
||||||
if (ABSOLUTE_HEIGHT && t.Sector != null)
|
float py = General.Clamp(t.Position.y, General.Map.Config.BottomBoundary, General.Map.Config.TopBoundary);
|
||||||
z -= t.Sector.FloorHeight;
|
if(t.Position.x != px || t.Position.y != py)
|
||||||
t.Move(t.Position.x + delta.x, t.Position.y + delta.y, z);
|
t.Move(new Vector2D(px, py));
|
||||||
|
|
||||||
|
|
||||||
// Apply all flags
|
// Apply all flags
|
||||||
foreach(CheckBox c in flags.Checkboxes)
|
foreach(CheckBox c in flags.Checkboxes)
|
||||||
|
@ -489,6 +489,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
// Done
|
// Done
|
||||||
General.Map.IsChanged = true;
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty); //mxd
|
||||||
this.DialogResult = DialogResult.OK;
|
this.DialogResult = DialogResult.OK;
|
||||||
this.Close();
|
this.Close();
|
||||||
}
|
}
|
||||||
|
@ -496,6 +497,9 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// Cancel clicked
|
// Cancel clicked
|
||||||
private void cancel_Click(object sender, EventArgs e)
|
private void cancel_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
//mxd. perform undo
|
||||||
|
General.Map.UndoRedo.WithdrawUndo();
|
||||||
|
|
||||||
// Be gone
|
// Be gone
|
||||||
this.DialogResult = DialogResult.Cancel;
|
this.DialogResult = DialogResult.Cancel;
|
||||||
this.Close();
|
this.Close();
|
||||||
|
@ -527,9 +531,9 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
private void cbAbsoluteHeight_CheckedChanged(object sender, EventArgs e) {
|
private void cbAbsoluteHeight_CheckedChanged(object sender, EventArgs e) {
|
||||||
ABSOLUTE_HEIGHT = cbAbsoluteHeight.Checked;
|
useAbsoluteHeight = cbAbsoluteHeight.Checked;
|
||||||
zlabel.Text = ABSOLUTE_HEIGHT ? "Z:" : "Height:";
|
zlabel.Text = useAbsoluteHeight ? "Z:" : "Height:";
|
||||||
posZ.Text = (ABSOLUTE_HEIGHT ? initialFloorHeight + initialPosition.z : initialPosition.z).ToString();
|
posZ.Text = (useAbsoluteHeight ? initialFloorHeight + initialPosition.z : initialPosition.z).ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd
|
//mxd
|
||||||
|
@ -552,5 +556,134 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region ================== mxd. Realtime events
|
||||||
|
|
||||||
|
private void posX_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
if(preventchanges) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(posX.Text)) {
|
||||||
|
// Apply position
|
||||||
|
foreach(Thing t in things)
|
||||||
|
t.Move(new Vector2D(thingProps[i++].X, t.Position.y));
|
||||||
|
} else { //update values
|
||||||
|
int delta = posX.GetResult((int)initialPosition.x) - (int)initialPosition.x;
|
||||||
|
|
||||||
|
// Apply position
|
||||||
|
foreach(Thing t in things)
|
||||||
|
t.Move(new Vector2D(thingProps[i++].X + delta, t.Position.y));
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void posY_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
if(preventchanges) return;
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(posY.Text)) {
|
||||||
|
// Apply position
|
||||||
|
foreach(Thing t in things)
|
||||||
|
t.Move(new Vector2D(t.Position.x, thingProps[i++].Y));
|
||||||
|
} else { //update values
|
||||||
|
int delta = posY.GetResult((int)initialPosition.y) - (int)initialPosition.y;
|
||||||
|
|
||||||
|
// Apply position
|
||||||
|
foreach(Thing t in things)
|
||||||
|
t.Move(new Vector2D(t.Position.x, thingProps[i++].Y + delta));
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void posZ_WhenTextChanged(object sender, EventArgs e) {
|
||||||
|
if(preventchanges) return;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(posY.Text)) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
// Apply position
|
||||||
|
foreach(Thing t in things)
|
||||||
|
t.Move(new Vector3D(t.Position.x, t.Position.y, thingProps[i++].Z));
|
||||||
|
} else { //update values
|
||||||
|
// Apply position
|
||||||
|
foreach(Thing t in things) {
|
||||||
|
float z = (float)posZ.GetResult((int)t.Position.z);
|
||||||
|
if(useAbsoluteHeight && t.Sector != null)
|
||||||
|
z -= t.Sector.FloorHeight;
|
||||||
|
t.Move(new Vector3D(t.Position.x, t.Position.y, z));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Selected type changes
|
||||||
|
private void thingtype_OnTypeChanged(ThingTypeInfo value) {
|
||||||
|
thinginfo = value;
|
||||||
|
|
||||||
|
// Update preview image
|
||||||
|
if(thinginfo != null) {
|
||||||
|
if(thinginfo.Sprite.ToLowerInvariant().StartsWith(DataManager.INTERNAL_PREFIX) &&
|
||||||
|
(thinginfo.Sprite.Length > DataManager.INTERNAL_PREFIX.Length)) {
|
||||||
|
General.DisplayZoomedImage(spritetex, General.Map.Data.GetSpriteImage(thinginfo.Sprite).GetBitmap());
|
||||||
|
} else if((thinginfo.Sprite.Length <= 8) && (thinginfo.Sprite.Length > 0)) {
|
||||||
|
General.DisplayZoomedImage(spritetex, General.Map.Data.GetSpriteImage(thinginfo.Sprite).GetPreview());
|
||||||
|
} else {
|
||||||
|
spritetex.BackgroundImage = null;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
spritetex.BackgroundImage = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update arguments
|
||||||
|
action_ValueChanges(this, EventArgs.Empty);
|
||||||
|
|
||||||
|
//mxd. Update things
|
||||||
|
if(preventchanges) return;
|
||||||
|
if(((thingtype.GetResult(0) < General.Map.FormatInterface.MinThingType) || (thingtype.GetResult(0) > General.Map.FormatInterface.MaxThingType)))
|
||||||
|
return;
|
||||||
|
|
||||||
|
foreach(Thing t in things) {
|
||||||
|
//Set type
|
||||||
|
t.Type = thingtype.GetResult(t.Type);
|
||||||
|
|
||||||
|
// Update settings
|
||||||
|
t.UpdateConfiguration();
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
private void updateAngle() {
|
||||||
|
if(preventchanges) return;
|
||||||
|
|
||||||
|
//restore values
|
||||||
|
if(string.IsNullOrEmpty(angle.Text)) {
|
||||||
|
int i = 0;
|
||||||
|
|
||||||
|
// Apply rotation
|
||||||
|
foreach(Thing t in things)
|
||||||
|
t.Rotate(thingProps[i++].AngleDoom);
|
||||||
|
} else { //update values
|
||||||
|
// Apply rotation
|
||||||
|
foreach(Thing t in things)
|
||||||
|
t.Rotate(angle.GetResult(t.AngleDoom));
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -138,9 +138,36 @@
|
||||||
<metadata name="actiongroup.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="actiongroup.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="groupBox3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="tabcustom.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="actiongroup.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
<metadata name="hexenpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="hexenpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="doompanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="hexenpanel.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="arg1label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="arg0label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
|
<metadata name="arg2label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>True</value>
|
||||||
|
</metadata>
|
||||||
<metadata name="arg1label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="arg1label.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
@ -156,9 +183,6 @@
|
||||||
<metadata name="groupBox3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="groupBox3.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<metadata name="tabcustom.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
|
||||||
<value>True</value>
|
|
||||||
</metadata>
|
|
||||||
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="fieldslist.Locked" type="System.Boolean, mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
|
|
@ -60,7 +60,6 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
ZCeiling = v.ZCeiling;
|
ZCeiling = v.ZCeiling;
|
||||||
ZFloor = v.ZFloor;
|
ZFloor = v.ZFloor;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -110,6 +109,11 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
if(vertices.Count > 1) this.Text = "Edit Vertices (" + vertices.Count + ")";
|
if(vertices.Count > 1) this.Text = "Edit Vertices (" + vertices.Count + ")";
|
||||||
vertexProps = new List<VertexProperties>(); //mxd
|
vertexProps = new List<VertexProperties>(); //mxd
|
||||||
|
|
||||||
|
//mxd. Make undo
|
||||||
|
string undodesc = "vertex";
|
||||||
|
if(vertices.Count > 1) undodesc = vertices.Count + " vertices";
|
||||||
|
General.Map.UndoRedo.CreateUndo("Edit " + undodesc);
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
// Set all options to the first vertex properties
|
// Set all options to the first vertex properties
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -161,17 +165,12 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd. Make undo
|
|
||||||
string undodesc = "vertex";
|
|
||||||
if(vertices.Count > 1) undodesc = vertices.Count + " vertices";
|
|
||||||
General.Map.UndoRedo.CreateUndo("Edit " + undodesc);
|
|
||||||
|
|
||||||
blockUpdate = false; //mxd
|
blockUpdate = false; //mxd
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
#region ================== mxd. Control Events
|
#region ================== mxd. Realtime Events
|
||||||
|
|
||||||
private void positionx_WhenTextChanged(object sender, EventArgs e) {
|
private void positionx_WhenTextChanged(object sender, EventArgs e) {
|
||||||
if(blockUpdate) return;
|
if(blockUpdate) return;
|
||||||
|
@ -306,6 +305,9 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
// OK clicked
|
// OK clicked
|
||||||
private void apply_Click(object sender, EventArgs e)
|
private void apply_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
|
General.Map.IsChanged = true;
|
||||||
|
if(OnValuesChanged != null) OnValuesChanged(this, EventArgs.Empty);
|
||||||
|
|
||||||
// Done
|
// Done
|
||||||
this.DialogResult = DialogResult.OK;
|
this.DialogResult = DialogResult.OK;
|
||||||
this.Close();
|
this.Close();
|
||||||
|
@ -315,7 +317,7 @@ namespace CodeImp.DoomBuilder.Windows
|
||||||
private void cancel_Click(object sender, EventArgs e)
|
private void cancel_Click(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
//mxd. perform undo
|
//mxd. perform undo
|
||||||
General.Map.UndoRedo.PerformUndo();
|
General.Map.UndoRedo.WithdrawUndo();
|
||||||
|
|
||||||
// And close
|
// And close
|
||||||
this.DialogResult = DialogResult.Cancel;
|
this.DialogResult = DialogResult.Cancel;
|
||||||
|
|
|
@ -633,6 +633,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
{
|
{
|
||||||
General.Map.Map.ClearSelectedSectors();
|
General.Map.Map.ClearSelectedSectors();
|
||||||
General.Map.Map.ClearSelectedLinedefs();
|
General.Map.Map.ClearSelectedLinedefs();
|
||||||
|
General.Interface.RedrawDisplay();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -408,17 +408,16 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
// Edit only when preferred
|
// Edit only when preferred
|
||||||
if(!thinginserted || BuilderPlug.Me.EditNewThing)
|
if(!thinginserted || BuilderPlug.Me.EditNewThing)
|
||||||
{
|
{
|
||||||
// Show thing edit dialog
|
//mxd. Show realtime thing edit dialog
|
||||||
|
General.Interface.OnEditFormValuesChanged += new EventHandler(thingEditForm_OnValuesChanged);
|
||||||
General.Interface.ShowEditThings(selected);
|
General.Interface.ShowEditThings(selected);
|
||||||
|
General.Interface.OnEditFormValuesChanged -= thingEditForm_OnValuesChanged;
|
||||||
|
|
||||||
// When a single thing was selected, deselect it now
|
// When a single thing was selected, deselect it now
|
||||||
if(selected.Count == 1) General.Map.Map.ClearSelectedThings();
|
if(selected.Count == 1) {
|
||||||
|
General.Map.Map.ClearSelectedThings();
|
||||||
// Update things filter
|
General.Interface.RedrawDisplay();
|
||||||
General.Map.ThingsFilter.Update();
|
}
|
||||||
|
|
||||||
// Update entire display
|
|
||||||
General.Interface.RedrawDisplay();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -430,6 +429,15 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
base.OnEditEnd();
|
base.OnEditEnd();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
private void thingEditForm_OnValuesChanged(object sender, EventArgs e) {
|
||||||
|
// Update things filter
|
||||||
|
General.Map.ThingsFilter.Update();
|
||||||
|
|
||||||
|
// Update entire display
|
||||||
|
General.Interface.RedrawDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
// Mouse moves
|
// Mouse moves
|
||||||
public override void OnMouseMove(MouseEventArgs e)
|
public override void OnMouseMove(MouseEventArgs e)
|
||||||
{
|
{
|
||||||
|
|
|
@ -410,7 +410,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
General.Interface.OnEditFormValuesChanged -= vertexEditForm_OnValuesChanged;
|
General.Interface.OnEditFormValuesChanged -= vertexEditForm_OnValuesChanged;
|
||||||
|
|
||||||
// When a single vertex was selected, deselect it now
|
// When a single vertex was selected, deselect it now
|
||||||
if(selected.Count == 1) General.Map.Map.ClearSelectedVertices();
|
if(selected.Count == 1) {
|
||||||
|
General.Map.Map.ClearSelectedVertices();
|
||||||
|
General.Interface.RedrawDisplay();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -649,12 +649,14 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
General.Interface.OnEditFormValuesChanged += new System.EventHandler(Interface_OnEditFormValuesChanged);
|
General.Interface.OnEditFormValuesChanged += new System.EventHandler(Interface_OnEditFormValuesChanged); //mxd
|
||||||
|
mode.StartRealtimeInterfaceUpdate(SelectionType.Sectors); //mxd
|
||||||
General.Interface.ShowEditSectors(sectors);
|
General.Interface.ShowEditSectors(sectors);
|
||||||
General.Interface.OnEditFormValuesChanged -= Interface_OnEditFormValuesChanged;
|
mode.StopRealtimeInterfaceUpdate(SelectionType.Sectors); //mxd
|
||||||
|
General.Interface.OnEditFormValuesChanged -= Interface_OnEditFormValuesChanged; //mxd
|
||||||
|
|
||||||
updateList.Clear();
|
updateList.Clear(); //mxd
|
||||||
updateList = null;
|
updateList = null; //mxd
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,6 +60,8 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
private int prevoffsetx; // We have to provide delta offsets, but I don't
|
private int prevoffsetx; // We have to provide delta offsets, but I don't
|
||||||
private int prevoffsety; // want to calculate with delta offsets to prevent
|
private int prevoffsety; // want to calculate with delta offsets to prevent
|
||||||
// inaccuracy in the dragging.
|
// inaccuracy in the dragging.
|
||||||
|
private static List<BaseVisualSector> updateList; //mxd
|
||||||
|
|
||||||
// Undo/redo
|
// Undo/redo
|
||||||
private int undoticket;
|
private int undoticket;
|
||||||
|
|
||||||
|
@ -946,27 +948,37 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
if(General.Interface.IsActiveWindow)
|
if(General.Interface.IsActiveWindow)
|
||||||
{
|
{
|
||||||
List<Linedef> linedefs = mode.GetSelectedLinedefs();
|
List<Linedef> linedefs = mode.GetSelectedLinedefs();
|
||||||
|
updateList = new List<BaseVisualSector>(); //mxd
|
||||||
|
foreach(Linedef l in linedefs) {
|
||||||
|
if(l.Front != null && mode.VisualSectorExists(l.Front.Sector))
|
||||||
|
updateList.Add((BaseVisualSector)mode.GetVisualSector(l.Front.Sector));
|
||||||
|
if(l.Back != null && mode.VisualSectorExists(l.Back.Sector))
|
||||||
|
updateList.Add((BaseVisualSector)mode.GetVisualSector(l.Back.Sector));
|
||||||
|
}
|
||||||
|
|
||||||
|
General.Interface.OnEditFormValuesChanged += new System.EventHandler(Interface_OnEditFormValuesChanged);
|
||||||
|
mode.StartRealtimeInterfaceUpdate(SelectionType.Linedefs);
|
||||||
DialogResult result = General.Interface.ShowEditLinedefs(linedefs);
|
DialogResult result = General.Interface.ShowEditLinedefs(linedefs);
|
||||||
|
mode.StopRealtimeInterfaceUpdate(SelectionType.Linedefs);
|
||||||
|
General.Interface.OnEditFormValuesChanged -= Interface_OnEditFormValuesChanged;
|
||||||
|
|
||||||
|
updateList.Clear();
|
||||||
|
updateList = null;
|
||||||
|
|
||||||
if(result == DialogResult.OK)
|
if(result == DialogResult.OK)
|
||||||
{
|
{
|
||||||
foreach(Linedef l in linedefs)
|
foreach(Linedef l in linedefs)
|
||||||
{
|
{
|
||||||
if(l.Front != null)
|
if(l.Front != null && mode.VisualSectorExists(l.Front.Sector))
|
||||||
{
|
{
|
||||||
if(mode.VisualSectorExists(l.Front.Sector))
|
BaseVisualSector vs = (BaseVisualSector)mode.GetVisualSector(l.Front.Sector);
|
||||||
{
|
vs.UpdateSectorGeometry(false);
|
||||||
BaseVisualSector vs = (BaseVisualSector)mode.GetVisualSector(l.Front.Sector);
|
|
||||||
vs.UpdateSectorGeometry(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if(l.Back != null)
|
if(l.Back != null && mode.VisualSectorExists(l.Back.Sector))
|
||||||
{
|
{
|
||||||
if(mode.VisualSectorExists(l.Back.Sector))
|
BaseVisualSector vs = (BaseVisualSector)mode.GetVisualSector(l.Back.Sector);
|
||||||
{
|
vs.UpdateSectorGeometry(false);
|
||||||
BaseVisualSector vs = (BaseVisualSector)mode.GetVisualSector(l.Back.Sector);
|
|
||||||
vs.UpdateSectorGeometry(false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -974,6 +986,12 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
private void Interface_OnEditFormValuesChanged(object sender, System.EventArgs e) {
|
||||||
|
foreach(BaseVisualSector vs in updateList)
|
||||||
|
vs.UpdateSectorGeometry(false);
|
||||||
|
}
|
||||||
|
|
||||||
// Mouse moves
|
// Mouse moves
|
||||||
public virtual void OnMouseMove(MouseEventArgs e)
|
public virtual void OnMouseMove(MouseEventArgs e)
|
||||||
|
|
|
@ -684,6 +684,24 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
|
|
||||||
General.Interface.DisplayStatus(StatusType.Selection, result);
|
General.Interface.DisplayStatus(StatusType.Selection, result);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
internal void StartRealtimeInterfaceUpdate(SelectionType selectionType) {
|
||||||
|
if(selectionType == SelectionType.Sectors || selectionType == SelectionType.Linedefs || selectionType == SelectionType.All) {
|
||||||
|
General.Interface.OnEditFormValuesChanged += new EventHandler(Interface_OnSectorEditFormValuesChanged);
|
||||||
|
} else {
|
||||||
|
General.Interface.OnEditFormValuesChanged += new EventHandler(Interface_OnEditFormValuesChanged);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
internal void StopRealtimeInterfaceUpdate(SelectionType selectionType) {
|
||||||
|
if(selectionType == SelectionType.Sectors || selectionType == SelectionType.Linedefs || selectionType == SelectionType.All) {
|
||||||
|
General.Interface.OnEditFormValuesChanged -= Interface_OnSectorEditFormValuesChanged;
|
||||||
|
} else {
|
||||||
|
General.Interface.OnEditFormValuesChanged -= Interface_OnEditFormValuesChanged;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -1303,6 +1321,35 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
//mxd
|
//mxd
|
||||||
updateSelectionInfo();
|
updateSelectionInfo();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
private void Interface_OnSectorEditFormValuesChanged(object sender, EventArgs e) {
|
||||||
|
if(allsectors == null) return;
|
||||||
|
|
||||||
|
// Reset changed flags
|
||||||
|
foreach(KeyValuePair<Sector, VisualSector> vs in allsectors) {
|
||||||
|
BaseVisualSector bvs = (vs.Value as BaseVisualSector);
|
||||||
|
foreach(VisualFloor vf in bvs.ExtraFloors)
|
||||||
|
vf.Changed = false;
|
||||||
|
foreach(VisualCeiling vc in bvs.ExtraCeilings)
|
||||||
|
vc.Changed = false;
|
||||||
|
foreach(VisualFloor vf in bvs.ExtraBackFloors)
|
||||||
|
vf.Changed = false;
|
||||||
|
foreach(VisualCeiling vc in bvs.ExtraBackCeilings)
|
||||||
|
vc.Changed = false;
|
||||||
|
bvs.Floor.Changed = false;
|
||||||
|
bvs.Ceiling.Changed = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateChangedObjects();
|
||||||
|
ShowTargetInfo();
|
||||||
|
}
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
private void Interface_OnEditFormValuesChanged(object sender, EventArgs e) {
|
||||||
|
UpdateChangedObjects();
|
||||||
|
ShowTargetInfo();
|
||||||
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
@ -1713,37 +1760,10 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
public void EndEdit()
|
public void EndEdit()
|
||||||
{
|
{
|
||||||
PreActionNoChange();
|
PreActionNoChange();
|
||||||
|
|
||||||
//mxd
|
|
||||||
General.Interface.OnEditFormValuesChanged += new EventHandler(Interface_OnEditFormValuesChanged);
|
|
||||||
|
|
||||||
GetTargetEventReceiver(false).OnEditEnd();
|
GetTargetEventReceiver(false).OnEditEnd();
|
||||||
PostAction();
|
PostAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
//mxd
|
|
||||||
private void Interface_OnEditFormValuesChanged(object sender, EventArgs e) {
|
|
||||||
if(allsectors == null) return;
|
|
||||||
|
|
||||||
// Reset changed flags
|
|
||||||
foreach(KeyValuePair<Sector, VisualSector> vs in allsectors) {
|
|
||||||
BaseVisualSector bvs = (vs.Value as BaseVisualSector);
|
|
||||||
foreach(VisualFloor vf in bvs.ExtraFloors)
|
|
||||||
vf.Changed = false;
|
|
||||||
foreach(VisualCeiling vc in bvs.ExtraCeilings)
|
|
||||||
vc.Changed = false;
|
|
||||||
foreach(VisualFloor vf in bvs.ExtraBackFloors)
|
|
||||||
vf.Changed = false;
|
|
||||||
foreach(VisualCeiling vc in bvs.ExtraBackCeilings)
|
|
||||||
vc.Changed = false;
|
|
||||||
bvs.Floor.Changed = false;
|
|
||||||
bvs.Ceiling.Changed = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
UpdateChangedObjects();
|
|
||||||
ShowTargetInfo();
|
|
||||||
}
|
|
||||||
|
|
||||||
[BeginAction("raisesector8")]
|
[BeginAction("raisesector8")]
|
||||||
public void RaiseSector8()
|
public void RaiseSector8()
|
||||||
{
|
{
|
||||||
|
|
|
@ -48,6 +48,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
private Vector2D pos2d;
|
private Vector2D pos2d;
|
||||||
private Vector3D boxp1;
|
private Vector3D boxp1;
|
||||||
private Vector3D boxp2;
|
private Vector3D boxp2;
|
||||||
|
private static List<BaseVisualThing> updateList; //mxd
|
||||||
|
|
||||||
// Undo/redo
|
// Undo/redo
|
||||||
private int undoticket;
|
private int undoticket;
|
||||||
|
@ -510,19 +511,32 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
{
|
{
|
||||||
if(General.Interface.IsActiveWindow)
|
if(General.Interface.IsActiveWindow)
|
||||||
{
|
{
|
||||||
|
|
||||||
List<Thing> things = mode.GetSelectedThings();
|
List<Thing> things = mode.GetSelectedThings();
|
||||||
DialogResult result = General.Interface.ShowEditThings(things);
|
//mxd
|
||||||
if(result == DialogResult.OK)
|
updateList = new List<BaseVisualThing>();
|
||||||
{
|
foreach(Thing t in things) {
|
||||||
foreach(Thing t in things)
|
VisualThing vt = mode.GetVisualThing(t);
|
||||||
{
|
if(vt != null)
|
||||||
VisualThing vt = mode.GetVisualThing(t);
|
updateList.Add(vt as BaseVisualThing);
|
||||||
if(vt != null)
|
|
||||||
(vt as BaseVisualThing).Changed = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
General.Interface.OnEditFormValuesChanged += new System.EventHandler(Interface_OnEditFormValuesChanged);
|
||||||
|
mode.StartRealtimeInterfaceUpdate(SelectionType.Things);
|
||||||
|
General.Interface.ShowEditThings(things);
|
||||||
|
mode.StopRealtimeInterfaceUpdate(SelectionType.Things);
|
||||||
|
General.Interface.OnEditFormValuesChanged -= Interface_OnEditFormValuesChanged;
|
||||||
|
|
||||||
|
updateList.Clear();
|
||||||
|
updateList = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//mxd
|
||||||
|
private void Interface_OnEditFormValuesChanged(object sender, System.EventArgs e) {
|
||||||
|
foreach(BaseVisualThing vt in updateList)
|
||||||
|
vt.Changed = true;
|
||||||
|
}
|
||||||
|
|
||||||
// Raise/lower thing
|
// Raise/lower thing
|
||||||
public virtual void OnChangeTargetHeight(int amount)
|
public virtual void OnChangeTargetHeight(int amount)
|
||||||
|
|
|
@ -305,7 +305,9 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
}
|
}
|
||||||
|
|
||||||
General.Interface.OnEditFormValuesChanged += new System.EventHandler(Interface_OnEditFormValuesChanged);
|
General.Interface.OnEditFormValuesChanged += new System.EventHandler(Interface_OnEditFormValuesChanged);
|
||||||
|
mode.StartRealtimeInterfaceUpdate(SelectionType.Vertices);
|
||||||
General.Interface.ShowEditVertices(verts, false);
|
General.Interface.ShowEditVertices(verts, false);
|
||||||
|
mode.StopRealtimeInterfaceUpdate(SelectionType.Vertices);
|
||||||
General.Interface.OnEditFormValuesChanged -= Interface_OnEditFormValuesChanged;
|
General.Interface.OnEditFormValuesChanged -= Interface_OnEditFormValuesChanged;
|
||||||
|
|
||||||
updateList.Clear();
|
updateList.Clear();
|
||||||
|
|
|
@ -173,10 +173,7 @@ namespace CodeImp.DoomBuilder.BuilderModes
|
||||||
CropPoly(ref poly, osd.Floor.plane, true);
|
CropPoly(ref poly, osd.Floor.plane, true);
|
||||||
|
|
||||||
// Determine if we should repeat the middle texture
|
// Determine if we should repeat the middle texture
|
||||||
if(Sidedef.Fields.ContainsKey("wrapmidtex"))
|
repeatmidtex = Sidedef.IsFlagSet("wrapmidtex") || Sidedef.Line.IsFlagSet("wrapmidtex"); //mxd
|
||||||
repeatmidtex = Sidedef.Fields.GetValue("wrapmidtex", false);
|
|
||||||
else
|
|
||||||
repeatmidtex = Sidedef.Line.IsFlagSet("wrapmidtex");
|
|
||||||
|
|
||||||
if(!repeatmidtex) {
|
if(!repeatmidtex) {
|
||||||
// First determine the visible portion of the texture
|
// First determine the visible portion of the texture
|
||||||
|
|
Loading…
Reference in a new issue