Merge remote-tracking branch 'upstream/master' into develop
This commit is contained in:
@@ -145,6 +145,7 @@ namespace Barotrauma
|
||||
public SettingValue<float> OxygenMultiplier;
|
||||
public SettingValue<float> FuelMultiplier;
|
||||
public SettingValue<float> MissionRewardMultiplier;
|
||||
public SettingValue<float> ExperienceRewardMultiplier;
|
||||
public SettingValue<float> ShopPriceMultiplier;
|
||||
public SettingValue<float> ShipyardPriceMultiplier;
|
||||
public SettingValue<float> RepairFailMultiplier;
|
||||
@@ -167,6 +168,7 @@ namespace Barotrauma
|
||||
OxygenMultiplier = OxygenMultiplier.GetValue(),
|
||||
FuelMultiplier = FuelMultiplier.GetValue(),
|
||||
MissionRewardMultiplier = MissionRewardMultiplier.GetValue(),
|
||||
ExperienceRewardMultiplier = ExperienceRewardMultiplier.GetValue(),
|
||||
ShopPriceMultiplier = ShopPriceMultiplier.GetValue(),
|
||||
ShipyardPriceMultiplier = ShipyardPriceMultiplier.GetValue(),
|
||||
RepairFailMultiplier = RepairFailMultiplier.GetValue(),
|
||||
@@ -344,6 +346,19 @@ namespace Barotrauma
|
||||
verticalSize,
|
||||
OnValuesChanged);
|
||||
|
||||
// Experience reward multiplier
|
||||
CampaignSettings.MultiplierSettings experienceMultiplierSettings = CampaignSettings.GetMultiplierSettings("ExperienceRewardMultiplier");
|
||||
SettingValue<float> experienceMultiplier = CreateGUIFloatInputCarousel(
|
||||
settingsList.Content,
|
||||
TextManager.Get("campaignoption.experiencerewardmultiplier"),
|
||||
TextManager.Get("campaignoption.experiencerewardmultiplier.tooltip"),
|
||||
prevSettings.ExperienceRewardMultiplier,
|
||||
valueStep: experienceMultiplierSettings.Step,
|
||||
minValue: experienceMultiplierSettings.Min,
|
||||
maxValue: experienceMultiplierSettings.Max,
|
||||
verticalSize,
|
||||
OnValuesChanged);
|
||||
|
||||
// Shop buying prices multiplier
|
||||
CampaignSettings.MultiplierSettings shopPriceMultiplierSettings = CampaignSettings.GetMultiplierSettings("ShopPriceMultiplier");
|
||||
SettingValue<float> shopPriceMultiplier = CreateGUIFloatInputCarousel(
|
||||
@@ -501,6 +516,7 @@ namespace Barotrauma
|
||||
oxygenMultiplier.SetValue(settings.OxygenMultiplier);
|
||||
fuelMultiplier.SetValue(settings.FuelMultiplier);
|
||||
rewardMultiplier.SetValue(settings.MissionRewardMultiplier);
|
||||
experienceMultiplier.SetValue(settings.ExperienceRewardMultiplier);
|
||||
shopPriceMultiplier.SetValue(settings.ShopPriceMultiplier);
|
||||
shipyardPriceMultiplier.SetValue(settings.ShipyardPriceMultiplier);
|
||||
repairFailMultiplier.SetValue(settings.RepairFailMultiplier);
|
||||
@@ -530,6 +546,7 @@ namespace Barotrauma
|
||||
OxygenMultiplier = oxygenMultiplier,
|
||||
FuelMultiplier = fuelMultiplier,
|
||||
MissionRewardMultiplier = rewardMultiplier,
|
||||
ExperienceRewardMultiplier = experienceMultiplier,
|
||||
ShopPriceMultiplier = shopPriceMultiplier,
|
||||
ShipyardPriceMultiplier = shipyardPriceMultiplier,
|
||||
RepairFailMultiplier = repairFailMultiplier,
|
||||
|
||||
+29
-3
@@ -236,10 +236,36 @@ namespace Barotrauma
|
||||
{
|
||||
if (saveList.SelectedData is not CampaignMode.SaveInfo saveInfo) { return false; }
|
||||
if (string.IsNullOrWhiteSpace(saveInfo.FilePath)) { return false; }
|
||||
LoadGame?.Invoke(saveInfo.FilePath, backupIndex: Option.None);
|
||||
|
||||
CoroutineManager.StartCoroutine(WaitForCampaignSetup(), "WaitForCampaignSetup");
|
||||
|
||||
if (saveInfo.RespawnMode != RespawnMode.None && saveInfo.RespawnMode != GameMain.NetworkMember?.ServerSettings?.RespawnMode)
|
||||
{
|
||||
var msgBox = new GUIMessageBox(TextManager.Get("Warning"),
|
||||
TextManager.GetWithVariables("RespawnModeMismatch",
|
||||
("[currentrespawnmode]", TextManager.Get($"respawnmode.{GameMain.NetworkMember?.ServerSettings?.RespawnMode}")),
|
||||
("[savedrespawnmode]", TextManager.Get($"respawnmode.{saveInfo.RespawnMode}"))),
|
||||
new LocalizedString[] { TextManager.Get("RespawnModeMismatch.GoBack"), TextManager.Get("RespawnModeMismatch.LoadAnyway") });
|
||||
msgBox.Buttons[0].OnClicked = (button, obj) =>
|
||||
{
|
||||
msgBox.Close();
|
||||
return true;
|
||||
};
|
||||
msgBox.Buttons[1].OnClicked = (button, obj) =>
|
||||
{
|
||||
msgBox.Close();
|
||||
LoadSaveGame();
|
||||
return true;
|
||||
};
|
||||
return false;
|
||||
}
|
||||
|
||||
LoadSaveGame();
|
||||
return true;
|
||||
|
||||
void LoadSaveGame()
|
||||
{
|
||||
LoadGame?.Invoke(saveInfo.FilePath, backupIndex: Option.None);
|
||||
CoroutineManager.StartCoroutine(WaitForCampaignSetup(), "WaitForCampaignSetup");
|
||||
}
|
||||
},
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
@@ -443,20 +443,22 @@ namespace Barotrauma
|
||||
GUILayoutGroup difficultyIndicatorGroup = null;
|
||||
if (mission.Difficulty.HasValue)
|
||||
{
|
||||
difficultyIndicatorGroup = new GUILayoutGroup(new RectTransform(Vector2.One * 0.9f, missionName.RectTransform, anchor: Anchor.CenterRight, scaleBasis: ScaleBasis.Smallest) { AbsoluteOffset = new Point((int)missionName.Padding.Z, 0) },
|
||||
difficultyIndicatorGroup = new GUILayoutGroup(new RectTransform(new Vector2(0.5f, 0.9f), missionName.RectTransform, anchor: Anchor.CenterRight) { AbsoluteOffset = new Point((int)missionName.Padding.Z, 0) },
|
||||
isHorizontal: true, childAnchor: Anchor.CenterRight)
|
||||
{
|
||||
AbsoluteSpacing = 1,
|
||||
UserData = "difficulty"
|
||||
UserData = "difficulty",
|
||||
};
|
||||
difficultyIndicatorGroup.SetAsFirstChild();
|
||||
var difficultyColor = mission.GetDifficultyColor();
|
||||
for (int i = 0; i < mission.Difficulty; i++)
|
||||
{
|
||||
new GUIImage(new RectTransform(Vector2.One, difficultyIndicatorGroup.RectTransform, scaleBasis: ScaleBasis.Smallest) { IsFixedSize = true }, "DifficultyIndicator", scaleToFit: true)
|
||||
new GUIImage(new RectTransform(Vector2.One * 0.9f, difficultyIndicatorGroup.RectTransform, scaleBasis: ScaleBasis.Smallest) { IsFixedSize = true }, "DifficultyIndicator", scaleToFit: true)
|
||||
{
|
||||
Color = difficultyColor,
|
||||
SelectedColor = difficultyColor,
|
||||
HoverColor = difficultyColor
|
||||
HoverColor = difficultyColor,
|
||||
ToolTip = mission.GetDifficultyToolTipText()
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -1771,7 +1771,7 @@ namespace Barotrauma.CharacterEditor
|
||||
|
||||
// Ragdoll
|
||||
RagdollParams.ClearCache();
|
||||
string ragdollPath = RagdollParams.GetDefaultFile(name, contentPackage);
|
||||
string ragdollPath = RagdollParams.GetDefaultFile(name);
|
||||
RagdollParams ragdollParams = isHumanoid
|
||||
? RagdollParams.CreateDefault<HumanRagdollParams>(ragdollPath, name, ragdoll)
|
||||
: RagdollParams.CreateDefault<FishRagdollParams>(ragdollPath, name, ragdoll);
|
||||
|
||||
@@ -5,6 +5,7 @@ using Microsoft.Xna.Framework.Graphics;
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
@@ -15,6 +16,8 @@ namespace Barotrauma
|
||||
private RenderTarget2D renderTargetWater;
|
||||
private RenderTarget2D renderTargetFinal;
|
||||
|
||||
private RenderTarget2D renderTargetDamageable;
|
||||
|
||||
public readonly Effect DamageEffect;
|
||||
private readonly Texture2D damageStencil;
|
||||
private readonly Texture2D distortTexture;
|
||||
@@ -65,6 +68,7 @@ namespace Barotrauma
|
||||
renderTargetBackground = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
|
||||
renderTargetWater = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight);
|
||||
renderTargetFinal = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight, false, SurfaceFormat.Color, DepthFormat.None);
|
||||
renderTargetDamageable = new RenderTarget2D(graphics, GameMain.GraphicsWidth, GameMain.GraphicsHeight, false, SurfaceFormat.Color, DepthFormat.None);
|
||||
}
|
||||
|
||||
public override void AddToGUIUpdateList()
|
||||
@@ -303,7 +307,7 @@ namespace Barotrauma
|
||||
//Draw background structures and wall background sprites
|
||||
//(= the background texture that's revealed when a wall is destroyed) into the background render target
|
||||
//These will be visible through the LOS effect.
|
||||
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, null, DepthStencilState.None, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
Submarine.DrawBack(spriteBatch, false, e => e is Structure s && (e.SpriteDepth >= 0.9f || s.Prefab.BackgroundSprite != null) && !IsFromOutpostDrawnBehindSubs(e));
|
||||
Submarine.DrawPaintedColors(spriteBatch, false);
|
||||
spriteBatch.End();
|
||||
@@ -312,8 +316,19 @@ namespace Barotrauma
|
||||
GameMain.PerformanceCounter.AddElapsedTicks("Draw:Map:BackStructures", sw.ElapsedTicks);
|
||||
sw.Restart();
|
||||
|
||||
graphics.SetRenderTarget(renderTargetDamageable);
|
||||
graphics.Clear(Color.Transparent);
|
||||
DamageEffect.CurrentTechnique = DamageEffect.Techniques["StencilShader"];
|
||||
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, SamplerState.LinearWrap, effect: DamageEffect, transformMatrix: cam.Transform);
|
||||
Submarine.DrawDamageable(spriteBatch, DamageEffect, false);
|
||||
spriteBatch.End();
|
||||
|
||||
sw.Stop();
|
||||
GameMain.PerformanceCounter.AddElapsedTicks("Draw:Map:FrontDamageable", sw.ElapsedTicks);
|
||||
sw.Restart();
|
||||
|
||||
graphics.SetRenderTarget(null);
|
||||
GameMain.LightManager.RenderLightMap(graphics, spriteBatch, cam, renderTarget);
|
||||
GameMain.LightManager.RenderLightMap(graphics, spriteBatch, cam, renderTargetDamageable);
|
||||
|
||||
sw.Stop();
|
||||
GameMain.PerformanceCounter.AddElapsedTicks("Draw:Map:Lighting", sw.ElapsedTicks);
|
||||
@@ -331,24 +346,24 @@ namespace Barotrauma
|
||||
Level.Loaded.DrawBack(graphics, spriteBatch, cam);
|
||||
}
|
||||
|
||||
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, null, DepthStencilState.None, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
Submarine.DrawBack(spriteBatch, false, e => e is Structure s && (e.SpriteDepth >= 0.9f || s.Prefab.BackgroundSprite != null) && IsFromOutpostDrawnBehindSubs(e));
|
||||
spriteBatch.End();
|
||||
|
||||
//draw alpha blended particles that are in water and behind subs
|
||||
#if LINUX || OSX
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, null, DepthStencilState.None, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
#else
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, null, DepthStencilState.None, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
#endif
|
||||
GameMain.ParticleManager.Draw(spriteBatch, true, false, Particles.ParticleBlendState.AlphaBlend);
|
||||
spriteBatch.End();
|
||||
|
||||
//draw additive particles that are in water and behind subs
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, null, DepthStencilState.None, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
GameMain.ParticleManager.Draw(spriteBatch, true, false, Particles.ParticleBlendState.Additive);
|
||||
spriteBatch.End();
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, null, DepthStencilState.None);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.None);
|
||||
spriteBatch.Draw(renderTarget, new Rectangle(0, 0, GameMain.GraphicsWidth, GameMain.GraphicsHeight), Color.White);
|
||||
spriteBatch.End();
|
||||
|
||||
@@ -367,8 +382,8 @@ namespace Barotrauma
|
||||
GraphicsQuad.Render();
|
||||
|
||||
//Draw the rest of the structures, characters and front structures
|
||||
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, null, DepthStencilState.None, null, null, cam.Transform);
|
||||
Submarine.DrawBack(spriteBatch, false, e => !(e is Structure) || e.SpriteDepth < 0.9f);
|
||||
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
Submarine.DrawBack(spriteBatch, false, e => e is not Structure || e.SpriteDepth < 0.9f);
|
||||
DrawCharacters(deformed: false, firstPass: true);
|
||||
spriteBatch.End();
|
||||
|
||||
@@ -376,7 +391,7 @@ namespace Barotrauma
|
||||
GameMain.PerformanceCounter.AddElapsedTicks("Draw:Map:BackCharactersItems", sw.ElapsedTicks);
|
||||
sw.Restart();
|
||||
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, null, DepthStencilState.None, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
DrawCharacters(deformed: true, firstPass: true);
|
||||
DrawCharacters(deformed: true, firstPass: false);
|
||||
DrawCharacters(deformed: false, firstPass: false);
|
||||
@@ -421,19 +436,19 @@ namespace Barotrauma
|
||||
GraphicsQuad.Render();
|
||||
|
||||
//draw alpha blended particles that are inside a sub
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, null, DepthStencilState.DepthRead, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.DepthRead, transformMatrix: cam.Transform);
|
||||
GameMain.ParticleManager.Draw(spriteBatch, true, true, Particles.ParticleBlendState.AlphaBlend);
|
||||
spriteBatch.End();
|
||||
|
||||
graphics.SetRenderTarget(renderTarget);
|
||||
|
||||
//draw alpha blended particles that are not in water
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, null, DepthStencilState.DepthRead, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.DepthRead, transformMatrix: cam.Transform);
|
||||
GameMain.ParticleManager.Draw(spriteBatch, false, null, Particles.ParticleBlendState.AlphaBlend);
|
||||
spriteBatch.End();
|
||||
|
||||
//draw additive particles that are not in water
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, null, DepthStencilState.None, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
GameMain.ParticleManager.Draw(spriteBatch, false, null, Particles.ParticleBlendState.Additive);
|
||||
spriteBatch.End();
|
||||
|
||||
@@ -450,20 +465,10 @@ namespace Barotrauma
|
||||
GameMain.PerformanceCounter.AddElapsedTicks("Draw:Map:FrontParticles", sw.ElapsedTicks);
|
||||
sw.Restart();
|
||||
|
||||
DamageEffect.CurrentTechnique = DamageEffect.Techniques["StencilShader"];
|
||||
spriteBatch.Begin(SpriteSortMode.Immediate,
|
||||
BlendState.NonPremultiplied, SamplerState.LinearWrap,
|
||||
null, null,
|
||||
DamageEffect,
|
||||
cam.Transform);
|
||||
Submarine.DrawDamageable(spriteBatch, DamageEffect, false);
|
||||
spriteBatch.End();
|
||||
GraphicsQuad.UseBasicEffect(renderTargetDamageable);
|
||||
GraphicsQuad.Render();
|
||||
|
||||
sw.Stop();
|
||||
GameMain.PerformanceCounter.AddElapsedTicks("Draw:Map:FrontDamageable", sw.ElapsedTicks);
|
||||
sw.Restart();
|
||||
|
||||
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, null, DepthStencilState.None, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.NonPremultiplied, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
Submarine.DrawFront(spriteBatch, false, null);
|
||||
spriteBatch.End();
|
||||
|
||||
@@ -472,7 +477,7 @@ namespace Barotrauma
|
||||
sw.Restart();
|
||||
|
||||
//draw additive particles that are inside a sub
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, null, DepthStencilState.Default, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.Additive, depthStencilState: DepthStencilState.Default, transformMatrix: cam.Transform);
|
||||
GameMain.ParticleManager.Draw(spriteBatch, true, true, Particles.ParticleBlendState.Additive);
|
||||
foreach (var discharger in Items.Components.ElectricalDischarger.List)
|
||||
{
|
||||
@@ -488,7 +493,7 @@ namespace Barotrauma
|
||||
GraphicsQuad.Render();
|
||||
}
|
||||
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, SamplerState.LinearWrap, DepthStencilState.None, null, null, cam.Transform);
|
||||
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied, SamplerState.LinearWrap, depthStencilState: DepthStencilState.None, transformMatrix: cam.Transform);
|
||||
foreach (Character c in Character.CharacterList)
|
||||
{
|
||||
c.DrawFront(spriteBatch, cam);
|
||||
|
||||
@@ -363,7 +363,7 @@ namespace Barotrauma
|
||||
s.IsPlayer && !s.HasTag(SubmarineTag.Shuttle) &&
|
||||
!nonPlayerFiles.Any(f => f.Path == s.FilePath));
|
||||
GameSession gameSession = new GameSession(subInfo, Option.None, CampaignDataPath.Empty, GameModePreset.TestMode, CampaignSettings.Empty, null);
|
||||
gameSession.StartRound(Level.Loaded.LevelData);
|
||||
gameSession.StartRound(Level.Loaded.LevelData, mirrorLevel.Selected);
|
||||
(gameSession.GameMode as TestGameMode).OnRoundEnd = () =>
|
||||
{
|
||||
GameMain.LevelEditorScreen.Select();
|
||||
@@ -560,9 +560,13 @@ namespace Barotrauma
|
||||
new Vector2(relWidth, relWidth * ((float)levelObjectList.Content.Rect.Width / levelObjectList.Content.Rect.Height)),
|
||||
levelObjectList.Content.RectTransform) { MinSize = new Point(0, 60) }, style: "ListBoxElementSquare")
|
||||
{
|
||||
UserData = levelObjPrefab
|
||||
UserData = levelObjPrefab,
|
||||
ToolTip = levelObjPrefab.Name
|
||||
};
|
||||
var paddedFrame = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), frame.RectTransform, Anchor.Center), style: null)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
var paddedFrame = new GUIFrame(new RectTransform(new Vector2(0.9f, 0.9f), frame.RectTransform, Anchor.Center), style: null);
|
||||
|
||||
GUITextBlock textBlock = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), paddedFrame.RectTransform, Anchor.BottomCenter),
|
||||
text: ToolBox.LimitString(levelObjPrefab.Name, GUIStyle.SmallFont, paddedFrame.Rect.Width), textAlignment: Alignment.Center, font: GUIStyle.SmallFont)
|
||||
@@ -876,9 +880,22 @@ namespace Barotrauma
|
||||
{
|
||||
var levelObj = levelObjFrame.UserData as LevelObjectPrefab;
|
||||
float commonness = levelObj.GetCommonness(levelData);
|
||||
levelObjFrame.Color = commonness > 0.0f ? GUIStyle.Green * 0.4f : Color.Transparent;
|
||||
levelObjFrame.SelectedColor = commonness > 0.0f ? GUIStyle.Green * 0.6f : Color.White * 0.5f;
|
||||
levelObjFrame.HoverColor = commonness > 0.0f ? GUIStyle.Green * 0.7f : Color.White * 0.6f;
|
||||
|
||||
Color color = GUIStyle.Green;
|
||||
|
||||
if (commonness > 0.0f && levelData?.GenerationParams != null)
|
||||
{
|
||||
if (levelObj.MinSurfaceWidth > levelData.GenerationParams.CellSubdivisionLength &&
|
||||
levelObj.SpawnPos.HasFlag(LevelObjectPrefab.SpawnPosType.Wall))
|
||||
{
|
||||
color = Color.Orange;
|
||||
levelObjFrame.ToolTip = $"Potential issue: the level walls in \"{levelData.GenerationParams.Identifier}\" are set to be subdivided every {levelData.GenerationParams.CellSubdivisionLength} pixels, but the level object requires wall segments of at least {levelObj.MinSurfaceWidth} px. The object may be rarer than intended (or fail to spawn at all) in the level.";
|
||||
}
|
||||
}
|
||||
|
||||
levelObjFrame.Color = commonness > 0.0f ? color * 0.4f : Color.Transparent;
|
||||
levelObjFrame.SelectedColor = commonness > 0.0f ? color * 0.6f : Color.White * 0.5f;
|
||||
levelObjFrame.HoverColor = commonness > 0.0f ? color * 0.7f : Color.White * 0.6f;
|
||||
|
||||
levelObjFrame.GetAnyChild<GUIImage>().Color = commonness > 0.0f ? Color.White : Color.DarkGray;
|
||||
if (commonness <= 0.0f)
|
||||
|
||||
@@ -790,12 +790,16 @@ namespace Barotrauma
|
||||
|
||||
var winScoreContainer = CreateLabeledSlider(gameModeSettingsContent, headerTag: string.Empty, valueLabelTag: string.Empty, tooltipTag: "ServerSettingsWinScorePvPTooltip",
|
||||
out var winScorePvPSlider, out var winScorePvPSliderLabel);
|
||||
winScorePvPSlider.Range = new Vector2(1, 1000);
|
||||
winScorePvPSlider.StepValue = 1;
|
||||
winScorePvPSlider.Range = new Vector2(10, 1000);
|
||||
winScorePvPSlider.StepValue = 10;
|
||||
winScorePvPSlider.OnMoved = (scrollBar, _) =>
|
||||
{
|
||||
if (scrollBar.UserData is not GUITextBlock text) { return false; }
|
||||
text.Text = TextManager.GetWithVariable("ServerSettingsWinScoreValuePvP", "[value]", ((int)Math.Round(scrollBar.BarScrollValue, digits: 0)).ToString());
|
||||
return true;
|
||||
};
|
||||
winScorePvPSlider.OnReleased = (scrollBar, _) =>
|
||||
{
|
||||
GameMain.Client?.ServerSettings.ClientAdminWrite(ServerSettings.NetFlags.Properties);
|
||||
return true;
|
||||
};
|
||||
@@ -931,7 +935,7 @@ namespace Barotrauma
|
||||
//do this before adding the contents, otherwise they get disabled too (and we just want to disable the dropdown itself)
|
||||
clientDisabledElements.AddRange(biomeHolder.GetAllChildren());
|
||||
biomeDropdown.AddItem(TextManager.Get("random"), "Random".ToIdentifier());
|
||||
foreach (var biome in Biome.Prefabs)
|
||||
foreach (var biome in Biome.Prefabs.OrderBy(b => b.MinDifficulty))
|
||||
{
|
||||
if (biome.IsEndBiome) { continue; }
|
||||
biomeDropdown.AddItem(biome.DisplayName, biome.Identifier);
|
||||
@@ -1195,7 +1199,7 @@ namespace Barotrauma
|
||||
var respawnModeHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), settingsContent.RectTransform), isHorizontal: true, childAnchor: Anchor.CenterLeft) { Stretch = true };
|
||||
respawnModeLabel = new GUITextBlock(new RectTransform(new Vector2(0.4f, 0.0f), respawnModeHolder.RectTransform), TextManager.Get("RespawnMode"), wrap: true);
|
||||
respawnModeSelection = new GUISelectionCarousel<RespawnMode>(new RectTransform(new Vector2(0.6f, 1.0f), respawnModeHolder.RectTransform));
|
||||
foreach (var respawnMode in Enum.GetValues(typeof(RespawnMode)).Cast<RespawnMode>())
|
||||
foreach (var respawnMode in Enum.GetValues(typeof(RespawnMode)).Cast<RespawnMode>().Where(rm => rm != RespawnMode.None))
|
||||
{
|
||||
respawnModeSelection.AddElement(respawnMode, TextManager.Get($"respawnmode.{respawnMode}"), TextManager.Get($"respawnmode.{respawnMode}.tooltip"));
|
||||
}
|
||||
@@ -3005,10 +3009,13 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
outpostDropdown.ListBox.Select(prevSelected);
|
||||
GameMain.Client.ServerSettings.AssignGUIComponent(nameof(ServerSettings.SelectedOutpostName), outpostDropdown);
|
||||
}
|
||||
else
|
||||
{
|
||||
outpostDropdown.Parent.Visible = false;
|
||||
//remove assignment, we shouldn't try selecting the outpost when there's none to select
|
||||
GameMain.Client.ServerSettings.AssignGUIComponent(nameof(ServerSettings.SelectedOutpostName), null);
|
||||
}
|
||||
outpostDropdownUpToDate = true;
|
||||
}
|
||||
|
||||
@@ -1003,6 +1003,8 @@ namespace Barotrauma
|
||||
|
||||
private bool ShouldShowServer(ServerInfo serverInfo)
|
||||
{
|
||||
if (serverInfo == null) { return false; }
|
||||
|
||||
#if !DEBUG
|
||||
//never show newer versions
|
||||
//(ignore revision number, it doesn't affect compatibility)
|
||||
|
||||
@@ -56,7 +56,8 @@ namespace Barotrauma
|
||||
WaterInHulls,
|
||||
LowOxygenOutputWarning,
|
||||
TooLargeForEndGame,
|
||||
NotEnoughContainers
|
||||
NotEnoughContainers,
|
||||
NoSuitableBrainRooms
|
||||
}
|
||||
|
||||
public static Vector2 MouseDragStart = Vector2.Zero;
|
||||
@@ -1308,7 +1309,7 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
GUITextBlock textBlock = new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), paddedFrame.RectTransform, Anchor.BottomCenter),
|
||||
text: name, textAlignment: Alignment.Center, font: GUIStyle.SmallFont)
|
||||
text: RichString.Rich(name), textAlignment: Alignment.Center, font: GUIStyle.SmallFont)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
@@ -1320,7 +1321,7 @@ namespace Barotrauma
|
||||
textBlock.Text = frame.ToolTip = ep.Identifier.Value;
|
||||
textBlock.TextColor = GUIStyle.Red;
|
||||
}
|
||||
textBlock.Text = ToolBox.LimitString(textBlock.Text, textBlock.Font, textBlock.Rect.Width);
|
||||
textBlock.Text = ToolBox.LimitString(textBlock.Text.SanitizedString, textBlock.Font, textBlock.Rect.Width);
|
||||
|
||||
if (ep.Category == MapEntityCategory.ItemAssembly
|
||||
&& ep.ContentPackage?.Files.Length == 1
|
||||
@@ -5794,7 +5795,7 @@ namespace Barotrauma
|
||||
foreach (LightComponent lightComponent in item.GetComponents<LightComponent>())
|
||||
{
|
||||
lightComponent.Light.Color =
|
||||
(item.body == null || item.body.Enabled || item.ParentInventory is ItemInventory { Container.HideItems: true }) &&
|
||||
(item.body == null || item.body.Enabled || item.ParentInventory is ItemInventory { Container.HideItems: false }) &&
|
||||
/*the light is only visible when worn -> can't be visible in the editor*/
|
||||
lightComponent.Parent is not Wearable ?
|
||||
lightComponent.LightColor :
|
||||
|
||||
Reference in New Issue
Block a user