(afe15e7b2) Fixed server sending campaign saves and campaign character data to clients after the game mode has been switched to something else. Closes #1346
This commit is contained in:
@@ -1382,9 +1382,12 @@ namespace Barotrauma.Networking
|
|||||||
{
|
{
|
||||||
MultiPlayerCampaign.ClientRead(inc);
|
MultiPlayerCampaign.ClientRead(inc);
|
||||||
}
|
}
|
||||||
|
else if (GameMain.NetLobbyScreen.SelectedMode.Identifier != "multiplayercampaign")
|
||||||
|
{
|
||||||
|
GameMain.NetLobbyScreen.SetCampaignCharacterInfo(null);
|
||||||
|
}
|
||||||
|
|
||||||
lastSentChatMsgID = inc.ReadUInt16();
|
lastSentChatMsgID = inc.ReadUInt16();
|
||||||
|
|
||||||
break;
|
break;
|
||||||
case ServerNetObject.CLIENT_LIST:
|
case ServerNetObject.CLIENT_LIST:
|
||||||
ReadClientList(inc);
|
ReadClientList(inc);
|
||||||
|
|||||||
@@ -866,18 +866,21 @@ namespace Barotrauma
|
|||||||
spectateButton.Enabled = true;
|
spectateButton.Enabled = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SetCampaignCharacterInfo(CharacterInfo characterInfo)
|
public void SetCampaignCharacterInfo(CharacterInfo newCampaignCharacterInfo)
|
||||||
{
|
{
|
||||||
if (CampaignCharacterDiscarded) return;
|
if (newCampaignCharacterInfo != null)
|
||||||
|
|
||||||
campaignCharacterInfo = characterInfo;
|
|
||||||
if (campaignCharacterInfo != null)
|
|
||||||
{
|
{
|
||||||
UpdatePlayerFrame(campaignCharacterInfo, false);
|
if (CampaignCharacterDiscarded) { return; }
|
||||||
|
if (campaignCharacterInfo != newCampaignCharacterInfo)
|
||||||
|
{
|
||||||
|
campaignCharacterInfo = newCampaignCharacterInfo;
|
||||||
|
UpdatePlayerFrame(campaignCharacterInfo, false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else if (campaignCharacterInfo != null)
|
||||||
{
|
{
|
||||||
UpdatePlayerFrame(null, true);
|
campaignCharacterInfo = null;
|
||||||
|
UpdatePlayerFrame(campaignCharacterInfo, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1226,6 +1226,7 @@ namespace Barotrauma.Networking
|
|||||||
ClientWriteLobby(c);
|
ClientWriteLobby(c);
|
||||||
|
|
||||||
if (GameMain.GameSession?.GameMode is MultiPlayerCampaign campaign &&
|
if (GameMain.GameSession?.GameMode is MultiPlayerCampaign campaign &&
|
||||||
|
GameMain.NetLobbyScreen.SelectedMode == campaign.Preset &&
|
||||||
NetIdUtils.IdMoreRecent(campaign.LastSaveID, c.LastRecvCampaignSave))
|
NetIdUtils.IdMoreRecent(campaign.LastSaveID, c.LastRecvCampaignSave))
|
||||||
{
|
{
|
||||||
//already sent an up-to-date campaign save
|
//already sent an up-to-date campaign save
|
||||||
@@ -1543,7 +1544,8 @@ namespace Barotrauma.Networking
|
|||||||
}
|
}
|
||||||
|
|
||||||
var campaign = GameMain.GameSession?.GameMode as MultiPlayerCampaign;
|
var campaign = GameMain.GameSession?.GameMode as MultiPlayerCampaign;
|
||||||
if (campaign != null && NetIdUtils.IdMoreRecent(campaign.LastUpdateID, c.LastRecvCampaignUpdate))
|
if (campaign != null && campaign.Preset == GameMain.NetLobbyScreen.SelectedMode &&
|
||||||
|
NetIdUtils.IdMoreRecent(campaign.LastUpdateID, c.LastRecvCampaignUpdate))
|
||||||
{
|
{
|
||||||
outmsg.Write(true);
|
outmsg.Write(true);
|
||||||
outmsg.WritePadBits();
|
outmsg.WritePadBits();
|
||||||
|
|||||||
@@ -129,7 +129,7 @@ namespace Barotrauma
|
|||||||
availableMissions.RemoveAll(m => m.Completed);
|
availableMissions.RemoveAll(m => m.Completed);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Remove()
|
private string RandomName(LocationType type)
|
||||||
{
|
{
|
||||||
baseName = type.GetRandomName();
|
baseName = type.GetRandomName();
|
||||||
nameFormatIndex = Rand.Int(type.NameFormats.Count, Rand.RandSync.Server);
|
nameFormatIndex = Rand.Int(type.NameFormats.Count, Rand.RandSync.Server);
|
||||||
|
|||||||
Reference in New Issue
Block a user