diff --git a/Source/Plugins/BuilderModes/Resources/Actions.cfg b/Source/Plugins/BuilderModes/Resources/Actions.cfg index 86a01b7d4a6a853ac1bde6e5bd17e5c15e341500..d7ae909b5355c3d1c190772d902d47cc41013ad5 100755 --- a/Source/Plugins/BuilderModes/Resources/Actions.cfg +++ b/Source/Plugins/BuilderModes/Resources/Actions.cfg @@ -723,6 +723,7 @@ raisebrightness8 allowmouse = true; allowscroll = true; repeat = true; + disregardalt = true; } lowerbrightness8 @@ -734,6 +735,7 @@ lowerbrightness8 allowmouse = true; allowscroll = true; repeat = true; + disregardalt = true; } movetextureleft diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs index 32e52bf16cc063093e01c9971018ce70513e6a88..5ec651566018919bb5a13a515ee5d0e7cf362bc0 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySector.cs @@ -830,7 +830,7 @@ namespace CodeImp.DoomBuilder.BuilderModes } // Sector brightness change - public virtual void OnChangeTargetBrightness(bool up) + public virtual void OnChangeTargetBrightness(bool up, bool local) { mode.CreateUndo("Change sector brightness", UndoGroup.SectorBrightnessChange, Sector.Sector.FixedIndex); diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs index 45f4f7ec6d8b524f06d6569bb700b99c681edf73..24dffc1e40e2fe903efab2b213ed595691afeaed 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualGeometrySidedef.cs @@ -1585,10 +1585,10 @@ namespace CodeImp.DoomBuilder.BuilderModes } // Sector brightness change - public virtual void OnChangeTargetBrightness(bool up) + public virtual void OnChangeTargetBrightness(bool up, bool local) { //mxd. Change UDMF wall light? - if(General.Map.UDMF && (General.Map.Config.DistinctWallBrightness || General.Map.Config.DistinctSidedefPartBrightness)) + if(General.Map.UDMF && (General.Map.Config.DistinctWallBrightness || General.Map.Config.DistinctSidedefPartBrightness) && local) { string fieldname = "light"; string fieldabsolutename = "lightabsolute"; diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs index c45d0309175396a089b1955a717371b874b69eaa..aed974525cff2792626ed87794f0d873f182692f 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualMode.cs @@ -3508,18 +3508,20 @@ namespace CodeImp.DoomBuilder.BuilderModes [BeginAction("raisebrightness8")] public void RaiseBrightness8() { + bool local = General.Interface.AltState; PreAction(UndoGroup.SectorBrightnessChange); List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, false, false, false); - foreach(IVisualEventReceiver i in objs) i.OnChangeTargetBrightness(true); + foreach(IVisualEventReceiver i in objs) i.OnChangeTargetBrightness(true, local); PostAction(); } [BeginAction("lowerbrightness8")] public void LowerBrightness8() { + bool local = General.Interface.AltState; PreAction(UndoGroup.SectorBrightnessChange); List<IVisualEventReceiver> objs = GetSelectedObjects(true, true, false, false, false); - foreach(IVisualEventReceiver i in objs) i.OnChangeTargetBrightness(false); + foreach(IVisualEventReceiver i in objs) i.OnChangeTargetBrightness(false, local); PostAction(); } diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs index 329adb62eba9212517ac8e9f43f14a207aafecce..f76b70be954b9b4839771c95334c5d438fd7a7c8 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualSlope.cs @@ -110,7 +110,7 @@ namespace CodeImp.DoomBuilder.VisualModes // Unused public void OnSelectBegin() { } public void OnEditBegin() { } - public void OnChangeTargetBrightness(bool up) { } + public void OnChangeTargetBrightness(bool up, bool local) { } public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { } public void OnSelectTexture() { } public void OnCopyTexture() { } diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs index 29ddb26fc4f6aa42490134c785be33658959298c..389a39d68d7611a4f388394e5a1ada897ec63f96 100644 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualThing.cs @@ -699,7 +699,7 @@ namespace CodeImp.DoomBuilder.BuilderModes // Unused public void OnSelectBegin() { } public void OnEditBegin() { } - public void OnChangeTargetBrightness(bool up) { } + public void OnChangeTargetBrightness(bool up, bool local) { } public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { } public void OnSelectTexture() { } public void OnCopyTexture() { } diff --git a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs index 3de36f62fd465331ef30919ce223c430a2c358b8..e7483c76ad7992b82535a05358b0d248122d0885 100755 --- a/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs +++ b/Source/Plugins/BuilderModes/VisualModes/BaseVisualVertex.cs @@ -240,7 +240,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public void OnSelectBegin() { } public void OnEditBegin() { } public void OnMouseMove(MouseEventArgs e) { } - public void OnChangeTargetBrightness(bool up) { } + public void OnChangeTargetBrightness(bool up, bool local) { } public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { } public void OnChangeScale(int incrementX, int incrementY) { } public void OnSelectTexture() { } diff --git a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs index cde7f2ca6469a4155f058756c900212457920e61..8c5d73dd32168dee1a91da2a0e0fa29a5065e593 100755 --- a/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs +++ b/Source/Plugins/BuilderModes/VisualModes/IVisualEventReceiver.cs @@ -34,7 +34,7 @@ namespace CodeImp.DoomBuilder.BuilderModes void OnEditEnd(); void OnMouseMove(MouseEventArgs e); void OnChangeTargetHeight(int amount); - void OnChangeTargetBrightness(bool up); + void OnChangeTargetBrightness(bool up, bool local); void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection); void OnChangeScale(int incrementX, int incrementY); //mxd void OnResetTextureOffset(); diff --git a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs index e6abe0e4104420909f0e5c8970c8425f9ad70bd8..dfe8b05b8f2f13463e18ecdedd400cb88e7d99d5 100755 --- a/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs +++ b/Source/Plugins/BuilderModes/VisualModes/NullVisualEventReceiver.cs @@ -33,7 +33,7 @@ namespace CodeImp.DoomBuilder.BuilderModes public void OnEditEnd() { } public void OnMouseMove(MouseEventArgs e) { } public void OnChangeTargetHeight(int amount) { } - public void OnChangeTargetBrightness(bool up) { } + public void OnChangeTargetBrightness(bool up, bool local) { } public void OnChangeTextureOffset(int horizontal, int vertical, bool doSurfaceAngleCorrection) { } public void OnChangeScale(int incrementX, int incrementY) { } //mxd public void OnResetTextureOffset() { } diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs b/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs index a1d85c029ded767e65ae7cf84f309d0bf02d28de..1ee4422a2bd9a657186b7177ce5e3aeeccdb7ab4 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualCeiling.cs @@ -436,7 +436,7 @@ namespace CodeImp.DoomBuilder.BuilderModes } //mxd. Sector brightness change - public override void OnChangeTargetBrightness(bool up) + public override void OnChangeTargetBrightness(bool up, bool local) { if(level != null && level.sector != Sector.Sector) { @@ -451,17 +451,17 @@ namespace CodeImp.DoomBuilder.BuilderModes } if(index > -1 && index < Sector.ExtraCeilings.Count) - ((BaseVisualSector)mode.GetVisualSector(Sector.ExtraCeilings[index].level.sector)).Floor.OnChangeTargetBrightness(up); + ((BaseVisualSector)mode.GetVisualSector(Sector.ExtraCeilings[index].level.sector)).Floor.OnChangeTargetBrightness(up, false); else - base.OnChangeTargetBrightness(up); + base.OnChangeTargetBrightness(up, false); } else { // Change the sector brightness if the map is not in UDMF format, or this ceiling is part of 3D-floor, - // or the game configuration doesn't support distinct surfave brightnesses - if(!General.Map.UDMF || (level != null && Sector.Sector != level.sector) || !General.Map.Config.DistinctFloorAndCeilingBrightness) + // or the game configuration doesn't support distinct surface brightnesses + if(!General.Map.UDMF || (level != null && Sector.Sector != level.sector) || !General.Map.Config.DistinctFloorAndCeilingBrightness || !local) { - base.OnChangeTargetBrightness(up); + base.OnChangeTargetBrightness(up, false); return; } diff --git a/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs b/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs index 8be4c2161e2b7585f633d1a98420999d19f49885..64a6732e131dac0398f4668ee40f03b21df67532 100755 --- a/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs +++ b/Source/Plugins/BuilderModes/VisualModes/VisualFloor.cs @@ -390,30 +390,53 @@ namespace CodeImp.DoomBuilder.BuilderModes } //mxd. Sector brightness change - public override void OnChangeTargetBrightness(bool up) + public override void OnChangeTargetBrightness(bool up, bool local) { - if(level != null) + // This floor is part of 3D-floor + if (level != null && level.sector != Sector.Sector) { - // This floor is part of 3D-floor - if(level.sector != Sector.Sector) - { - BaseVisualSector vs = (BaseVisualSector)mode.GetVisualSector(level.sector); - vs.Floor.OnChangeTargetBrightness(up); - vs.UpdateSectorGeometry(true); - } - // This is actual floor of a sector with extrafloors - else if(Sector.ExtraFloors.Count > 0 && !Sector.ExtraFloors[0].ExtraFloor.Floor.restrictlighting && !Sector.ExtraFloors[0].ExtraFloor.Floor.disablelighting) + BaseVisualSector vs = (BaseVisualSector)mode.GetVisualSector(level.sector); + vs.Floor.OnChangeTargetBrightness(up, local); + vs.UpdateSectorGeometry(true); + } + // This is actual floor of a sector with extrafloors + else if (level != null && Sector.ExtraFloors.Count > 0 && !Sector.ExtraFloors[0].ExtraFloor.Floor.restrictlighting && !Sector.ExtraFloors[0].ExtraFloor.Floor.disablelighting) + { + Sector.ExtraFloors[0].OnChangeTargetBrightness(up, local); + } + else + { + // Change the sector brightness if the map is not in UDMF format, or this floor is part of 3D-floor, + // or the game configuration doesn't support distinct surface brightnesses + if (!General.Map.UDMF || (level != null && Sector.Sector != level.sector) || !General.Map.Config.DistinctFloorAndCeilingBrightness || !local) { - Sector.ExtraFloors[0].OnChangeTargetBrightness(up); + base.OnChangeTargetBrightness(up, false); + return; } + + int light = Sector.Sector.Fields.GetValue("lightfloor", 0); + bool absolute = Sector.Sector.Fields.GetValue("lightfloorabsolute", false); + int newLight; + + if (up) + newLight = General.Map.Config.BrightnessLevels.GetNextHigher(light, absolute); else - { - base.OnChangeTargetBrightness(up); - } - } - else - { - base.OnChangeTargetBrightness(up); + newLight = General.Map.Config.BrightnessLevels.GetNextLower(light, absolute); + + if (newLight == light) return; + + //create undo + mode.CreateUndo("Change floor brightness", UndoGroup.SurfaceBrightnessChange, Sector.Sector.FixedIndex); + Sector.Sector.Fields.BeforeFieldsChange(); + + //apply changes + UniFields.SetInteger(Sector.Sector.Fields, "lightfloor", newLight, (absolute ? int.MinValue : 0)); + mode.SetActionResult("Changed floor brightness to " + newLight + "."); + Sector.Sector.UpdateNeeded = true; + Sector.Sector.UpdateCache(); + + //rebuild sector + Sector.UpdateSectorGeometry(false); } }