Faction Test 100.13.0.0
This commit is contained in:
+39
-16
@@ -83,6 +83,7 @@ namespace Barotrauma
|
||||
GUIListBox conversationList = lastMessageBox.FindChild("conversationlist", true) as GUIListBox;
|
||||
Debug.Assert(conversationList != null);
|
||||
|
||||
DisableButtons(conversationList.Content.GetAllChildren<GUIButton>(), selectedButton: null);
|
||||
// gray out the last text block
|
||||
if (conversationList.Content.Children.LastOrDefault() is GUILayoutGroup lastElement)
|
||||
{
|
||||
@@ -269,14 +270,7 @@ namespace Barotrauma
|
||||
if (actionInstance != null)
|
||||
{
|
||||
actionInstance.selectedOption = selectedOption;
|
||||
foreach (GUIButton otherButton in optionButtons)
|
||||
{
|
||||
otherButton.CanBeFocused = false;
|
||||
if (otherButton != btn)
|
||||
{
|
||||
otherButton.TextBlock.OverrideTextColor(Color.DarkGray * 0.8f);
|
||||
}
|
||||
}
|
||||
DisableButtons(optionButtons, btn);
|
||||
btn.ExternalHighlight = true;
|
||||
return true;
|
||||
}
|
||||
@@ -286,14 +280,7 @@ namespace Barotrauma
|
||||
SendResponse(actionId.Value, selectedOption);
|
||||
btn.CanBeFocused = false;
|
||||
btn.ExternalHighlight = true;
|
||||
foreach (GUIButton otherButton in optionButtons)
|
||||
{
|
||||
otherButton.CanBeFocused = false;
|
||||
if (otherButton != btn)
|
||||
{
|
||||
otherButton.TextBlock.OverrideTextColor(Color.DarkGray * 0.8f);
|
||||
}
|
||||
}
|
||||
DisableButtons(optionButtons, btn);
|
||||
return true;
|
||||
}
|
||||
//should not happen
|
||||
@@ -305,6 +292,18 @@ namespace Barotrauma
|
||||
}
|
||||
}
|
||||
|
||||
public static void SelectOption(ushort actionId, int option)
|
||||
{
|
||||
if (lastMessageBox.UserData is Pair<string, ushort> userData)
|
||||
{
|
||||
if (userData.Second != actionId) { return; }
|
||||
|
||||
GUIListBox conversationList = lastMessageBox.FindChild("conversationlist", true) as GUIListBox;
|
||||
Debug.Assert(conversationList != null);
|
||||
DisableButtons(conversationList.Content.GetAllChildren<GUIButton>(), (btn) => btn.UserData is int i && i == option);
|
||||
}
|
||||
}
|
||||
|
||||
private static Tuple<Vector2, Point> GetSizes(DialogTypes dialogTypes)
|
||||
{
|
||||
return dialogTypes switch
|
||||
@@ -383,6 +382,30 @@ namespace Barotrauma
|
||||
return buttons;
|
||||
}
|
||||
|
||||
private static void DisableButtons(IEnumerable<GUIButton> buttons, GUIButton selectedButton)
|
||||
{
|
||||
DisableButtons(buttons, (btn) => btn == selectedButton);
|
||||
}
|
||||
|
||||
private static void DisableButtons(IEnumerable<GUIButton> buttons, Func<GUIButton, bool> isSelectedButton)
|
||||
{
|
||||
foreach (GUIButton btn in buttons)
|
||||
{
|
||||
if (btn.CanBeFocused)
|
||||
{
|
||||
btn.CanBeFocused = false;
|
||||
if (isSelectedButton(btn))
|
||||
{
|
||||
btn.Selected = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
btn.TextBlock.OverrideTextColor(Color.DarkGray * 0.8f);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void SendResponse(UInt16 actionId, int selectedOption)
|
||||
{
|
||||
IWriteMessage outmsg = new WriteOnlyMessage();
|
||||
|
||||
@@ -608,47 +608,56 @@ namespace Barotrauma
|
||||
}
|
||||
break;
|
||||
case NetworkEventType.CONVERSATION:
|
||||
UInt16 identifier = msg.ReadUInt16();
|
||||
string eventSprite = msg.ReadString();
|
||||
byte dialogType = msg.ReadByte();
|
||||
bool continueConversation = msg.ReadBoolean();
|
||||
UInt16 speakerId = msg.ReadUInt16();
|
||||
string text = msg.ReadString();
|
||||
bool fadeToBlack = msg.ReadBoolean();
|
||||
byte optionCount = msg.ReadByte();
|
||||
List<string> options = new List<string>();
|
||||
for (int i = 0; i < optionCount; i++)
|
||||
{
|
||||
options.Add(msg.ReadString());
|
||||
}
|
||||
|
||||
byte endCount = msg.ReadByte();
|
||||
int[] endings = new int[endCount];
|
||||
for (int i = 0; i < endCount; i++)
|
||||
{
|
||||
endings[i] = msg.ReadByte();
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(text) && optionCount == 0)
|
||||
{
|
||||
GUIMessageBox.MessageBoxes.ForEachMod(mb =>
|
||||
UInt16 identifier = msg.ReadUInt16();
|
||||
string eventSprite = msg.ReadString();
|
||||
byte dialogType = msg.ReadByte();
|
||||
bool continueConversation = msg.ReadBoolean();
|
||||
UInt16 speakerId = msg.ReadUInt16();
|
||||
string text = msg.ReadString();
|
||||
bool fadeToBlack = msg.ReadBoolean();
|
||||
byte optionCount = msg.ReadByte();
|
||||
List<string> options = new List<string>();
|
||||
for (int i = 0; i < optionCount; i++)
|
||||
{
|
||||
if (mb.UserData is Pair<string, UInt16> pair && pair.First == "ConversationAction" && pair.Second == identifier)
|
||||
options.Add(msg.ReadString());
|
||||
}
|
||||
|
||||
byte endCount = msg.ReadByte();
|
||||
int[] endings = new int[endCount];
|
||||
for (int i = 0; i < endCount; i++)
|
||||
{
|
||||
endings[i] = msg.ReadByte();
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(text) && optionCount == 0)
|
||||
{
|
||||
GUIMessageBox.MessageBoxes.ForEachMod(mb =>
|
||||
{
|
||||
(mb as GUIMessageBox)?.Close();
|
||||
}
|
||||
});
|
||||
if (mb.UserData is Pair<string, UInt16> pair && pair.First == "ConversationAction" && pair.Second == identifier)
|
||||
{
|
||||
(mb as GUIMessageBox)?.Close();
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
ConversationAction.CreateDialog(text, Entity.FindEntityByID(speakerId) as Character, options, endings, eventSprite, identifier, fadeToBlack, (ConversationAction.DialogTypes)dialogType, continueConversation);
|
||||
}
|
||||
if (Entity.FindEntityByID(speakerId) is Character speaker)
|
||||
{
|
||||
speaker.CampaignInteractionType = CampaignMode.InteractionType.None;
|
||||
speaker.SetCustomInteract(null, null);
|
||||
}
|
||||
break;
|
||||
}
|
||||
else
|
||||
case NetworkEventType.CONVERSATION_SELECTED_OPTION:
|
||||
{
|
||||
ConversationAction.CreateDialog(text, Entity.FindEntityByID(speakerId) as Character, options, endings, eventSprite, identifier, fadeToBlack, (ConversationAction.DialogTypes)dialogType, continueConversation);
|
||||
UInt16 identifier = msg.ReadUInt16();
|
||||
int selectedOption = msg.ReadByte() - 1;
|
||||
ConversationAction.SelectOption(identifier, selectedOption);
|
||||
break;
|
||||
}
|
||||
if (Entity.FindEntityByID(speakerId) is Character speaker)
|
||||
{
|
||||
speaker.CampaignInteractionType = CampaignMode.InteractionType.None;
|
||||
speaker.SetCustomInteract(null, null);
|
||||
}
|
||||
break;
|
||||
case NetworkEventType.MISSION:
|
||||
Identifier missionIdentifier = msg.ReadIdentifier();
|
||||
int locationIndex = msg.ReadInt32();
|
||||
|
||||
@@ -38,7 +38,7 @@ namespace Barotrauma
|
||||
return RichString.Rich(TextManager.GetWithVariable("missionreward", "[reward]", "‖color:gui.orange‖"+rewardText+"‖end‖"));
|
||||
}
|
||||
|
||||
public RichString GetReputationRewardText(Location currLocation)
|
||||
public RichString GetReputationRewardText()
|
||||
{
|
||||
List<LocalizedString> reputationRewardTexts = new List<LocalizedString>();
|
||||
foreach (var reputationReward in ReputationRewards)
|
||||
@@ -46,7 +46,7 @@ namespace Barotrauma
|
||||
FactionPrefab targetFaction;
|
||||
if (reputationReward.Key == "location" )
|
||||
{
|
||||
targetFaction = currLocation.Faction?.Prefab;
|
||||
targetFaction = OriginLocation.Faction?.Prefab;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user