UltimateZoneBuilder/Source/Core/Controls/SectorInfoPanel.cs

251 lines
7 KiB
C#
Raw Normal View History

#region ================== Copyright (c) 2007 Pascal vd Heiden
/*
* Copyright (c) 2007 Pascal vd Heiden, www.codeimp.com
* This program is released under GNU General Public License
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
*/
#endregion
#region ================== Namespaces
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;
using System.Diagnostics;
using CodeImp.DoomBuilder.Data;
using CodeImp.DoomBuilder.Map;
#endregion
namespace CodeImp.DoomBuilder.Controls
{
internal partial class SectorInfoPanel : UserControl
{
private int fullWidth; //mxd
// Constructor
public SectorInfoPanel()
{
// Initialize
InitializeComponent();
fullWidth = floorpanel.Width; //mxd
}
// This shows the info
public void ShowInfo(Sector s)
{
string effectinfo = "";
int sheight = s.CeilHeight - s.FloorHeight;
// Lookup effect description in config
if(General.Map.Config.SectorEffects.ContainsKey(s.Effect))
effectinfo = General.Map.Config.SectorEffects[s.Effect].ToString();
else if(s.Effect == 0)
effectinfo = s.Effect.ToString() + " - Normal";
else
effectinfo = s.Effect.ToString() + " - Unknown";
// Sector info
sectorinfo.Text = " Sector " + s.Index + " ";
effect.Text = effectinfo;
ceiling.Text = s.CeilHeight.ToString();
floor.Text = s.FloorHeight.ToString();
tag.Text = s.Tag.ToString();
height.Text = sheight.ToString();
brightness.Text = s.Brightness.ToString();
floorname.Text = s.FloorTexture;
ceilingname.Text = s.CeilTexture;
General.DisplayZoomedImage(floortex, General.Map.Data.GetFlatImage(s.FloorTexture).GetPreview());
General.DisplayZoomedImage(ceilingtex, General.Map.Data.GetFlatImage(s.CeilTexture).GetPreview());
//mxd
bool showExtededFloorInfo = false;
bool showExtededCeilingInfo = false;
if(General.Map.UDMF && s.Fields != null) {
//light
if(s.Fields.ContainsKey("lightceiling")) {
showExtededCeilingInfo = true;
ceilingLight.Enabled = true;
ceilingLightLabel.Enabled = true;
ceilingLight.Text = s.Fields["lightceiling"].Value.ToString();
if(s.Fields.ContainsKey("lightceilingabsolute") && Boolean.Parse(s.Fields["lightceilingabsolute"].Value.ToString()))
ceilingLight.Text += " (abs.)";
} else {
ceilingLight.Text = "--";
ceilingLight.Enabled = false;
ceilingLightLabel.Enabled = false;
}
if(s.Fields.ContainsKey("lightfloor")) {
showExtededFloorInfo = true;
floorLight.Enabled = true;
floorLightLabel.Enabled = true;
floorLight.Text = s.Fields["lightfloor"].Value.ToString();
if(s.Fields.ContainsKey("lightfloorabsolute") && Boolean.Parse(s.Fields["lightfloorabsolute"].Value.ToString()))
floorLight.Text += " (abs.)";
} else {
floorLight.Text = "--";
floorLight.Enabled = false;
floorLightLabel.Enabled = false;
}
//offsets
float panX = 0f;
float panY = 0f;
if(s.Fields.ContainsKey("xpanningceiling"))
panX = (float)s.Fields["xpanningceiling"].Value;
if(s.Fields.ContainsKey("ypanningceiling"))
panY = (float)s.Fields["ypanningceiling"].Value;
if(panX != 0 || panY != 0) {
showExtededCeilingInfo = true;
ceilingOffset.Enabled = true;
ceilingOffsetLabel.Enabled = true;
ceilingOffset.Text = panX + ", " + panY;
} else {
ceilingOffset.Text = "--, --";
ceilingOffset.Enabled = false;
ceilingOffsetLabel.Enabled = false;
}
panX = 0f;
panY = 0f;
if(s.Fields.ContainsKey("xpanningfloor"))
panX = (float)s.Fields["xpanningfloor"].Value;
if(s.Fields.ContainsKey("ypanningfloor"))
panY = (float)s.Fields["ypanningfloor"].Value;
if(panX != 0 || panY != 0) {
showExtededFloorInfo = true;
floorOffset.Enabled = true;
floorOffsetLabel.Enabled = true;
floorOffset.Text = panX + ", " + panY;
} else {
floorOffset.Text = "--, --";
floorOffset.Enabled = false;
floorOffsetLabel.Enabled = false;
}
//scale
float scaleX = 1.0f;
float scaleY = 1.0f;
if(s.Fields.ContainsKey("xscaleceiling"))
scaleX = (float)s.Fields["xscaleceiling"].Value;
if(s.Fields.ContainsKey("yscaleceiling"))
scaleY = (float)s.Fields["yscaleceiling"].Value;
if(scaleX != 1.0f || scaleY != 1.0f) {
showExtededCeilingInfo = true;
ceilingScale.Enabled = true;
ceilingScaleLabel.Enabled = true;
ceilingScale.Text = scaleX + ", " + scaleY;
} else {
ceilingScale.Text = "--, --";
ceilingScale.Enabled = false;
ceilingScaleLabel.Enabled = false;
}
scaleX = 1.0f;
scaleY = 1.0f;
if(s.Fields.ContainsKey("xscalefloor"))
scaleX = (float)s.Fields["xscalefloor"].Value;
if(s.Fields.ContainsKey("yscalefloor"))
scaleY = (float)s.Fields["yscalefloor"].Value;
if(scaleX != 1.0f || scaleY != 1.0f) {
showExtededFloorInfo = true;
floorScale.Enabled = true;
floorScaleLabel.Enabled = true;
floorScale.Text = scaleX + ", " + scaleY;
} else {
floorScale.Text = "--, --";
floorScale.Enabled = false;
floorScaleLabel.Enabled = false;
}
//rotation
if(s.Fields.ContainsKey("rotationceiling")) {
showExtededCeilingInfo = true;
ceilingAngle.Enabled = true;
ceilingAngleLabel.Enabled = true;
ceilingAngle.Text = s.Fields["rotationceiling"].Value.ToString() + "\u00B0";
} else {
ceilingAngle.Text = "-";
ceilingAngle.Enabled = false;
ceilingAngleLabel.Enabled = false;
}
if(s.Fields.ContainsKey("rotationfloor")) {
showExtededFloorInfo = true;
floorAngle.Enabled = true;
floorAngleLabel.Enabled = true;
floorAngle.Text = s.Fields["rotationfloor"].Value.ToString() + "\u00B0";
} else {
floorAngle.Text = "-";
floorAngle.Enabled = false;
floorAngleLabel.Enabled = false;
}
}
//panels size
if(showExtededCeilingInfo) {
ceilingpanel.Width = fullWidth;
ceilingInfo.Visible = true;
} else {
ceilingInfo.Visible = false;
ceilingpanel.Width = 84;
}
if(showExtededFloorInfo) {
floorpanel.Width = fullWidth;
floorInfo.Visible = true;
} else {
floorInfo.Visible = false;
floorpanel.Width = 84;
}
// Show the whole thing
this.Show();
this.Update();
}
// When visible changed
protected override void OnVisibleChanged(EventArgs e)
{
// Hiding panels
if(!this.Visible)
{
floortex.BackgroundImage = null;
ceilingtex.BackgroundImage = null;
}
// Call base
base.OnVisibleChanged(e);
}
}
}