(ce8e185aa) Merge branch 'dev' of https://github.com/Regalis11/Barotrauma-development into dev
This commit is contained in:
@@ -9,12 +9,9 @@ namespace Barotrauma
|
||||
{
|
||||
class CampaignUI
|
||||
{
|
||||
public enum Tab { Map, Crew, Store }
|
||||
public enum Tab { Map, Crew, Store, Repair }
|
||||
private Tab selectedTab;
|
||||
private GUIFrame[] tabs;
|
||||
|
||||
private GUIButton startButton;
|
||||
|
||||
private GUIFrame topPanel;
|
||||
|
||||
private GUIListBox characterList;
|
||||
@@ -26,6 +23,8 @@ namespace Barotrauma
|
||||
private GUIComponent selectedLocationInfo;
|
||||
private GUIListBox selectedMissionInfo;
|
||||
|
||||
private GUIButton repairHullsButton, repairItemsButton;
|
||||
|
||||
private GUIFrame characterPreviewFrame;
|
||||
|
||||
private List<GUIButton> tabButtons = new List<GUIButton>();
|
||||
@@ -39,10 +38,7 @@ namespace Barotrauma
|
||||
|
||||
public GUIComponent MapContainer { get; private set; }
|
||||
|
||||
public GUIButton StartButton
|
||||
{
|
||||
get { return startButton; }
|
||||
}
|
||||
public GUIButton StartButton { get; private set; }
|
||||
|
||||
public CampaignMode Campaign { get; }
|
||||
|
||||
@@ -112,7 +108,7 @@ namespace Barotrauma
|
||||
tabs[(int)Tab.Crew] = new GUIFrame(new RectTransform(new Vector2(0.3f, 0.7f), container.RectTransform, Anchor.TopLeft)
|
||||
{
|
||||
RelativeOffset = new Vector2(0.0f, topPanel.RectTransform.RelativeSize.Y)
|
||||
}, color: Color.Black * 0.7f);
|
||||
}, color: Color.Black * 0.9f);
|
||||
new GUIFrame(new RectTransform(new Vector2(1.25f, 1.25f), tabs[(int)Tab.Crew].RectTransform, Anchor.Center), style: "OuterGlow", color: Color.Black * 0.7f)
|
||||
{
|
||||
CanBeFocused = false
|
||||
@@ -157,7 +153,7 @@ namespace Barotrauma
|
||||
tabs[(int)Tab.Store] = new GUIFrame(new RectTransform(new Vector2(0.5f, 0.7f), container.RectTransform, Anchor.TopLeft)
|
||||
{
|
||||
RelativeOffset = new Vector2(0.1f, topPanel.RectTransform.RelativeSize.Y)
|
||||
}, color: Color.Black * 0.7f);
|
||||
}, color: Color.Black * 0.9f);
|
||||
new GUIFrame(new RectTransform(new Vector2(1.25f, 1.25f), tabs[(int)Tab.Store].RectTransform, Anchor.Center), style: "OuterGlow", color: Color.Black * 0.7f)
|
||||
{
|
||||
CanBeFocused = false
|
||||
@@ -218,6 +214,97 @@ namespace Barotrauma
|
||||
}
|
||||
SelectItemCategory(MapEntityCategory.Equipment);
|
||||
|
||||
// repair tab -------------------------------------------------------------------------
|
||||
|
||||
tabs[(int)Tab.Repair] = new GUIFrame(new RectTransform(new Vector2(0.35f, 0.5f), container.RectTransform, Anchor.TopLeft)
|
||||
{
|
||||
RelativeOffset = new Vector2(0.02f, topPanel.RectTransform.RelativeSize.Y)
|
||||
}, color: Color.Black * 0.9f);
|
||||
new GUIFrame(new RectTransform(new Vector2(1.25f, 1.25f), tabs[(int)Tab.Repair].RectTransform, Anchor.Center), style: "OuterGlow", color: Color.Black * 0.7f)
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
|
||||
var repairContent = new GUILayoutGroup(new RectTransform(new Vector2(0.9f, 0.85f), tabs[(int)Tab.Repair].RectTransform, Anchor.Center))
|
||||
{
|
||||
RelativeSpacing = 0.05f,
|
||||
Stretch = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.2f), crewContent.RectTransform), "", font: GUI.LargeFont)
|
||||
{
|
||||
TextGetter = GetMoney
|
||||
};
|
||||
|
||||
var repairHullsHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), repairContent.RectTransform), childAnchor: Anchor.TopRight)
|
||||
{
|
||||
RelativeSpacing = 0.05f,
|
||||
Stretch = true
|
||||
};
|
||||
new GUIImage(new RectTransform(new Vector2(0.3f, 1.0f), repairHullsHolder.RectTransform, Anchor.CenterLeft), "RepairHullButton")
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
CanBeFocused = false
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), repairHullsHolder.RectTransform), TextManager.Get("RepairAllWalls"), textAlignment: Alignment.Right, font: GUI.LargeFont)
|
||||
{
|
||||
ForceUpperCase = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), repairHullsHolder.RectTransform), "500", textAlignment: Alignment.Right, font: GUI.LargeFont);
|
||||
repairHullsButton = new GUIButton(new RectTransform(new Vector2(0.4f, 0.3f), repairHullsHolder.RectTransform), TextManager.Get("Repair"), style: "GUIButtonLarge")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
if (campaign.Money >= CampaignMode.HullRepairCost)
|
||||
{
|
||||
campaign.Money -= CampaignMode.HullRepairCost;
|
||||
campaign.PurchasedHullRepairs = true;
|
||||
GameMain.Client?.SendCampaignState();
|
||||
btn.GetChild<GUITickBox>().Selected = true;
|
||||
}
|
||||
btn.Enabled = false;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
new GUITickBox(new RectTransform(new Vector2(0.65f), repairHullsButton.RectTransform, Anchor.CenterLeft) { AbsoluteOffset = new Point(10, 0) }, "")
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
|
||||
var repairItemsHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), repairContent.RectTransform), childAnchor: Anchor.TopRight)
|
||||
{
|
||||
RelativeSpacing = 0.05f,
|
||||
Stretch = true
|
||||
};
|
||||
new GUIImage(new RectTransform(new Vector2(0.3f, 1.0f), repairItemsHolder.RectTransform, Anchor.CenterLeft), "RepairItemsButton")
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
CanBeFocused = false
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), repairItemsHolder.RectTransform), TextManager.Get("RepairAllItems"), textAlignment: Alignment.Right, font: GUI.LargeFont)
|
||||
{
|
||||
ForceUpperCase = true
|
||||
};
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), repairItemsHolder.RectTransform), "500", textAlignment: Alignment.Right, font: GUI.LargeFont);
|
||||
repairItemsButton = new GUIButton(new RectTransform(new Vector2(0.4f, 0.3f), repairItemsHolder.RectTransform), TextManager.Get("Repair"), style: "GUIButtonLarge")
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
if (campaign.Money >= CampaignMode.ItemRepairCost)
|
||||
{
|
||||
campaign.Money -= CampaignMode.ItemRepairCost;
|
||||
campaign.PurchasedItemRepairs = true;
|
||||
GameMain.Client?.SendCampaignState();
|
||||
btn.GetChild<GUITickBox>().Selected = true;
|
||||
}
|
||||
btn.Enabled = false;
|
||||
return true;
|
||||
}
|
||||
};
|
||||
new GUITickBox(new RectTransform(new Vector2(0.65f), repairItemsButton.RectTransform, Anchor.CenterLeft) { AbsoluteOffset = new Point(10, 0) }, "")
|
||||
{
|
||||
CanBeFocused = false
|
||||
};
|
||||
|
||||
// mission info -------------------------------------------------------------------------
|
||||
|
||||
missionPanel = new GUIFrame(new RectTransform(new Vector2(0.3f, 0.5f), container.RectTransform, Anchor.TopRight)
|
||||
@@ -330,8 +417,7 @@ namespace Barotrauma
|
||||
bool purchaseableItemsFound = false;
|
||||
foreach (MapEntityPrefab mapEntityPrefab in MapEntityPrefab.List)
|
||||
{
|
||||
var itemPrefab = mapEntityPrefab as ItemPrefab;
|
||||
if (itemPrefab == null) { continue; }
|
||||
if (!(mapEntityPrefab is ItemPrefab itemPrefab)) { continue; }
|
||||
|
||||
PriceInfo priceInfo = itemPrefab.GetPrice(Campaign.Map.CurrentLocation);
|
||||
if (priceInfo != null) { purchaseableItemsFound = true; break; }
|
||||
@@ -349,8 +435,7 @@ namespace Barotrauma
|
||||
{
|
||||
//refresh store view
|
||||
SelectItemCategory(MapEntityCategory.Equipment);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
private void DrawMap(SpriteBatch spriteBatch, GUICustomComponent mapContainer)
|
||||
@@ -452,7 +537,7 @@ namespace Barotrauma
|
||||
|
||||
RefreshMissionTab(selectedMission);
|
||||
|
||||
startButton = new GUIButton(new RectTransform(new Vector2(0.3f, 0.7f), missionContent.RectTransform, Anchor.CenterRight),
|
||||
StartButton = new GUIButton(new RectTransform(new Vector2(0.3f, 0.7f), missionContent.RectTransform, Anchor.CenterRight),
|
||||
TextManager.Get("StartCampaignButton"), style: "GUIButtonLarge")
|
||||
{
|
||||
IgnoreLayoutGroups = true,
|
||||
@@ -461,7 +546,7 @@ namespace Barotrauma
|
||||
};
|
||||
if (GameMain.Client != null)
|
||||
{
|
||||
startButton.Visible = !GameMain.Client.GameStarted &&
|
||||
StartButton.Visible = !GameMain.Client.GameStarted &&
|
||||
(GameMain.Client.HasPermission(Networking.ClientPermissions.ManageRound) ||
|
||||
GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign));
|
||||
}
|
||||
@@ -508,10 +593,10 @@ namespace Barotrauma
|
||||
CanBeFocused = false
|
||||
};
|
||||
|
||||
if (startButton != null)
|
||||
if (StartButton != null)
|
||||
{
|
||||
startButton.Enabled = true;
|
||||
startButton.Visible = GameMain.Client == null ||
|
||||
StartButton.Enabled = true;
|
||||
StartButton.Visible = GameMain.Client == null ||
|
||||
GameMain.Client.HasPermission(Networking.ClientPermissions.ManageRound) ||
|
||||
GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign);
|
||||
}
|
||||
@@ -597,8 +682,7 @@ namespace Barotrauma
|
||||
|
||||
private bool BuyItem(GUIComponent component, object obj)
|
||||
{
|
||||
PurchasedItem pi = obj as PurchasedItem;
|
||||
if (pi == null || pi.ItemPrefab == null) return false;
|
||||
if (!(obj is PurchasedItem pi) || pi.ItemPrefab == null) return false;
|
||||
|
||||
if (GameMain.Client != null && !GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign))
|
||||
{
|
||||
@@ -616,8 +700,7 @@ namespace Barotrauma
|
||||
|
||||
private bool SellItem(GUIComponent component, object obj)
|
||||
{
|
||||
PurchasedItem pi = obj as PurchasedItem;
|
||||
if (pi == null || pi.ItemPrefab == null) return false;
|
||||
if (!(obj is PurchasedItem pi) || pi.ItemPrefab == null) return false;
|
||||
|
||||
if (GameMain.Client != null && !GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign))
|
||||
{
|
||||
@@ -659,6 +742,20 @@ namespace Barotrauma
|
||||
{
|
||||
button.Selected = (Tab)button.UserData == tab;
|
||||
}
|
||||
|
||||
switch (selectedTab)
|
||||
{
|
||||
case Tab.Repair:
|
||||
repairHullsButton.Enabled =
|
||||
!Campaign.PurchasedHullRepairs && Campaign.Money >= CampaignMode.HullRepairCost &&
|
||||
(GameMain.Client == null || GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign));
|
||||
repairHullsButton.GetChild<GUITickBox>().Selected = Campaign.PurchasedHullRepairs;
|
||||
repairItemsButton.Enabled =
|
||||
!Campaign.PurchasedItemRepairs && Campaign.Money >= CampaignMode.ItemRepairCost &&
|
||||
(GameMain.Client == null || GameMain.Client.HasPermission(Networking.ClientPermissions.ManageCampaign));
|
||||
repairItemsButton.GetChild<GUITickBox>().Selected = Campaign.PurchasedItemRepairs;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
private bool SelectItemCategory(MapEntityCategory category)
|
||||
@@ -668,8 +765,7 @@ namespace Barotrauma
|
||||
int width = storeItemList.Rect.Width;
|
||||
foreach (MapEntityPrefab mapEntityPrefab in MapEntityPrefab.List)
|
||||
{
|
||||
var itemPrefab = mapEntityPrefab as ItemPrefab;
|
||||
if (itemPrefab == null || !itemPrefab.Category.HasFlag(category)) continue;
|
||||
if (!(mapEntityPrefab is ItemPrefab itemPrefab) || !itemPrefab.Category.HasFlag(category)) continue;
|
||||
|
||||
PriceInfo priceInfo = itemPrefab.GetPrice(Campaign.Map.CurrentLocation);
|
||||
if (priceInfo == null) continue;
|
||||
@@ -707,9 +803,8 @@ namespace Barotrauma
|
||||
}
|
||||
|
||||
if (prevInfoFrame != null) { tabs[(int)selectedTab].RemoveChild(prevInfoFrame); }
|
||||
|
||||
CharacterInfo characterInfo = selection as CharacterInfo;
|
||||
if (characterInfo == null) { return false; }
|
||||
|
||||
if (!(selection is CharacterInfo characterInfo)) { return false; }
|
||||
if (Character.Controlled != null && characterInfo == Character.Controlled.Info) { return false; }
|
||||
|
||||
if (characterPreviewFrame == null || characterPreviewFrame.UserData != characterInfo)
|
||||
@@ -761,11 +856,9 @@ namespace Barotrauma
|
||||
|
||||
private bool HireCharacter(GUIButton button, object selection)
|
||||
{
|
||||
CharacterInfo characterInfo = selection as CharacterInfo;
|
||||
if (characterInfo == null) { return false; }
|
||||
if (!(selection is CharacterInfo characterInfo)) { return false; }
|
||||
|
||||
SinglePlayerCampaign spCampaign = Campaign as SinglePlayerCampaign;
|
||||
if (spCampaign == null)
|
||||
if (!(Campaign is SinglePlayerCampaign spCampaign))
|
||||
{
|
||||
DebugConsole.ThrowError("Characters can only be hired in the single player campaign.\n" + Environment.StackTrace);
|
||||
return false;
|
||||
@@ -784,11 +877,9 @@ namespace Barotrauma
|
||||
|
||||
private bool FireCharacter(GUIButton button, object selection)
|
||||
{
|
||||
CharacterInfo characterInfo = selection as CharacterInfo;
|
||||
if (characterInfo == null) return false;
|
||||
if (!(selection is CharacterInfo characterInfo)) return false;
|
||||
|
||||
SinglePlayerCampaign spCampaign = Campaign as SinglePlayerCampaign;
|
||||
if (spCampaign == null)
|
||||
if (!(Campaign is SinglePlayerCampaign spCampaign))
|
||||
{
|
||||
DebugConsole.ThrowError("Characters can only be fired in the single player campaign.\n" + Environment.StackTrace);
|
||||
return false;
|
||||
|
||||
@@ -42,16 +42,16 @@ namespace Barotrauma
|
||||
private bool showParamsEditor;
|
||||
private bool showSpritesheet;
|
||||
private bool isFreezed;
|
||||
private bool autoFreeze = true;
|
||||
private bool limbPairEditing = true;
|
||||
private bool uniformScaling = true;
|
||||
private bool lockSpriteOrigin = true;
|
||||
private bool autoFreeze;
|
||||
private bool limbPairEditing;
|
||||
private bool uniformScaling;
|
||||
private bool lockSpriteOrigin;
|
||||
private bool lockSpritePosition;
|
||||
private bool lockSpriteSize;
|
||||
private bool recalculateCollider;
|
||||
private bool copyJointSettings;
|
||||
private bool displayColliders;
|
||||
private bool displayWearables = true;
|
||||
private bool displayWearables;
|
||||
private bool displayBackgroundColor;
|
||||
private bool ragdollResetRequiresForceLoading;
|
||||
private bool animationResetRequiresForceLoading;
|
||||
@@ -89,10 +89,17 @@ namespace Barotrauma
|
||||
public override void Select()
|
||||
{
|
||||
base.Select();
|
||||
|
||||
SoundPlayer.OverrideMusicType = "none";
|
||||
SoundPlayer.OverrideMusicDuration = null;
|
||||
GameMain.SoundManager.SetCategoryGainMultiplier("default", 0.0f);
|
||||
GameMain.SoundManager.SetCategoryGainMultiplier("waterambience", 0.0f);
|
||||
|
||||
GUI.ForceMouseOn(null);
|
||||
CalculateSpritesheetPosition();
|
||||
if (Submarine.MainSub == null)
|
||||
{
|
||||
ResetVariables();
|
||||
Submarine.MainSub = new Submarine("Content/AnimEditor.sub");
|
||||
Submarine.MainSub.Load(unloadPrevious: false, showWarningMessages: false);
|
||||
originalWall = new WallGroup(new List<Structure>(Structure.WallList));
|
||||
@@ -101,6 +108,10 @@ namespace Barotrauma
|
||||
isEndlessRunner = true;
|
||||
GameMain.LightManager.LightingEnabled = false;
|
||||
}
|
||||
else if (instance == null)
|
||||
{
|
||||
ResetVariables();
|
||||
}
|
||||
Submarine.MainSub.GodMode = true;
|
||||
if (Character.Controlled == null)
|
||||
{
|
||||
@@ -118,31 +129,65 @@ namespace Barotrauma
|
||||
instance = this;
|
||||
}
|
||||
|
||||
private void ResetVariables()
|
||||
{
|
||||
editAnimations = false;
|
||||
editLimbs = false;
|
||||
editJoints = false;
|
||||
editIK = false;
|
||||
showRagdoll = false;
|
||||
showParamsEditor = false;
|
||||
showSpritesheet = false;
|
||||
isFreezed = false;
|
||||
autoFreeze = true;
|
||||
limbPairEditing = true;
|
||||
uniformScaling = true;
|
||||
lockSpriteOrigin = false;
|
||||
lockSpritePosition = false;
|
||||
lockSpriteSize = false;
|
||||
recalculateCollider = false;
|
||||
copyJointSettings = false;
|
||||
displayColliders = false;
|
||||
displayWearables = true;
|
||||
displayBackgroundColor = false;
|
||||
ragdollResetRequiresForceLoading = false;
|
||||
animationResetRequiresForceLoading = false;
|
||||
isExtrudingJoint = false;
|
||||
isDrawingJoint = false;
|
||||
Wizard.instance = null;
|
||||
}
|
||||
|
||||
private void Reset()
|
||||
{
|
||||
AnimParams.ForEach(a => a.Reset(true));
|
||||
RagdollParams.Reset(true);
|
||||
RagdollParams.ClearHistory();
|
||||
CurrentAnimation.ClearHistory();
|
||||
if (!character.Removed)
|
||||
ResetVariables();
|
||||
if (character != null)
|
||||
{
|
||||
character.Remove();
|
||||
AnimParams.ForEach(a => a.Reset(true));
|
||||
RagdollParams.Reset(true);
|
||||
RagdollParams.ClearHistory();
|
||||
CurrentAnimation.ClearHistory();
|
||||
if (!character.Removed)
|
||||
{
|
||||
character.Remove();
|
||||
}
|
||||
character = null;
|
||||
}
|
||||
character = null;
|
||||
}
|
||||
|
||||
public override void Deselect()
|
||||
{
|
||||
base.Deselect();
|
||||
|
||||
SoundPlayer.OverrideMusicType = null;
|
||||
GameMain.SoundManager.SetCategoryGainMultiplier("default", GameMain.Config.SoundVolume);
|
||||
GameMain.SoundManager.SetCategoryGainMultiplier("waterambience", GameMain.Config.SoundVolume);
|
||||
|
||||
GUI.ForceMouseOn(null);
|
||||
if (isEndlessRunner)
|
||||
{
|
||||
Submarine.MainSub.Remove();
|
||||
isEndlessRunner = false;
|
||||
if (character != null)
|
||||
{
|
||||
Reset();
|
||||
}
|
||||
Reset();
|
||||
GameMain.World.ProcessChanges();
|
||||
}
|
||||
else
|
||||
@@ -175,7 +220,7 @@ namespace Barotrauma
|
||||
{
|
||||
//base.AddToGUIUpdateList();
|
||||
rightPanel.AddToGUIUpdateList();
|
||||
Wizard.Instance.AddToGUIUpdateList();
|
||||
Wizard.instance?.AddToGUIUpdateList();
|
||||
if (displayBackgroundColor)
|
||||
{
|
||||
backgroundColorPanel.AddToGUIUpdateList();
|
||||
@@ -207,7 +252,7 @@ namespace Barotrauma
|
||||
base.Update(deltaTime);
|
||||
spriteSheetRect = CalculateSpritesheetRectangle();
|
||||
// Handle shortcut keys
|
||||
if (GUI.KeyboardDispatcher.Subscriber == null)
|
||||
if (GUI.KeyboardDispatcher.Subscriber == null && Wizard.instance == null)
|
||||
{
|
||||
if (PlayerInput.KeyDown(Keys.LeftControl))
|
||||
{
|
||||
@@ -396,7 +441,7 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!isFreezed)
|
||||
if (!isFreezed && Wizard.instance == null)
|
||||
{
|
||||
if (character.AnimController.Invalid)
|
||||
{
|
||||
@@ -1131,7 +1176,22 @@ namespace Barotrauma
|
||||
character = Character.Create(configFile, spawnPosition, ToolBox.RandomSeed(8), hasAi: false, ragdoll: ragdoll);
|
||||
selectedJob = null;
|
||||
}
|
||||
character.dontFollowCursor = dontFollowCursor;
|
||||
if (character != null)
|
||||
{
|
||||
character.dontFollowCursor = dontFollowCursor;
|
||||
}
|
||||
if (character == null)
|
||||
{
|
||||
if (currentCharacterConfig == configFile)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
else
|
||||
{
|
||||
// Respawn the current character;
|
||||
SpawnCharacter(currentCharacterConfig);
|
||||
}
|
||||
}
|
||||
OnPostSpawn();
|
||||
return character;
|
||||
}
|
||||
@@ -1247,27 +1307,33 @@ namespace Barotrauma
|
||||
string speciesName = name;
|
||||
// Config file
|
||||
string configFilePath = Path.Combine(mainFolder, $"{speciesName}.xml").Replace(@"\", @"/");
|
||||
if (ContentPackage.GetFilesOfType(GameMain.SelectedPackages, ContentType.Character).None(path => path.Contains(speciesName)))
|
||||
if (ContentPackage.GetFilesOfType(GameMain.SelectedPackages, ContentType.Character).Any(path => path.Contains(speciesName)))
|
||||
{
|
||||
// Create the config file
|
||||
XElement mainElement = new XElement("Character",
|
||||
new XAttribute("name", speciesName),
|
||||
new XAttribute("humanoid", isHumanoid),
|
||||
new XElement("ragdolls", new XAttribute("folder", Path.Combine(mainFolder, $"Ragdolls/").Replace(@"\", @"/"))),
|
||||
new XElement("animations", new XAttribute("folder", Path.Combine(mainFolder, $"Animations/").Replace(@"\", @"/"))),
|
||||
new XElement("health"),
|
||||
new XElement("ai"));
|
||||
XDocument doc = new XDocument(mainElement);
|
||||
if (!Directory.Exists(mainFolder))
|
||||
{
|
||||
Directory.CreateDirectory(mainFolder);
|
||||
}
|
||||
doc.Save(configFilePath);
|
||||
// Add to the selected content package
|
||||
contentPackage.AddFile(configFilePath, ContentType.Character);
|
||||
contentPackage.Save(contentPackage.Path);
|
||||
DebugConsole.NewMessage(GetCharacterEditorTranslation("ContentPackageSaved").Replace("[path]", contentPackage.Path));
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("ExistingCharacterFound"), Color.Red, font: GUI.LargeFont);
|
||||
// TODO: add a prompt: "Do you want to replace it?" + functionality
|
||||
return false;
|
||||
}
|
||||
|
||||
// Create the config file
|
||||
XElement mainElement = new XElement("Character",
|
||||
new XAttribute("name", speciesName),
|
||||
new XAttribute("humanoid", isHumanoid),
|
||||
new XElement("ragdolls", new XAttribute("folder", Path.Combine(mainFolder, $"Ragdolls/").Replace(@"\", @"/"))),
|
||||
new XElement("animations", new XAttribute("folder", Path.Combine(mainFolder, $"Animations/").Replace(@"\", @"/"))),
|
||||
new XElement("health"),
|
||||
new XElement("ai"));
|
||||
|
||||
XDocument doc = new XDocument(mainElement);
|
||||
if (!Directory.Exists(mainFolder))
|
||||
{
|
||||
Directory.CreateDirectory(mainFolder);
|
||||
}
|
||||
doc.Save(configFilePath);
|
||||
// Add to the selected content package
|
||||
contentPackage.AddFile(configFilePath, ContentType.Character);
|
||||
contentPackage.Save(contentPackage.Path);
|
||||
DebugConsole.NewMessage(GetCharacterEditorTranslation("ContentPackageSaved").Replace("[path]", contentPackage.Path));
|
||||
|
||||
// Ragdoll
|
||||
string ragdollFolder = RagdollParams.GetFolder(speciesName);
|
||||
string ragdollPath = RagdollParams.GetDefaultFile(speciesName);
|
||||
@@ -1278,12 +1344,20 @@ namespace Barotrauma
|
||||
string animFolder = AnimationParams.GetFolder(speciesName);
|
||||
foreach (AnimationType animType in Enum.GetValues(typeof(AnimationType)))
|
||||
{
|
||||
if (animType != AnimationType.NotDefined)
|
||||
switch (animType)
|
||||
{
|
||||
Type type = AnimationParams.GetParamTypeFromAnimType(animType, isHumanoid);
|
||||
string fullPath = AnimationParams.GetDefaultFile(speciesName, animType);
|
||||
AnimationParams.Create(fullPath, speciesName, animType, type);
|
||||
case AnimationType.Walk:
|
||||
case AnimationType.Run:
|
||||
if (!ragdollParams.CanEnterSubmarine) { continue; }
|
||||
break;
|
||||
case AnimationType.SwimSlow:
|
||||
case AnimationType.SwimFast:
|
||||
break;
|
||||
default: continue;
|
||||
}
|
||||
Type type = AnimationParams.GetParamTypeFromAnimType(animType, isHumanoid);
|
||||
string fullPath = AnimationParams.GetDefaultFile(speciesName, animType);
|
||||
AnimationParams.Create(fullPath, speciesName, animType, type);
|
||||
}
|
||||
if (!AllFiles.Contains(configFilePath))
|
||||
{
|
||||
@@ -3764,7 +3838,7 @@ namespace Barotrauma
|
||||
void RecalculateCollider(Limb l)
|
||||
{
|
||||
// We want the collider to be slightly smaller than the source rect, because the source rect is usually a bit bigger than the graphic.
|
||||
float multiplier = 0.75f;
|
||||
float multiplier = 0.85f;
|
||||
l.body.SetSize(new Vector2(ConvertUnits.ToSimUnits(width), ConvertUnits.ToSimUnits(height)) * RagdollParams.LimbScale * RagdollParams.TextureScale * multiplier);
|
||||
TryUpdateLimbParam(l, "radius", ConvertUnits.ToDisplayUnits(l.body.radius / RagdollParams.LimbScale / RagdollParams.TextureScale));
|
||||
TryUpdateLimbParam(l, "width", ConvertUnits.ToDisplayUnits(l.body.width / RagdollParams.LimbScale / RagdollParams.TextureScale));
|
||||
@@ -4283,7 +4357,7 @@ namespace Barotrauma
|
||||
private List<XElement> jointXElements = new List<XElement>();
|
||||
private List<GUIComponent> jointGUIElements = new List<GUIComponent>();
|
||||
|
||||
private static Wizard instance;
|
||||
public static Wizard instance;
|
||||
public static Wizard Instance
|
||||
{
|
||||
get
|
||||
@@ -4314,7 +4388,6 @@ namespace Barotrauma
|
||||
break;
|
||||
case Tab.None:
|
||||
default:
|
||||
//activeView = null;
|
||||
instance = null;
|
||||
break;
|
||||
}
|
||||
@@ -4343,7 +4416,7 @@ namespace Barotrauma
|
||||
GUITextBox xmlPathElement = null;
|
||||
void UpdatePaths()
|
||||
{
|
||||
string pathBase = $"Content/Characters/{Name}/{Name}";
|
||||
string pathBase = $"Mods/Characters/{Name}/{Name}";
|
||||
XMLPath = $"{pathBase}.xml";
|
||||
TexturePath = $"{pathBase}.png";
|
||||
texturePathElement.Text = TexturePath;
|
||||
@@ -4422,7 +4495,7 @@ namespace Barotrauma
|
||||
// Cancel
|
||||
box.Buttons[0].OnClicked += (b, d) =>
|
||||
{
|
||||
Instance.SelectTab(Tab.None);
|
||||
Wizard.Instance.SelectTab(Tab.None);
|
||||
return true;
|
||||
};
|
||||
// Next
|
||||
@@ -4434,7 +4507,7 @@ namespace Barotrauma
|
||||
texturePathElement.Flash(Color.Red);
|
||||
return false;
|
||||
}
|
||||
Instance.SelectTab(Tab.Ragdoll);
|
||||
Wizard.Instance.SelectTab(Tab.Ragdoll);
|
||||
return true;
|
||||
};
|
||||
return box;
|
||||
@@ -4575,7 +4648,7 @@ namespace Barotrauma
|
||||
// Previous
|
||||
box.Buttons[0].OnClicked += (b, d) =>
|
||||
{
|
||||
Instance.SelectTab(Tab.Character);
|
||||
Wizard.Instance.SelectTab(Tab.Character);
|
||||
return true;
|
||||
};
|
||||
// Parse and create
|
||||
@@ -4666,7 +4739,7 @@ namespace Barotrauma
|
||||
{
|
||||
GUI.AddMessage(GetCharacterEditorTranslation("CharacterCreated").Replace("[name]", Name), Color.Green, font: GUI.Font);
|
||||
}
|
||||
Instance.SelectTab(Tab.None);
|
||||
Wizard.Instance.SelectTab(Tab.None);
|
||||
return true;
|
||||
};
|
||||
return box;
|
||||
@@ -4846,23 +4919,27 @@ namespace Barotrauma
|
||||
int width = rectInputs[2].IntValue;
|
||||
int height = rectInputs[3].IntValue;
|
||||
var colliderAttributes = new List<XAttribute>();
|
||||
if (width == height)
|
||||
{
|
||||
colliderAttributes.Add(new XAttribute("radius", width / 2));
|
||||
}
|
||||
else
|
||||
{
|
||||
if (height > width)
|
||||
{
|
||||
colliderAttributes.Add(new XAttribute("radius", width / 2));
|
||||
colliderAttributes.Add(new XAttribute("height", height - width));
|
||||
}
|
||||
else
|
||||
{
|
||||
colliderAttributes.Add(new XAttribute("radius", height / 2));
|
||||
colliderAttributes.Add(new XAttribute("width", width - height));
|
||||
}
|
||||
}
|
||||
// Capsules/Circles
|
||||
//if (width == height)
|
||||
//{
|
||||
// colliderAttributes.Add(new XAttribute("radius", (int)(width / 2 * 0.85f)));
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// if (height > width)
|
||||
// {
|
||||
// colliderAttributes.Add(new XAttribute("radius", (int)(width / 2 * 0.85f)));
|
||||
// colliderAttributes.Add(new XAttribute("height",(int) (height - width * 0.85f)));
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// colliderAttributes.Add(new XAttribute("radius", (int)(height / 2 * 0.85f)));
|
||||
// colliderAttributes.Add(new XAttribute("width", (int)(width - height * 0.85f)));
|
||||
// }
|
||||
//}
|
||||
// Rectangles
|
||||
colliderAttributes.Add(new XAttribute("height", (int)(height * 0.85f)));
|
||||
colliderAttributes.Add(new XAttribute("width", (int)(width * 0.85f)));
|
||||
idToCodeName.TryGetValue(id, out string notes);
|
||||
LimbXElements.Add(id.ToString(), new XElement("limb",
|
||||
new XAttribute("id", id),
|
||||
|
||||
@@ -261,7 +261,7 @@ namespace Barotrauma
|
||||
|
||||
public NetLobbyScreen()
|
||||
{
|
||||
defaultModeContainer = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.95f), Frame.RectTransform, Anchor.Center), style: null);
|
||||
defaultModeContainer = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.95f), Frame.RectTransform, Anchor.Center) { MaxSize = new Point(int.MaxValue, GameMain.GraphicsHeight - 100) }, style: null);
|
||||
campaignContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.75f), Frame.RectTransform, Anchor.TopCenter), style: null)
|
||||
{
|
||||
Visible = false
|
||||
@@ -737,11 +737,15 @@ namespace Barotrauma
|
||||
spectateButton.Visible = GameMain.Client.GameStarted;
|
||||
ReadyToStartBox.Visible = !GameMain.Client.GameStarted;
|
||||
ReadyToStartBox.Selected = false;
|
||||
if (campaignUI?.StartButton != null)
|
||||
if (campaignUI != null)
|
||||
{
|
||||
campaignUI.StartButton.Visible = !GameMain.Client.GameStarted &&
|
||||
(GameMain.Client.HasPermission(ClientPermissions.ManageRound) ||
|
||||
GameMain.Client.HasPermission(ClientPermissions.ManageCampaign));
|
||||
//SelectTab(Tab.Map);
|
||||
if (campaignUI.StartButton != null)
|
||||
{
|
||||
campaignUI.StartButton.Visible = !GameMain.Client.GameStarted &&
|
||||
(GameMain.Client.HasPermission(ClientPermissions.ManageRound) ||
|
||||
GameMain.Client.HasPermission(ClientPermissions.ManageCampaign));
|
||||
}
|
||||
}
|
||||
GameMain.Client.SetReadyToStart(ReadyToStartBox);
|
||||
}
|
||||
|
||||
@@ -57,32 +57,20 @@ namespace Barotrauma
|
||||
|
||||
var leftColumn = new GUILayoutGroup(new RectTransform(new Vector2(0.25f, 1.0f), paddedFrame.RectTransform, Anchor.CenterLeft)) { Stretch = true, RelativeSpacing = 0.5f };
|
||||
|
||||
menu = new GUIFrame(new RectTransform(new Point(width, height), GUI.Canvas, Anchor.Center));
|
||||
var infoHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), leftColumn.RectTransform)) { RelativeSpacing = 0.05f };
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(0.95f, 0.133f), menu.RectTransform, Anchor.TopCenter),
|
||||
TextManager.Get("JoinServer"), textAlignment: Alignment.Left, font: GUI.LargeFont) { ForceUpperCase = true };
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.3f), infoHolder.RectTransform, Anchor.Center), TextManager.Get("JoinServer"), font: GUI.LargeFont)
|
||||
{ ForceUpperCase = true };
|
||||
|
||||
var paddedFrame = new GUIFrame(new RectTransform(new Vector2(0.95f, 0.95f), menu.RectTransform, Anchor.Center) { RelativeOffset = new Vector2(0.0f, 0.03f) }, style: null);
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
//left column
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
var leftColumn = new GUILayoutGroup(new RectTransform(new Vector2(0.25f, 0.92f), paddedFrame.RectTransform, Anchor.TopLeft));
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.03f), leftColumn.RectTransform), style: null);
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("YourName"));
|
||||
clientNameBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.045f), leftColumn.RectTransform), "")
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), infoHolder.RectTransform), TextManager.Get("YourName"));
|
||||
clientNameBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.13f), infoHolder.RectTransform), "")
|
||||
{
|
||||
Text = GameMain.Config.DefaultPlayerName
|
||||
};
|
||||
clientNameBox.OnTextChanged += RefreshJoinButtonState;
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("ServerIP"));
|
||||
// TODO: Show IP on server info window
|
||||
ipBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.045f), leftColumn.RectTransform), "");
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), infoHolder.RectTransform), TextManager.Get("ServerIP"));
|
||||
ipBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.13f), infoHolder.RectTransform), "");
|
||||
ipBox.OnTextChanged += RefreshJoinButtonState;
|
||||
ipBox.OnSelected += (sender, key) =>
|
||||
{
|
||||
@@ -92,31 +80,81 @@ namespace Barotrauma
|
||||
sender.UserData = null;
|
||||
}
|
||||
};
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.45f), leftColumn.RectTransform), style: null);
|
||||
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("FilterServers"));
|
||||
searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), "");
|
||||
var filterHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), leftColumn.RectTransform)) { RelativeSpacing = 0.05f };
|
||||
|
||||
//spacing
|
||||
new GUIFrame(new RectTransform(new Vector2(1.0f, 0.03f), leftColumn.RectTransform), style: null);
|
||||
new GUITextBlock(new RectTransform(new Vector2(1.0f, 0.0f), filterHolder.RectTransform), TextManager.Get("FilterServers"));
|
||||
searchBox = new GUITextBox(new RectTransform(new Vector2(1.0f, 0.13f), filterHolder.RectTransform), "");
|
||||
|
||||
var tickBoxHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.5f), filterHolder.RectTransform));
|
||||
|
||||
searchBox.OnTextChanged += (txtBox, txt) => { FilterServers(); return true; };
|
||||
filterPassword = new GUITickBox(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("FilterPassword"));
|
||||
filterPassword = new GUITickBox(new RectTransform(new Vector2(1.0f, 0.27f), tickBoxHolder.RectTransform), TextManager.Get("FilterPassword"));
|
||||
filterPassword.OnSelected += (tickBox) => { FilterServers(); return true; };
|
||||
filterIncompatible = new GUITickBox(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("FilterIncompatibleServers"));
|
||||
filterIncompatible = new GUITickBox(new RectTransform(new Vector2(1.0f, 0.27f), tickBoxHolder.RectTransform), TextManager.Get("FilterIncompatibleServers"));
|
||||
filterIncompatible.OnSelected += (tickBox) => { FilterServers(); return true; };
|
||||
|
||||
filterFull = new GUITickBox(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("FilterFullServers"));
|
||||
filterFull = new GUITickBox(new RectTransform(new Vector2(1.0f, 0.27f), tickBoxHolder.RectTransform), TextManager.Get("FilterFullServers"));
|
||||
filterFull.OnSelected += (tickBox) => { FilterServers(); return true; };
|
||||
filterEmpty = new GUITickBox(new RectTransform(new Vector2(1.0f, 0.05f), leftColumn.RectTransform), TextManager.Get("FilterEmptyServers"));
|
||||
filterEmpty = new GUITickBox(new RectTransform(new Vector2(1.0f, 0.27f), tickBoxHolder.RectTransform), TextManager.Get("FilterEmptyServers"));
|
||||
filterEmpty.OnSelected += (tickBox) => { FilterServers(); return true; };
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
//right column
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
var rightColumn = new GUILayoutGroup(new RectTransform(new Vector2(1.0f - leftColumn.RectTransform.RelativeSize.X - 0.017f, 1.0f),
|
||||
paddedFrame.RectTransform, Anchor.CenterRight))
|
||||
{
|
||||
RelativeSpacing = 0.02f,
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
var serverListHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 1.0f), rightColumn.RectTransform)) { Stretch = true, RelativeSpacing = 0.02f };
|
||||
|
||||
serverList = new GUIListBox(new RectTransform(new Vector2(1.0f, 1.0f), serverListHolder.RectTransform, Anchor.Center))
|
||||
{
|
||||
OnSelected = (btn, obj) => {
|
||||
ServerInfo serverInfo = (ServerInfo)obj;
|
||||
|
||||
serverInfo.CreatePreviewWindow(serverPreview);
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
serverList.OnSelected += SelectServer;
|
||||
|
||||
serverPreview = new GUIListBox(new RectTransform(new Vector2(1.0f, 1.0f), serverListHolder.RectTransform, Anchor.Center));
|
||||
|
||||
columnRelativeWidth = new float[] { 0.04f, 0.02f, 0.044f, 0.77f, 0.02f, 0.075f, 0.06f };
|
||||
|
||||
var buttonContainer = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.075f), rightColumn.RectTransform), style: null);
|
||||
|
||||
GUIButton button = new GUIButton(new RectTransform(new Vector2(0.25f, 0.9f), buttonContainer.RectTransform, Anchor.TopLeft),
|
||||
TextManager.Get("Back"), style: "GUIButtonLarge")
|
||||
{
|
||||
OnClicked = GameMain.MainMenuScreen.ReturnToMainMenu
|
||||
};
|
||||
|
||||
var refreshButton = new GUIButton(new RectTransform(new Vector2(buttonContainer.Rect.Height / (float)buttonContainer.Rect.Width, 0.9f), buttonContainer.RectTransform, Anchor.Center),
|
||||
"", style: "GUIButtonRefresh") {
|
||||
|
||||
ToolTip = TextManager.Get("ServerListRefresh"),
|
||||
OnClicked = RefreshServers
|
||||
};
|
||||
|
||||
joinButton = new GUIButton(new RectTransform(new Vector2(0.25f, 0.9f), buttonContainer.RectTransform, Anchor.TopRight),
|
||||
TextManager.Get("ServerListJoin"), style: "GUIButtonLarge")
|
||||
{
|
||||
OnClicked = JoinServer,
|
||||
Enabled = false
|
||||
};
|
||||
|
||||
//-------------------------------------------------------------------------------------
|
||||
//right column
|
||||
//-------------------------------------------------------------------------------------
|
||||
|
||||
var rightColumn = new GUILayoutGroup(new RectTransform(new Vector2(1.0f - leftColumn.RectTransform.RelativeSize.X - 0.017f, 0.97f),
|
||||
paddedFrame.RectTransform, Anchor.TopRight))
|
||||
{
|
||||
@@ -360,7 +398,7 @@ namespace Barotrauma
|
||||
|
||||
private void AddToServerList(ServerInfo serverInfo)
|
||||
{
|
||||
var serverFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.06f), serverList.Content.RectTransform) { MinSize = new Point(0, 20) },
|
||||
var serverFrame = new GUIFrame(new RectTransform(new Vector2(1.0f, 0.06f), serverList.Content.RectTransform) { MinSize = new Point(0, 35) },
|
||||
style: "InnerFrame", color: Color.White * 0.5f)
|
||||
{
|
||||
UserData = serverInfo
|
||||
@@ -398,19 +436,6 @@ namespace Barotrauma
|
||||
UserData = "password"
|
||||
};
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(columnRelativeWidth[2], 0.8f), serverContent.RectTransform, Anchor.Center), style: "GUIButtonServerListInfo") {
|
||||
ToolTip = TextManager.Get("ServerListInfo"),
|
||||
OnClicked = (btn, obj) => {
|
||||
SelectServer(null, serverInfo);
|
||||
var msgBox = new GUIMessageBox("", "", new string[] { TextManager.Get("Cancel"), TextManager.Get("ServerListJoin") }, 550, 400);
|
||||
msgBox.Buttons[0].OnClicked += msgBox.Close;
|
||||
msgBox.Buttons[1].OnClicked += JoinServer;
|
||||
msgBox.Buttons[1].OnClicked += msgBox.Close;
|
||||
serverInfo.CreatePreviewWindow(msgBox);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
var serverName = new GUITextBlock(new RectTransform(new Vector2(columnRelativeWidth[3], 1.0f), serverContent.RectTransform), serverInfo.ServerName, style: "GUIServerListTextBox");
|
||||
|
||||
var gameStartedBox = new GUITickBox(new RectTransform(new Vector2(columnRelativeWidth[4], 0.4f), serverContent.RectTransform, Anchor.Center),
|
||||
|
||||
@@ -43,6 +43,7 @@ namespace Barotrauma
|
||||
|
||||
private ContentPackage itemContentPackage;
|
||||
private Facepunch.Steamworks.Workshop.Editor itemEditor;
|
||||
//private Facepunch.Steamworks.Overlay overlay;
|
||||
|
||||
public SteamWorkshopScreen()
|
||||
{
|
||||
@@ -637,6 +638,12 @@ namespace Barotrauma
|
||||
OutlineColor = new Color(72, 124, 77, 255),
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
// Failed attempt, might have to be activated before accessing because as of now it just throws a null for overlay
|
||||
/*if (overlay.Enabled)
|
||||
{
|
||||
overlay.OpenUrl("steam://url/CommunityFilePage/" + item.Id);
|
||||
}*/
|
||||
|
||||
System.Diagnostics.Process.Start("steam://url/CommunityFilePage/" + item.Id);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -310,6 +310,12 @@ namespace Barotrauma
|
||||
RelativeSpacing = 0.01f,
|
||||
Stretch = true
|
||||
};
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(1.0f, 1.0f), tabButtonHolder.RectTransform), TextManager.Get("MapEntityCategory.All"), style: "GUITabButton")
|
||||
{
|
||||
OnClicked = (btn, userdata) => { ClearFilter(); return true; }
|
||||
};
|
||||
|
||||
foreach (MapEntityCategory category in Enum.GetValues(typeof(MapEntityCategory)))
|
||||
{
|
||||
entityCategoryButtons.Add(new GUIButton(new RectTransform(new Vector2(1.0f, 1.0f), tabButtonHolder.RectTransform),
|
||||
@@ -1011,7 +1017,7 @@ namespace Barotrauma
|
||||
|
||||
var previewImageButtonHolder = new GUILayoutGroup(new RectTransform(new Vector2(1.0f, 0.1f), rightColumn.RectTransform), isHorizontal: true) { Stretch = true, RelativeSpacing = 0.05f };
|
||||
|
||||
new GUIButton(new RectTransform(new Vector2(0.5f, 1.0f), previewImageButtonHolder.RectTransform), TextManager.Get("SubPreviewImageGenerate"))
|
||||
new GUIButton(new RectTransform(new Vector2(0.5f, 1.0f), previewImageButtonHolder.RectTransform), TextManager.Get("SubPreviewImageCreate"))
|
||||
{
|
||||
OnClicked = (btn, userdata) =>
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user