Faction Test 100.4.0.0
This commit is contained in:
@@ -5,6 +5,7 @@ using System.Collections.Generic;
|
||||
using System.Collections.Immutable;
|
||||
using System.Linq;
|
||||
using Microsoft.Xna.Framework.Input;
|
||||
using Barotrauma.Extensions;
|
||||
|
||||
namespace Barotrauma
|
||||
{
|
||||
@@ -98,7 +99,7 @@ namespace Barotrauma
|
||||
OnClicked = (btn, userData) =>
|
||||
{
|
||||
Rand.SetSyncedSeed(ToolBox.StringToInt(this.Seed));
|
||||
Generate(GameMain.GameSession.GameMode is CampaignMode campaign ? campaign.Settings : CampaignSettings.Empty);
|
||||
Generate(GameMain.GameSession?.Campaign);
|
||||
InitProjectSpecific();
|
||||
return true;
|
||||
}
|
||||
@@ -186,7 +187,7 @@ namespace Barotrauma
|
||||
|
||||
private void LocationChanged(Location prevLocation, Location newLocation)
|
||||
{
|
||||
if (prevLocation == newLocation) return;
|
||||
if (prevLocation == newLocation) { return; }
|
||||
//focus on starting location
|
||||
if (prevLocation != null)
|
||||
{
|
||||
@@ -252,27 +253,104 @@ namespace Barotrauma
|
||||
return !tileDiscovered[MathHelper.Clamp(x, 0, tileDiscovered.Length), MathHelper.Clamp(y, 0, tileDiscovered.Length)];
|
||||
}
|
||||
|
||||
private class MapNotification
|
||||
{
|
||||
public readonly RichString Text;
|
||||
public readonly GUIFont Font;
|
||||
|
||||
public readonly Vector2 TextSize;
|
||||
|
||||
public int TimesShown;
|
||||
|
||||
public float Offset;
|
||||
|
||||
public readonly Location RelatedLocation;
|
||||
|
||||
public bool IsCurrentlyVisible;
|
||||
|
||||
public MapNotification(string text, GUIFont font, List<MapNotification> existingNotifications, Location relatedLocation)
|
||||
{
|
||||
Text = RichString.Rich(text);
|
||||
Font = font;
|
||||
TextSize = Font.MeasureString(Font.ForceUpperCase ? Text.SanitizedValue.ToUpper() : Text.SanitizedValue);
|
||||
if (existingNotifications.Any())
|
||||
{
|
||||
Offset = existingNotifications.Max(n => n.Offset + n.TextSize.X + GUI.IntScale(60));
|
||||
}
|
||||
RelatedLocation = relatedLocation;
|
||||
}
|
||||
}
|
||||
|
||||
private readonly List<MapNotification> mapNotifications = new List<MapNotification>();
|
||||
|
||||
partial void ChangeLocationTypeProjSpecific(Location location, string prevName, LocationTypeChange change)
|
||||
{
|
||||
if (change.Messages.Any())
|
||||
var messages = change.GetMessages(location.Faction);
|
||||
if (!messages.Any()) { return; }
|
||||
|
||||
string msg = messages.GetRandom(Rand.RandSync.Unsynced)
|
||||
.Replace("[previousname]", $"‖color:gui.yellow‖{prevName}‖end‖")
|
||||
.Replace("[name]", $"‖color:gui.yellow‖{location.Name}‖end‖");
|
||||
location.LastTypeChangeMessage = msg;
|
||||
|
||||
mapNotifications.Add(new MapNotification(msg, GUIStyle.SubHeadingFont, mapNotifications, location));
|
||||
}
|
||||
|
||||
public void DrawNotifications(SpriteBatch spriteBatch, GUICustomComponent container)
|
||||
{
|
||||
Vector2 pos = new Vector2(container.Rect.Right, container.Rect.Center.Y);
|
||||
foreach (var notification in mapNotifications)
|
||||
{
|
||||
string msg = change.Messages[Rand.Range(0, change.Messages.Count)]
|
||||
.Replace("[previousname]", $"‖color:gui.orange‖{prevName}‖end‖")
|
||||
.Replace("[name]", $"‖color:gui.orange‖{location.Name}‖end‖");
|
||||
location.LastTypeChangeMessage = msg;
|
||||
if (GameMain.Client != null)
|
||||
Vector2 textPos = pos + new Vector2(notification.Offset, -notification.TextSize.Y / 2);
|
||||
|
||||
notification.Font.DrawStringWithColors(
|
||||
spriteBatch,
|
||||
notification.Text.SanitizedValue,
|
||||
textPos,
|
||||
Color.White, 0.0f, Vector2.Zero, 1.0f, SpriteEffects.None, 0,
|
||||
notification.Text.RichTextData);
|
||||
|
||||
int margin = container.Rect.Width / 5;
|
||||
notification.IsCurrentlyVisible =
|
||||
textPos.X < container.Rect.Right - margin &&
|
||||
textPos.X + notification.TextSize.X > container.Rect.X + margin;
|
||||
}
|
||||
}
|
||||
|
||||
private void UpdateNotifications(float deltaTime, GUICustomComponent mapContainer)
|
||||
{
|
||||
if (mapNotifications.Count < 5)
|
||||
{
|
||||
int maxIndex = 1;
|
||||
while (TextManager.ContainsTag("randomnews" + maxIndex))
|
||||
{
|
||||
GameMain.Client.AddChatMessage(msg, Networking.ChatMessageType.Default, TextManager.Get("RadioAnnouncerName").Value);
|
||||
maxIndex++;
|
||||
}
|
||||
else
|
||||
string textTag = "randomnews" + Rand.Range(0, maxIndex);
|
||||
if (TextManager.ContainsTag(textTag))
|
||||
{
|
||||
GameMain.GameSession?.GameMode.CrewManager.AddSinglePlayerChatMessage(
|
||||
TextManager.Get("RadioAnnouncerName").Value,
|
||||
msg,
|
||||
Networking.ChatMessageType.Default,
|
||||
sender: null);
|
||||
mapNotifications.Add(new MapNotification(TextManager.Get(textTag).Value, GUIStyle.SubHeadingFont, mapNotifications, relatedLocation: null));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (int i = mapNotifications.Count - 1; i >= 0; i--)
|
||||
{
|
||||
var notification = mapNotifications[i];
|
||||
notification.Offset -= deltaTime * 75.0f;
|
||||
if (notification.Offset < -notification.TextSize.X - mapContainer.Rect.Width)
|
||||
{
|
||||
notification.Offset = Math.Max(mapNotifications.Max(n => n.Offset + n.TextSize.X) + GUI.IntScale(60), 0);
|
||||
notification.TimesShown++;
|
||||
if (mapNotifications.Count > 5)
|
||||
{
|
||||
mapNotifications.RemoveAt(i);
|
||||
}
|
||||
else if (mapNotifications.Count > 3 && notification.TimesShown > 2)
|
||||
{
|
||||
mapNotifications.RemoveAt(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
partial void ClearAnimQueue()
|
||||
@@ -280,18 +358,19 @@ namespace Barotrauma
|
||||
mapAnimQueue.Clear();
|
||||
}
|
||||
|
||||
public void Update(float deltaTime, GUICustomComponent mapContainer)
|
||||
public void Update(CampaignMode campaign, float deltaTime, GUICustomComponent mapContainer)
|
||||
{
|
||||
Rectangle rect = mapContainer.Rect;
|
||||
|
||||
var currentDisplayLocation = GameMain.GameSession?.Campaign?.GetCurrentDisplayLocation();
|
||||
UpdateNotifications(deltaTime, mapContainer);
|
||||
|
||||
var currentDisplayLocation = campaign?.GetCurrentDisplayLocation();
|
||||
if (currentDisplayLocation != null)
|
||||
{
|
||||
if (!currentDisplayLocation.Discovered)
|
||||
{
|
||||
RemoveFogOfWar(currentDisplayLocation);
|
||||
currentDisplayLocation.Discover();
|
||||
Discover(currentDisplayLocation);
|
||||
if (currentDisplayLocation.MapPosition.X > furthestDiscoveredLocation.MapPosition.X)
|
||||
{
|
||||
furthestDiscoveredLocation = currentDisplayLocation;
|
||||
@@ -452,13 +531,13 @@ namespace Barotrauma
|
||||
Level.Loaded.DebugSetStartLocation(CurrentLocation);
|
||||
Level.Loaded.DebugSetEndLocation(null);
|
||||
|
||||
CurrentLocation.Discover();
|
||||
Discover(CurrentLocation);
|
||||
OnLocationChanged?.Invoke(new LocationChangeInfo(prevLocation, CurrentLocation));
|
||||
SelectLocation(-1);
|
||||
if (GameMain.Client == null)
|
||||
{
|
||||
CurrentLocation.CreateStores();
|
||||
ProgressWorld();
|
||||
ProgressWorld(campaign);
|
||||
Radiation?.OnStep(1);
|
||||
}
|
||||
else
|
||||
@@ -481,10 +560,10 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
public void Draw(SpriteBatch spriteBatch, GUICustomComponent mapContainer)
|
||||
public void Draw(CampaignMode campaign, SpriteBatch spriteBatch, GUICustomComponent mapContainer)
|
||||
{
|
||||
tooltip = null;
|
||||
var currentDisplayLocation = GameMain.GameSession?.Campaign?.GetCurrentDisplayLocation();
|
||||
var currentDisplayLocation = campaign?.GetCurrentDisplayLocation();
|
||||
|
||||
Rectangle rect = mapContainer.Rect;
|
||||
|
||||
@@ -568,7 +647,9 @@ namespace Barotrauma
|
||||
for (int i = 0; i < Locations.Count; i++)
|
||||
{
|
||||
Location location = Locations[i];
|
||||
if (IsInFogOfWar(location)) { continue; }
|
||||
if (!location.Discovered && IsInFogOfWar(location)) { continue; }
|
||||
bool isEndLocation = endLocations.Contains(location);
|
||||
if (!GameMain.DebugDraw && isEndLocation && location != endLocations.First()) { continue; }
|
||||
Vector2 pos = rectCenter + (location.MapPosition + viewOffset) * zoom;
|
||||
|
||||
Sprite locationSprite = location.IsCriticallyRadiated() ? location.Type.RadiationSprite ?? location.Type.Sprite : location.Type.Sprite;
|
||||
@@ -587,14 +668,32 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
float iconScale = location == currentDisplayLocation ? 1.2f : 1.0f;
|
||||
if (location == HighlightedLocation)
|
||||
if (location == HighlightedLocation) { iconScale *= 1.2f; }
|
||||
if (isEndLocation) { iconScale *= 2.0f; }
|
||||
|
||||
float notificationPulseAmount = 1.0f;
|
||||
float notificationColorLerp = 0.0f;
|
||||
if (mapNotifications.Any(n => n.RelatedLocation == location && n.IsCurrentlyVisible))
|
||||
{
|
||||
iconScale *= 1.2f;
|
||||
float sin = MathF.Sin((float)Timing.TotalTime * 2.0f);
|
||||
notificationPulseAmount = Math.Max(sin + 0.5f, 1.0f);
|
||||
notificationColorLerp = (notificationPulseAmount - 1.0f) * 4.0f;
|
||||
color = Color.Lerp(color, GUIStyle.Yellow, notificationColorLerp);
|
||||
iconScale *= notificationPulseAmount;
|
||||
}
|
||||
|
||||
locationSprite.Draw(spriteBatch, pos, color,
|
||||
locationSprite.Draw(spriteBatch, pos, color,
|
||||
scale: generationParams.LocationIconSize / locationSprite.size.X * iconScale * zoom);
|
||||
|
||||
if (location.Faction != null)
|
||||
{
|
||||
float factionIconScale = iconScale * 0.7f;
|
||||
Sprite factionIcon = location.Faction.Prefab.IconSmall ?? location.Faction.Prefab.Icon;
|
||||
Color factionIconColor = Color.Lerp(color, location.Faction.Prefab.IconColor, notificationColorLerp);
|
||||
factionIcon.Draw(spriteBatch, pos + new Vector2(-15, 15) * zoom, factionIconColor,
|
||||
scale: generationParams.LocationIconSize / factionIcon.size.X * factionIconScale * zoom);
|
||||
}
|
||||
|
||||
if (location == currentDisplayLocation)
|
||||
{
|
||||
if (SelectedLocation != null)
|
||||
@@ -626,7 +725,10 @@ namespace Barotrauma
|
||||
{
|
||||
Vector2 typeChangeIconPos = pos + new Vector2(1.35f, -0.35f) * generationParams.LocationIconSize * 0.5f * zoom;
|
||||
float typeChangeIconScale = 18.0f / generationParams.TypeChangeIcon.SourceRect.Width;
|
||||
generationParams.TypeChangeIcon.Draw(spriteBatch, typeChangeIconPos, GUIStyle.Red, scale: typeChangeIconScale * zoom);
|
||||
Color iconColor = GUIStyle.Red;
|
||||
color = Color.Lerp(color, GUIStyle.Yellow, notificationColorLerp);
|
||||
iconScale *= notificationPulseAmount;
|
||||
generationParams.TypeChangeIcon.Draw(spriteBatch, typeChangeIconPos, iconColor, scale: typeChangeIconScale * zoom);
|
||||
if (Vector2.Distance(PlayerInput.MousePosition, typeChangeIconPos) < generationParams.TypeChangeIcon.SourceRect.Width * zoom &&
|
||||
(tooltip == null || IsPreferredTooltip(typeChangeIconPos)))
|
||||
{
|
||||
@@ -635,14 +737,18 @@ namespace Barotrauma
|
||||
}
|
||||
if (location != CurrentLocation && generationParams.MissionIcon != null)
|
||||
{
|
||||
if ((CurrentLocation == currentDisplayLocation && CurrentLocation.AvailableMissions.Any(m => m.Locations.Contains(location))) || location.AvailableMissions.Any(m => m.Prefab.Type == MissionType.GoTo))
|
||||
if ((CurrentLocation == currentDisplayLocation && CurrentLocation.AvailableMissions.Any(m => m.Locations.Contains(location))) ||
|
||||
location.AvailableMissions.Any(m => m.Locations[0] == m.Locations[1]))
|
||||
{
|
||||
Vector2 missionIconPos = pos + new Vector2(1.35f, 0.35f) * generationParams.LocationIconSize * 0.5f * zoom;
|
||||
float missionIconScale = 18.0f / generationParams.MissionIcon.SourceRect.Width;
|
||||
generationParams.MissionIcon.Draw(spriteBatch, missionIconPos, generationParams.IndicatorColor, scale: missionIconScale * zoom);
|
||||
if (Vector2.Distance(PlayerInput.MousePosition, missionIconPos) < generationParams.MissionIcon.SourceRect.Width * zoom && IsPreferredTooltip(missionIconPos))
|
||||
{
|
||||
var availableMissions = CurrentLocation.AvailableMissions.Where(m => m.Locations.Contains(location)).Concat(location.AvailableMissions.Where(m => m.Prefab.Type == MissionType.GoTo)).Distinct();
|
||||
var availableMissions = CurrentLocation.AvailableMissions
|
||||
.Where(m => m.Locations.Contains(location))
|
||||
.Concat(location.AvailableMissions.Where(m => m.Locations[0] == m.Locations[1]))
|
||||
.Distinct();
|
||||
tooltip = (new Rectangle(missionIconPos.ToPoint(), new Point(30)), TextManager.Get("mission") + '\n'+ string.Join('\n', availableMissions.Select(m => "- " + m.Name)));
|
||||
}
|
||||
}
|
||||
@@ -651,23 +757,12 @@ namespace Barotrauma
|
||||
if (GameMain.DebugDraw)
|
||||
{
|
||||
Vector2 dPos = pos;
|
||||
if (location == HighlightedLocation && (!location.Discovered || !location.HasOutpost()) && location.Reputation != null)
|
||||
if (location == HighlightedLocation)
|
||||
{
|
||||
dPos.Y += 48;
|
||||
string name = $"Reputation: {location.Name}";
|
||||
Vector2 nameSize = GUIStyle.SmallFont.MeasureString(name);
|
||||
GUI.DrawString(spriteBatch, dPos, name, Color.White, Color.Black * 0.8f, 4, font: GUIStyle.SmallFont);
|
||||
dPos.Y += nameSize.Y + 16;
|
||||
|
||||
Rectangle bgRect = new Rectangle((int)dPos.X, (int)dPos.Y, 256, 32);
|
||||
bgRect.Inflate(8,8);
|
||||
Color barColor = ToolBox.GradientLerp(location.Reputation.NormalizedValue, Color.Red, Color.Yellow, Color.LightGreen);
|
||||
GUI.DrawRectangle(spriteBatch, bgRect, Color.Black * 0.8f, isFilled: true);
|
||||
GUI.DrawRectangle(spriteBatch, new Rectangle((int)dPos.X, (int)dPos.Y, (int)(location.Reputation.NormalizedValue * 255), 32), barColor, isFilled: true);
|
||||
string reputationValue = ((int)location.Reputation.Value).ToString();
|
||||
Vector2 repValueSize = GUIStyle.SubHeadingFont.MeasureString(reputationValue);
|
||||
GUI.DrawString(spriteBatch, dPos + (new Vector2(256, 32) / 2) - (repValueSize / 2), reputationValue, Color.White, Color.Black, font: GUIStyle.SubHeadingFont);
|
||||
GUI.DrawRectangle(spriteBatch, new Rectangle((int)dPos.X, (int)dPos.Y, 256, 32), Color.White);
|
||||
GUI.DrawString(spriteBatch, dPos + new Vector2(15, 32), "Faction: "+(location.Faction?.Prefab.Name ?? "none"), Color.White, Color.Black, font: GUIStyle.SubHeadingFont);
|
||||
GUI.DrawString(spriteBatch, dPos + new Vector2(15, 50), "Secondary Faction: " + (location.SecondaryFaction?.Prefab.Name ?? "none"), Color.White, Color.Black, font: GUIStyle.SubHeadingFont);
|
||||
dPos.Y += 48;
|
||||
}
|
||||
dPos.Y += 48;
|
||||
GUI.DrawString(spriteBatch, dPos, $"Difficulty: {location.LevelData.Difficulty.FormatSingleDecimal()}", Color.White, Color.Black * 0.8f, 4, font: GUIStyle.SmallFont);
|
||||
@@ -693,11 +788,27 @@ namespace Barotrauma
|
||||
pos.Y = (int)pos.Y;
|
||||
Vector2 nameSize = GUIStyle.LargeFont.MeasureString(HighlightedLocation.Name);
|
||||
Vector2 typeSize = HighlightedLocation.Type.Name.IsNullOrEmpty() ? Vector2.Zero : GUIStyle.Font.MeasureString(HighlightedLocation.Type.Name);
|
||||
Vector2 size = new Vector2(Math.Max(nameSize.X, typeSize.X), nameSize.Y + typeSize.Y);
|
||||
bool showReputation = hudVisibility > 0.0f && HighlightedLocation.Discovered && HighlightedLocation.Type.HasOutpost && HighlightedLocation.Reputation != null;
|
||||
Vector2 factionSize = HighlightedLocation.Faction == null ? Vector2.Zero : GUIStyle.Font.MeasureString(HighlightedLocation.Faction.Prefab.Name);
|
||||
bool showReputation = hudVisibility > 0.0f && HighlightedLocation.Type.HasOutpost && HighlightedLocation.Reputation != null;
|
||||
Vector2 descSize = HighlightedLocation.Type.Description.IsNullOrEmpty() ? Vector2.Zero : GUIStyle.SmallFont.MeasureString(HighlightedLocation.Type.Description);
|
||||
Vector2 size = new Vector2(Math.Max(factionSize.X, Math.Max(nameSize.X, Math.Max(typeSize.X, descSize.X))), nameSize.Y + factionSize.Y+ typeSize.Y + descSize.Y);
|
||||
|
||||
int highestSubTier = HighlightedLocation.HighestSubmarineTierAvailable();
|
||||
var overrideTiers = new List<(SubmarineClass subClass, int tier)>();
|
||||
foreach (SubmarineClass subClass in Enum.GetValues(typeof(SubmarineClass)))
|
||||
{
|
||||
if (subClass == SubmarineClass.Undefined) { continue; }
|
||||
int highestClassTier = HighlightedLocation.HighestSubmarineTierAvailable(subClass);
|
||||
if (highestClassTier > 0 && highestClassTier > highestSubTier)
|
||||
{
|
||||
overrideTiers.Add((subClass, highestClassTier));
|
||||
}
|
||||
}
|
||||
size.Y += ((highestSubTier > 0 ? 1 : 0) + overrideTiers.Count) * GUIStyle.SmallFont.MeasureString(TextManager.Get("advancedsub.all")).Y;
|
||||
|
||||
LocalizedString repLabelText = null, repValueText = null;
|
||||
Vector2 repLabelSize = Vector2.Zero, repBarSize = Vector2.Zero;
|
||||
if (showReputation)
|
||||
if (showReputation && HighlightedLocation.Reputation != null)
|
||||
{
|
||||
repLabelText = TextManager.Get("reputation");
|
||||
repLabelSize = GUIStyle.Font.MeasureString(repLabelText);
|
||||
@@ -706,21 +817,59 @@ namespace Barotrauma
|
||||
repValueText = HighlightedLocation.Reputation.GetFormattedReputationText(addColorTags: false);
|
||||
size.X = Math.Max(size.X, repBarSize.X + GUIStyle.Font.MeasureString(repValueText).X + GUI.IntScale(10));
|
||||
}
|
||||
|
||||
GUIStyle.GetComponentStyle("OuterGlow").Sprites[GUIComponent.ComponentState.None][0].Draw(
|
||||
spriteBatch, new Rectangle((int)(pos.X - 60 * GUI.Scale), (int)(pos.Y - size.Y), (int)(size.X + 120 * GUI.Scale), (int)(size.Y * 2.2f)), Color.Black * hudVisibility);
|
||||
spriteBatch,
|
||||
new Rectangle(
|
||||
(int)(pos.X - 60 * GUI.Scale),
|
||||
(int)(pos.Y - size.Y),
|
||||
(int)(size.X + 120 * GUI.Scale),
|
||||
(int)(size.Y * 2.0f)),
|
||||
Color.Black * hudVisibility);
|
||||
|
||||
var topLeftPos = pos - new Vector2(0.0f, size.Y / 2);
|
||||
GUI.DrawString(spriteBatch, topLeftPos, HighlightedLocation.Name, GUIStyle.TextColorNormal * hudVisibility * 1.5f, font: GUIStyle.LargeFont);
|
||||
topLeftPos += new Vector2(0.0f, nameSize.Y);
|
||||
GUI.DrawString(spriteBatch, topLeftPos, HighlightedLocation.Type.Name, GUIStyle.TextColorNormal * hudVisibility * 1.5f);
|
||||
|
||||
if (!HighlightedLocation.Type.Name.IsNullOrEmpty())
|
||||
{
|
||||
DrawText(HighlightedLocation.Type.Name);
|
||||
topLeftPos += new Vector2(0.0f, typeSize.Y);
|
||||
}
|
||||
if (HighlightedLocation.Faction != null)
|
||||
{
|
||||
GUI.DrawString(spriteBatch, topLeftPos, HighlightedLocation.Faction.Prefab.Name, GUIStyle.TextColorNormal * hudVisibility * 1.5f);
|
||||
topLeftPos += new Vector2(0.0f, factionSize.Y);
|
||||
}
|
||||
if (!HighlightedLocation.Type.Description.IsNullOrEmpty())
|
||||
{
|
||||
DrawText(HighlightedLocation.Type.Description, font: GUIStyle.SmallFont);
|
||||
topLeftPos += new Vector2(0.0f, descSize.Y);
|
||||
}
|
||||
if (highestSubTier > 0)
|
||||
{
|
||||
DrawSubAvailabilityText("advancedsub.all", highestSubTier);
|
||||
}
|
||||
foreach (var (subClass, tier) in overrideTiers)
|
||||
{
|
||||
DrawSubAvailabilityText($"advancedsub.{subClass}", tier);
|
||||
}
|
||||
void DrawSubAvailabilityText(string tag, int tier)
|
||||
{
|
||||
DrawText(TextManager.GetWithVariable(tag, "[tiernumber]", tier.ToString()), font: GUIStyle.SmallFont);
|
||||
topLeftPos += new Vector2(0.0f, typeSize.Y);
|
||||
}
|
||||
if (showReputation)
|
||||
{
|
||||
topLeftPos += new Vector2(0.0f, typeSize.Y + repLabelSize.Y);
|
||||
GUI.DrawString(spriteBatch, topLeftPos, repLabelText.Value, GUIStyle.TextColorNormal * hudVisibility * 1.5f);
|
||||
//topLeftPos += new Vector2(0.0f, typeSize.Y + repLabelSize.Y);
|
||||
DrawText(repLabelText.Value);
|
||||
topLeftPos += new Vector2(0.0f, repLabelSize.Y + GUI.IntScale(10));
|
||||
Rectangle repBarRect = new Rectangle(new Point((int)topLeftPos.X, (int)topLeftPos.Y), new Point((int)repBarSize.X, (int)repBarSize.Y));
|
||||
RoundSummary.DrawReputationBar(spriteBatch, repBarRect, HighlightedLocation.Reputation.NormalizedValue);
|
||||
GUI.DrawString(spriteBatch, new Vector2(repBarRect.Right + GUI.IntScale(5), repBarRect.Top), repValueText.Value, Reputation.GetReputationColor(HighlightedLocation.Reputation.NormalizedValue));
|
||||
}
|
||||
|
||||
void DrawText(LocalizedString text, GUIFont font = null) => GUI.DrawString(spriteBatch, topLeftPos, text, GUIStyle.TextColorNormal * hudVisibility * 1.5f, font: font);
|
||||
}
|
||||
|
||||
if (drawRadiationTooltip)
|
||||
@@ -939,17 +1088,15 @@ namespace Barotrauma
|
||||
if (connection.Locked)
|
||||
{
|
||||
var gateLocation = connection.Locations[0].IsGateBetweenBiomes ? connection.Locations[0] : connection.Locations[1];
|
||||
var unlockEvent =
|
||||
EventPrefab.Prefabs.FirstOrDefault(ep => ep.UnlockPathEvent && ep.BiomeIdentifier == gateLocation.LevelData.Biome.Identifier) ??
|
||||
EventPrefab.Prefabs.FirstOrDefault(ep => ep.UnlockPathEvent && ep.BiomeIdentifier == Identifier.Empty);
|
||||
var unlockEvent = EventPrefab.GetUnlockPathEvent(gateLocation.LevelData.Biome.Identifier, gateLocation.Faction);
|
||||
|
||||
if (unlockEvent != null)
|
||||
{
|
||||
Reputation unlockReputation = CurrentLocation.Reputation;
|
||||
Faction unlockFaction = null;
|
||||
if (!string.IsNullOrEmpty(unlockEvent.UnlockPathFaction))
|
||||
if (!unlockEvent.Faction.IsEmpty)
|
||||
{
|
||||
unlockFaction = GameMain.GameSession.Campaign.Factions.Find(f => f.Prefab.Identifier == unlockEvent.UnlockPathFaction);
|
||||
unlockFaction = GameMain.GameSession.Campaign.Factions.Find(f => f.Prefab.Identifier == unlockEvent.Faction);
|
||||
unlockReputation = unlockFaction?.Reputation;
|
||||
}
|
||||
|
||||
@@ -1020,13 +1167,14 @@ namespace Barotrauma
|
||||
private void DrawDecorativeHUD(SpriteBatch spriteBatch, Rectangle rect)
|
||||
{
|
||||
generationParams.DecorativeGraphSprite.Draw(spriteBatch, (int)((Timing.TotalTime * 5.0f) % generationParams.DecorativeGraphSprite.FrameCount),
|
||||
new Vector2(rect.Left, rect.Top), Color.White, Vector2.Zero, 0, Vector2.One * GUI.Scale);
|
||||
new Vector2(rect.X, rect.Bottom - (generationParams.DecorativeGraphSprite.FrameSize.Y + 30) * GUI.Scale),
|
||||
Color.White, Vector2.Zero, 0, Vector2.One * GUI.Scale, SpriteEffects.FlipVertically);
|
||||
|
||||
GUI.DrawString(spriteBatch,
|
||||
new Vector2(rect.Right - GUI.IntScale(170), rect.Y + GUI.IntScale(5)),
|
||||
"JOVIAN FLUX " + ((cameraNoiseStrength + Rand.Range(-0.02f, 0.02f)) * 500), generationParams.IndicatorColor * hudVisibility, font: GUIStyle.SmallFont);
|
||||
GUI.DrawString(spriteBatch,
|
||||
new Vector2(rect.X + GUI.IntScale(15), rect.Bottom - GUI.IntScale(25)),
|
||||
new Vector2(rect.X + GUI.IntScale(5), rect.Y + GUI.IntScale(5)),
|
||||
"LAT " + (-DrawOffset.Y / 100.0f) + " LON " + (-DrawOffset.X / 100.0f), generationParams.IndicatorColor * hudVisibility, font: GUIStyle.SmallFont);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user