diff --git a/Build/Compilers/ZDoom/zspecial.acs b/Build/Compilers/ZDoom/zspecial.acs index fb36f84f..7df80301 100644 --- a/Build/Compilers/ZDoom/zspecial.acs +++ b/Build/Compilers/ZDoom/zspecial.acs @@ -327,7 +327,7 @@ special -58:GetUserCVarString(2), -59:SetUserCVarString(3), -60:LineAttack(4,9), - -61:PlaySound(2,6), + -61:PlaySound(2,7), -62:StopSound(1,2), -63:strcmp(2,3), -64:stricmp(2,3), @@ -402,6 +402,10 @@ special -202:SetActorFlag(3), -203:SetTranslation(2), + // Eternity's + -300:GetLineX(3), + -301:GetLineY(3), + // ZDaemon's -19620:GetTeamScore(1), -19621:SetTeamScore(2), diff --git a/Build/Scripting/ZDoom_ACS.cfg b/Build/Scripting/ZDoom_ACS.cfg index 4a54267e..18ccc448 100644 --- a/Build/Scripting/ZDoom_ACS.cfg +++ b/Build/Scripting/ZDoom_ACS.cfg @@ -212,6 +212,8 @@ keywords GetLineRowOffset = "int GetLineRowOffset()"; GetLineUDMFFixed = "fixed GetLineUDMFFixed(int lineid, str key)"; GetLineUDMFInt = "int GetLineUDMFInt(int lineid, str key)"; + GetLineX = "int GetLineX(int line_id, fixed line_ratio, fixed perpendicular_distance)"; + GetLineY = "int GetLineY(int line_id, fixed line_ratio, fixed perpendicular_distance)"; GetMaxInventory = "int GetMaxInventory(int tid, str inventory)"; GetPlayerInfo = "int GetPlayerInfo(int playernumber, int playerinfo)"; GetPlayerInput = "int GetPlayerInput(int player, int input)"; @@ -295,7 +297,7 @@ keywords PlayerInGame = "bool PlayerInGame(int playernumber)\nReturns true if the player [0..7] is in the game"; PlayerIsBot = "bool PlayerIsBot(int playernumber)\nReturns TRUE if the player [0..7] is a bot and FALSE if not"; PlayerNumber = "int PlayerNumber()\nReturns the player number for the player who activated the script, starting at 0.\nFor scripts that were not activated by a player, PlayerNumber will return -1."; - PlaySound = "void PlaySound(int tid, str sound[, int channel = CHAN_BODY[, fixed volume = 1.0[, bool looping = false[, fixed attenuation = ATTN_NORM]]]])"; + PlaySound = "void PlaySound(int tid, str sound[, int channel = CHAN_BODY[, fixed volume = 1.0[, bool looping = false[, fixed attenuation = ATTN_NORM[, bool local]]]]])"; Polyobj_DoorSlide = "Polyobj_DoorSlide(po, speed, angle, dist, delay)"; Polyobj_DoorSwing = "Polyobj_DoorSwing(po, speed, angle, delay)"; Polyobj_Move = "Polyobj_Move(po, speed, angle, dist)"; diff --git a/Source/Core/Controls/ColorFieldsControl.cs b/Source/Core/Controls/ColorFieldsControl.cs index dc0d524e..370c1d2a 100644 --- a/Source/Core/Controls/ColorFieldsControl.cs +++ b/Source/Core/Controls/ColorFieldsControl.cs @@ -33,6 +33,16 @@ namespace CodeImp.DoomBuilder.Controls public int DefaultValue { get { return defaultvalue; } set { defaultvalue = value; } } public string Label { get { return cpColor.Label; } set { cpColor.Label = value; } } public string Field { get { return field; } set { field = value; } } + public PixelColor Color + { + get { return cpColor.Color; } + set + { + blockevents = true; + tbColor.Text = String.Format("{0:X6}", value.ToInt() & 0x00FFFFFF); + blockevents = false; + } + } #endregion diff --git a/Source/Core/Rendering/PixelColor.cs b/Source/Core/Rendering/PixelColor.cs index 7dfccd79..4c2a7d0a 100644 --- a/Source/Core/Rendering/PixelColor.cs +++ b/Source/Core/Rendering/PixelColor.cs @@ -33,6 +33,9 @@ namespace CodeImp.DoomBuilder.Rendering //mxd. Some color constants, full alpha public const int INT_BLACK = -16777216; public const int INT_WHITE = -1; + + //mxd. Some color constants, no alpha + public const int INT_WHITE_NO_ALPHA = 16777215; #endregion diff --git a/Source/Core/Windows/SectorEditFormUDMF.cs b/Source/Core/Windows/SectorEditFormUDMF.cs index 29b0725b..f7961e45 100644 --- a/Source/Core/Windows/SectorEditFormUDMF.cs +++ b/Source/Core/Windows/SectorEditFormUDMF.cs @@ -7,6 +7,7 @@ using System.Windows.Forms; using CodeImp.DoomBuilder.Controls; using CodeImp.DoomBuilder.Geometry; using CodeImp.DoomBuilder.Map; +using CodeImp.DoomBuilder.Rendering; using CodeImp.DoomBuilder.Types; #endregion @@ -113,7 +114,7 @@ namespace CodeImp.DoomBuilder.Windows CeilTexture = s.CeilTexture; //UDMF stuff - LightColor = UniFields.GetInteger(s.Fields, "lightcolor", 16777215); + LightColor = UniFields.GetInteger(s.Fields, "lightcolor", PixelColor.INT_WHITE_NO_ALPHA); FadeColor = UniFields.GetInteger(s.Fields, "fadecolor", 0); //UDMF Ceiling diff --git a/Source/Plugins/BuilderEffects/BuilderEffects.csproj b/Source/Plugins/BuilderEffects/BuilderEffects.csproj index b85696f5..e07034ca 100644 --- a/Source/Plugins/BuilderEffects/BuilderEffects.csproj +++ b/Source/Plugins/BuilderEffects/BuilderEffects.csproj @@ -99,6 +99,12 @@ ObjImportSettingsForm.cs + + Form + + + DirectionalShadingForm.cs + @@ -128,6 +134,9 @@ ObjImportSettingsForm.cs + + DirectionalShadingForm.cs + ResXFileCodeGenerator Resources.Designer.cs @@ -153,6 +162,9 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Source/Plugins/BuilderEffects/Interface/MenusForm.Designer.cs b/Source/Plugins/BuilderEffects/Interface/MenusForm.Designer.cs index 2087d9eb..56a33651 100644 --- a/Source/Plugins/BuilderEffects/Interface/MenusForm.Designer.cs +++ b/Source/Plugins/BuilderEffects/Interface/MenusForm.Designer.cs @@ -26,12 +26,14 @@ /// private void InitializeComponent() { this.menuStrip = new System.Windows.Forms.MenuStrip(); - this.importStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.stripimport = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); - this.toolStripMenuItem3 = new System.Windows.Forms.ToolStripMenuItem(); - this.jitterItem = new System.Windows.Forms.ToolStripMenuItem(); + this.stripmodes = new System.Windows.Forms.ToolStripMenuItem(); + this.menujitter = new System.Windows.Forms.ToolStripMenuItem(); + this.menusectorflatshading = new System.Windows.Forms.ToolStripMenuItem(); this.toolStrip = new System.Windows.Forms.ToolStrip(); - this.jitterButton = new System.Windows.Forms.ToolStripButton(); + this.buttonjitter = new System.Windows.Forms.ToolStripButton(); + this.buttonsectorflatshading = new System.Windows.Forms.ToolStripButton(); this.menuStrip.SuspendLayout(); this.toolStrip.SuspendLayout(); this.SuspendLayout(); @@ -39,21 +41,21 @@ // menuStrip // this.menuStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.importStripMenuItem, - this.toolStripMenuItem3}); + this.stripimport, + this.stripmodes}); this.menuStrip.Location = new System.Drawing.Point(0, 0); this.menuStrip.Name = "menuStrip"; this.menuStrip.Size = new System.Drawing.Size(452, 24); this.menuStrip.TabIndex = 0; this.menuStrip.Text = "menuStrip1"; // - // importStripMenuItem + // stripimport // - this.importStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.stripimport.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripMenuItem1}); - this.importStripMenuItem.Name = "importStripMenuItem"; - this.importStripMenuItem.Size = new System.Drawing.Size(55, 20); - this.importStripMenuItem.Text = "Import"; + this.stripimport.Name = "stripimport"; + this.stripimport.Size = new System.Drawing.Size(55, 20); + this.stripimport.Text = "Import"; // // toolStripMenuItem1 // @@ -64,43 +66,65 @@ this.toolStripMenuItem1.Text = "Wavefront .obj as Terrain..."; this.toolStripMenuItem1.Click += new System.EventHandler(this.InvokeTaggedAction); // - // toolStripMenuItem3 + // stripmodes // - this.toolStripMenuItem3.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.jitterItem}); - this.toolStripMenuItem3.Name = "toolStripMenuItem3"; - this.toolStripMenuItem3.Size = new System.Drawing.Size(55, 20); - this.toolStripMenuItem3.Text = "Modes"; + this.stripmodes.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.menujitter, + this.menusectorflatshading}); + this.stripmodes.Name = "stripmodes"; + this.stripmodes.Size = new System.Drawing.Size(55, 20); + this.stripmodes.Text = "Modes"; // - // jitterItem + // menujitter // - this.jitterItem.Image = global::CodeImp.DoomBuilder.BuilderEffects.Properties.Resources.Jitter; - this.jitterItem.Name = "jitterItem"; - this.jitterItem.Size = new System.Drawing.Size(133, 22); - this.jitterItem.Tag = "applyjitter"; - this.jitterItem.Text = "Randomize"; - this.jitterItem.Click += new System.EventHandler(this.InvokeTaggedAction); + this.menujitter.Image = global::CodeImp.DoomBuilder.BuilderEffects.Properties.Resources.Jitter; + this.menujitter.Name = "menujitter"; + this.menujitter.Size = new System.Drawing.Size(220, 22); + this.menujitter.Tag = "applyjitter"; + this.menujitter.Text = "Randomize..."; + this.menujitter.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // menusectorflatshading + // + this.menusectorflatshading.Image = global::CodeImp.DoomBuilder.BuilderEffects.Properties.Resources.FlatShading; + this.menusectorflatshading.Name = "menusectorflatshading"; + this.menusectorflatshading.Size = new System.Drawing.Size(220, 22); + this.menusectorflatshading.Tag = "applydirectionalshading"; + this.menusectorflatshading.Text = "Apply Directional Shading..."; + this.menusectorflatshading.Click += new System.EventHandler(this.InvokeTaggedAction); // // toolStrip // this.toolStrip.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.jitterButton}); + this.buttonjitter, + this.buttonsectorflatshading}); this.toolStrip.Location = new System.Drawing.Point(0, 24); this.toolStrip.Name = "toolStrip"; this.toolStrip.Size = new System.Drawing.Size(452, 25); this.toolStrip.TabIndex = 1; this.toolStrip.Text = "toolStrip1"; // - // jitterButton + // buttonjitter // - this.jitterButton.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; - this.jitterButton.Image = global::CodeImp.DoomBuilder.BuilderEffects.Properties.Resources.Jitter; - this.jitterButton.ImageTransparentColor = System.Drawing.Color.Magenta; - this.jitterButton.Name = "jitterButton"; - this.jitterButton.Size = new System.Drawing.Size(23, 22); - this.jitterButton.Tag = "applyjitter"; - this.jitterButton.Text = "Randomize"; - this.jitterButton.Click += new System.EventHandler(this.InvokeTaggedAction); + this.buttonjitter.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonjitter.Image = global::CodeImp.DoomBuilder.BuilderEffects.Properties.Resources.Jitter; + this.buttonjitter.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonjitter.Name = "buttonjitter"; + this.buttonjitter.Size = new System.Drawing.Size(23, 22); + this.buttonjitter.Tag = "applyjitter"; + this.buttonjitter.Text = "Randomize"; + this.buttonjitter.Click += new System.EventHandler(this.InvokeTaggedAction); + // + // buttonsectorflatshading + // + this.buttonsectorflatshading.DisplayStyle = System.Windows.Forms.ToolStripItemDisplayStyle.Image; + this.buttonsectorflatshading.Image = global::CodeImp.DoomBuilder.BuilderEffects.Properties.Resources.FlatShading; + this.buttonsectorflatshading.ImageTransparentColor = System.Drawing.Color.Magenta; + this.buttonsectorflatshading.Name = "buttonsectorflatshading"; + this.buttonsectorflatshading.Size = new System.Drawing.Size(23, 22); + this.buttonsectorflatshading.Tag = "applydirectionalshading"; + this.buttonsectorflatshading.Text = "Apply Directional Shading"; + this.buttonsectorflatshading.Click += new System.EventHandler(this.InvokeTaggedAction); // // MenusForm // @@ -124,11 +148,13 @@ #endregion private System.Windows.Forms.MenuStrip menuStrip; - private System.Windows.Forms.ToolStripMenuItem importStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem stripimport; private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem1; private System.Windows.Forms.ToolStrip toolStrip; - private System.Windows.Forms.ToolStripButton jitterButton; - private System.Windows.Forms.ToolStripMenuItem toolStripMenuItem3; - private System.Windows.Forms.ToolStripMenuItem jitterItem; + private System.Windows.Forms.ToolStripButton buttonjitter; + private System.Windows.Forms.ToolStripMenuItem stripmodes; + private System.Windows.Forms.ToolStripMenuItem menujitter; + private System.Windows.Forms.ToolStripMenuItem menusectorflatshading; + private System.Windows.Forms.ToolStripButton buttonsectorflatshading; } } \ No newline at end of file diff --git a/Source/Plugins/BuilderEffects/Interface/MenusForm.cs b/Source/Plugins/BuilderEffects/Interface/MenusForm.cs index 7c38fb13..521cc3a8 100644 --- a/Source/Plugins/BuilderEffects/Interface/MenusForm.cs +++ b/Source/Plugins/BuilderEffects/Interface/MenusForm.cs @@ -21,22 +21,26 @@ namespace CodeImp.DoomBuilder.BuilderEffects public void Register() { // Add the menus to the core - General.Interface.AddModesMenu(jitterItem, "002_modify"); - General.Interface.AddModesButton(jitterButton, "002_modify"); + General.Interface.AddModesMenu(menujitter, "002_modify"); + General.Interface.AddModesButton(buttonjitter, "002_modify"); + General.Interface.AddModesMenu(menusectorflatshading, "002_modify"); + General.Interface.AddModesButton(buttonsectorflatshading, "002_modify"); - for(int i = 0; i < importStripMenuItem.DropDownItems.Count; i++) - General.Interface.AddMenu(importStripMenuItem.DropDownItems[i] as ToolStripMenuItem, MenuSection.FileImport); + for(int i = 0; i < stripimport.DropDownItems.Count; i++) + General.Interface.AddMenu(stripimport.DropDownItems[i] as ToolStripMenuItem, MenuSection.FileImport); } // This unregisters from the core public void Unregister() { // Remove the menus from the core - General.Interface.RemoveMenu(jitterItem); - General.Interface.RemoveButton(jitterButton); + General.Interface.RemoveMenu(menujitter); + General.Interface.RemoveButton(buttonjitter); + General.Interface.RemoveMenu(menusectorflatshading); + General.Interface.RemoveButton(buttonsectorflatshading); - for(int i = 0; i < importStripMenuItem.DropDownItems.Count; i++) - General.Interface.RemoveMenu(importStripMenuItem.DropDownItems[i] as ToolStripMenuItem); + for(int i = 0; i < stripimport.DropDownItems.Count; i++) + General.Interface.RemoveMenu(stripimport.DropDownItems[i] as ToolStripMenuItem); } } } diff --git a/Source/Plugins/BuilderEffects/Properties/Resources.Designer.cs b/Source/Plugins/BuilderEffects/Properties/Resources.Designer.cs index a83b4356..abda0bd3 100644 --- a/Source/Plugins/BuilderEffects/Properties/Resources.Designer.cs +++ b/Source/Plugins/BuilderEffects/Properties/Resources.Designer.cs @@ -1,7 +1,7 @@ //------------------------------------------------------------------------------ // // This code was generated by a tool. -// Runtime Version:2.0.50727.5466 +// Runtime Version:2.0.50727.5485 // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -38,7 +38,7 @@ namespace CodeImp.DoomBuilder.BuilderEffects.Properties { [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] internal static global::System.Resources.ResourceManager ResourceManager { get { - if(object.ReferenceEquals(resourceMan, null)) { + if (object.ReferenceEquals(resourceMan, null)) { global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("CodeImp.DoomBuilder.BuilderEffects.Properties.Resources", typeof(Resources).Assembly); resourceMan = temp; } @@ -60,6 +60,13 @@ namespace CodeImp.DoomBuilder.BuilderEffects.Properties { } } + internal static System.Drawing.Bitmap FlatShading { + get { + object obj = ResourceManager.GetObject("FlatShading", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + internal static System.Drawing.Bitmap Folder { get { object obj = ResourceManager.GetObject("Folder", resourceCulture); diff --git a/Source/Plugins/BuilderEffects/Properties/Resources.resx b/Source/Plugins/BuilderEffects/Properties/Resources.resx index 7d1cece6..81e09218 100644 --- a/Source/Plugins/BuilderEffects/Properties/Resources.resx +++ b/Source/Plugins/BuilderEffects/Properties/Resources.resx @@ -118,16 +118,19 @@ System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - ..\Resources\Terrain.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\Jitter.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\Update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Terrain.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\Folder.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\Update.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\FlatShading.png;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + \ No newline at end of file diff --git a/Source/Plugins/BuilderEffects/Resources/Actions.cfg b/Source/Plugins/BuilderEffects/Resources/Actions.cfg index 2f57391c..09394f31 100644 --- a/Source/Plugins/BuilderEffects/Resources/Actions.cfg +++ b/Source/Plugins/BuilderEffects/Resources/Actions.cfg @@ -15,6 +15,17 @@ applyjitter default = 131146; //Ctrl-J } +applydirectionalshading +{ + title = "Apply Directional Shading"; + category = "transform"; + description = "Allows to apply directional colored flat shading to the selection."; + allowkeys = true; + allowmouse = false; + allowscroll = false; + default = 131148; //Ctrl-L +} + importobjasterrain { title = "Import Wavefront .obj as terrain"; diff --git a/Source/Plugins/BuilderEffects/Resources/FlatShading.png b/Source/Plugins/BuilderEffects/Resources/FlatShading.png new file mode 100644 index 00000000..f5a2eaf3 Binary files /dev/null and b/Source/Plugins/BuilderEffects/Resources/FlatShading.png differ diff --git a/Source/Plugins/NodesViewer/NodesViewerMode.cs b/Source/Plugins/NodesViewer/NodesViewerMode.cs index 1275296a..7e712122 100644 --- a/Source/Plugins/NodesViewer/NodesViewerMode.cs +++ b/Source/Plugins/NodesViewer/NodesViewerMode.cs @@ -15,7 +15,7 @@ using CodeImp.DoomBuilder.Map; namespace CodeImp.DoomBuilder.Plugins.NodesViewer { - [EditMode(DisplayName = "Nodes Viewer", + [EditMode(DisplayName = "Nodes Viewer Mode", SwitchAction = "nodesviewermode", ButtonImage = "NodesView.png", ButtonOrder = 350,