Barotrauma Server Doc
All Classes Namespaces Functions Variables Enumerations Enumerator Properties Events
Barotrauma.MultiPlayerCampaign Class Reference
Inheritance diagram for Barotrauma.MultiPlayerCampaign:
Barotrauma.CampaignMode Barotrauma.CampaignMode Barotrauma.GameMode Barotrauma.GameMode Barotrauma.GameMode Barotrauma.GameMode

Public Types

enum class  NetFlags : UInt16 {
  Misc = 0x1 , MapAndMissions = 0x2 , UpgradeManager = 0x4 , SubList = 0x8 ,
  ItemsInBuyCrate = 0x10 , ItemsInSellFromSubCrate = 0x20 , PurchasedItems = 0x80 , SoldItems = 0x100 ,
  Reputation = 0x200 , CharacterInfo = 0x800
}
 
- Public Types inherited from Barotrauma.CampaignMode
enum class  InteractionType {
  None , Talk , Examine , Map ,
  Crew , Store , Upgrade , PurchaseSub ,
  MedicalClinic , Cargo
}
 
enum class  TransitionType {
  None , LeaveLocation , ProgressToNextLocation , ReturnToPreviousLocation ,
  ReturnToPreviousEmptyLocation , ProgressToNextEmptyLocation , End
}
 

Public Member Functions

UInt16 GetLastUpdateIdForFlag (NetFlags flag)
 
void SetLastUpdateIdForFlag (NetFlags flag, UInt16 id)
 
void IncrementLastUpdateIdForFlag (NetFlags flag)
 
void IncrementAllLastUpdateIds ()
 
override Wallet GetWallet (Client client=null)
 
override void Start ()
 
void SaveExperiencePoints (Client client)
 
int GetSavedExperiencePoints (Client client)
 
void ClearSavedExperiencePoints (Client client)
 
void SavePlayers ()
 
void MoveDiscardedCharacterBalancesToBank ()
 
bool CanPurchaseSub (SubmarineInfo info, Client client)
 
void DiscardClientCharacterData (Client client)
 
CharacterCampaignData GetClientCharacterData (Client client)
 
CharacterCampaignData SetClientCharacterData (Client client)
 
void AssignClientCharacterInfos (IEnumerable< Client > connectedClients)
 
Dictionary< Client, JobGetAssignedJobs (IEnumerable< Client > connectedClients)
 
override void Update (float deltaTime)
 
override void End (TransitionType transitionType=TransitionType.None)
 
void ServerWrite (IWriteMessage msg, Client c)
 
void ServerRead (IReadMessage msg, Client sender)
 
void ServerReadMoney (IReadMessage msg, Client sender)
 
void ServerReadRewardDistribution (IReadMessage msg, Client sender)
 
void ServerReadCrew (IReadMessage msg, Client sender)
 
void SendCrewState (List< CharacterInfo > hiredCharacters,(int id, string newName) renamedCrewMember, CharacterInfo firedCharacter)
 Notifies the clients of the current bot situation like syncing pending and available hires More...
 
override bool TryPurchase (Client client, int price)
 
override int GetBalance (Client client=null)
 
override void Save (XElement element)
 
- Public Member Functions inherited from Barotrauma.CampaignMode
bool CanAfford (int cost, Client client=null)
 
Location GetCurrentDisplayLocation ()
 The location that's displayed as the "current one" in the map screen. Normally the current outpost or the location at the start of the level, but when selecting the next destination at the end of the level at an uninhabited location we use the location at the end More...
 
void InitFactions ()
 
override void AddExtraMissions (LevelData levelData)
 
void LoadNewLevel ()
 
TransitionType GetAvailableTransition (out LevelData nextLevel, out Submarine leavingSub)
 Which type of transition between levels is currently possible (if any) More...
 
TransitionType GetAvailableTransition ()
 
override void End (CampaignMode.TransitionType transitionType=CampaignMode.TransitionType.None)
 
void UpdateStoreStock ()
 Updates store stock before saving the game More...
 
void EndCampaign ()
 
Faction GetRandomFaction (Rand.RandSync randSync, bool allowEmpty=true)
 Returns a random faction based on their ControlledOutpostPercentage More...
 
Faction GetRandomSecondaryFaction (Rand.RandSync randSync, bool allowEmpty=true)
 Returns a random faction based on their SecondaryControlledOutpostPercentage More...
 
bool TryHireCharacter (Location location, CharacterInfo characterInfo, Character hirer, Client client=null)
 
void AssignNPCMenuInteraction (Character character, InteractionType interactionType)
 
void OutpostNPCAttacked (Character npc, Character attacker, AttackResult attackResult)
 
Faction GetFaction (Identifier identifier)
 
float GetReputation (Identifier factionIdentifier)
 
FactionAffiliation GetFactionAffiliation (Identifier factionIdentifier)
 
void LogState ()
 
override void Remove ()
 
int NumberOfMissionsAtLocation (Location location)
 
void CheckTooManyMissions (Location currentLocation, Client sender)
 
void SwitchSubs ()
 
void SavePets (XElement parentElement=null)
 
void LoadPets ()
 
void SaveActiveOrders (XElement parentElement=null)
 
void LoadActiveOrders ()
 
override void ShowStartMessage ()
 
- Public Member Functions inherited from Barotrauma.GameMode
virtual void UpdateWhilePaused (float deltaTime)
 
 GameMode (GameModePreset preset)
 
virtual void AddToGUIUpdateList ()
 

Static Public Member Functions

static MultiPlayerCampaign StartNew (string mapSeed, CampaignSettings settings)
 
static MultiPlayerCampaign LoadNew (XElement element)
 
static string GetCharacterDataSavePath (string savePath)
 
static string GetCharacterDataSavePath ()
 
static List< SubmarineInfoGetCampaignSubs ()
 
static void StartNewCampaign (string savePath, string subPath, string seed, CampaignSettings startingSettings)
 
static void LoadCampaign (string selectedSave, Client client)
 
static void StartCampaignSetup ()
 
- Static Public Member Functions inherited from Barotrauma.CampaignMode
static bool BlocksInteraction (InteractionType interactionType)
 
static List< SubmarineGetSubsToLeaveBehind (Submarine leavingSub)
 
static int GetHullRepairCost ()
 
static int GetItemRepairCost ()
 
static Faction GetRandomFaction (IEnumerable< Faction > factions, Rand.RandSync randSync, bool secondary=false, bool allowEmpty=true)
 
static Faction GetRandomFaction (IEnumerable< Faction > factions, Random random, bool secondary=false, bool allowEmpty=true)
 
static bool AllowedToManageCampaign (Client client, ClientPermissions permissions)
 There is a client-side implementation of the method in CampaignMode More...
 
static bool AllowImmediateItemDelivery (Client client)
 
static bool AllowedToManageWallets (Client client)
 

Protected Member Functions

override void LoadInitialLevel ()
 Load the first level and start the round after loading a save file More...
 
override IEnumerable< CoroutineStatusDoLevelTransition (TransitionType transitionType, LevelData newLevel, Submarine leavingSub, bool mirror)
 
- Protected Member Functions inherited from Barotrauma.CampaignMode
 CampaignMode (GameModePreset preset, CampaignSettings settings)
 
virtual void EndCampaignProjSpecific ()
 
void KeepCharactersCloseToOutpost (float deltaTime)
 
void LoadStats (XElement element)
 
XElement SaveStats ()
 
void TransferItemsBetweenSubs ()
 Also serializes the current sub. More...
 
void RefreshOwnedSubmarines ()
 

Properties

UInt16 LastSaveID [get, set]
 
byte CampaignID [get, set]
 
bool ForceMapUI [get, set]
 
bool GameOver [get]
 
override bool Paused [get]
 
override bool PurchasedHullRepairs [get, set]
 
override bool PurchasedLostShuttles [get, set]
 
override bool PurchasedItemRepairs [get, set]
 
- Properties inherited from Barotrauma.CampaignMode
IReadOnlyList< FactionFactions [get]
 
XElement ActiveOrdersElement [get, set]
 
bool IsFirstRound = true [get, protected set]
 
bool DisableEvents [get]
 
bool TransferItemsOnSubSwitch [get, set]
 
bool SwitchedSubsThisRound [get]
 
Map Map [get]
 
override IEnumerable< MissionMissions [get]
 
Location CurrentLocation [get]
 
LevelData NextLevel [get, protected set]
 
virtual bool PurchasedHullRepairs [get, set]
 
virtual bool PurchasedLostShuttles [get, set]
 
virtual bool PurchasedItemRepairs [get, set]
 
bool MirrorLevel [get, protected set]
 
- Properties inherited from Barotrauma.GameMode
CrewManagerCrewManager [get]
 
virtual IEnumerable< MissionMissions [get]
 
bool IsSinglePlayer [get]
 
LocalizedString Name [get]
 
virtual bool Paused [get]
 
GameModePreset Preset [get]
 

Additional Inherited Members

- Public Attributes inherited from Barotrauma.CampaignMode
double TotalPlayTime
 
int TotalPassedLevels
 
readonly CargoManager CargoManager
 
UpgradeManager UpgradeManager
 
MedicalClinic MedicalClinic
 
readonly CampaignMetadata CampaignMetadata
 
CampaignSettings Settings
 
readonly NamedEvent< WalletChangedEvent > OnMoneyChanged = new NamedEvent<WalletChangedEvent>()
 
bool CheatsEnabled
 
SubmarineInfo PendingSubmarineSwitch
 
Wallet Bank
 
bool PurchasedLostShuttlesInLatestSave
 
bool DivingSuitWarningShown
 
- Static Public Attributes inherited from Barotrauma.CampaignMode
readonly record struct SaveInfo(string FilePath, Option< SerializableDateTime > SaveTime, string SubmarineName, ImmutableArray< string > EnabledContentPackageNames) const int MaxMoney = int.MaxValue / 2
 
const int InitialMoney = 8500
 
const float HullRepairCostPerDamage = 0.1f
 
const int ShuttleReplaceCost = 1000
 
const int MaxHullRepairCost = 600
 
- Static Public Attributes inherited from Barotrauma.GameMode
static List< GameModePresetPresetList = new List<GameModePreset>()
 
- Static Protected Member Functions inherited from Barotrauma.CampaignMode
static void LeaveUnconnectedSubs (Submarine leavingSub)
 
- Protected Attributes inherited from Barotrauma.CampaignMode
XElement petsElement
 
bool wasDocked
 
Map map
 
- Protected Attributes inherited from Barotrauma.GameMode
DateTime startTime
 
GameModePreset preset
 
- Static Protected Attributes inherited from Barotrauma.CampaignMode
const float EndTransitionDuration = 5.0f
 
- Events inherited from Barotrauma.CampaignMode
Action BeforeLevelLoading
 Automatically cleared after triggering -> no need to unregister More...
 

Detailed Description

Member Enumeration Documentation

◆ NetFlags

Enumerator
Misc 
MapAndMissions 
UpgradeManager 
SubList 
ItemsInBuyCrate 
ItemsInSellFromSubCrate 
PurchasedItems 
SoldItems 
Reputation 
CharacterInfo 

Definition at line 15 of file BarotraumaShared/SharedSource/GameSession/GameModes/MultiPlayerCampaign.cs.

Member Function Documentation

◆ AssignClientCharacterInfos()

void Barotrauma.MultiPlayerCampaign.AssignClientCharacterInfos ( IEnumerable< Client connectedClients)

◆ CanPurchaseSub()

bool Barotrauma.MultiPlayerCampaign.CanPurchaseSub ( SubmarineInfo  info,
Client  client 
)

◆ ClearSavedExperiencePoints()

void Barotrauma.MultiPlayerCampaign.ClearSavedExperiencePoints ( Client  client)

◆ DiscardClientCharacterData()

void Barotrauma.MultiPlayerCampaign.DiscardClientCharacterData ( Client  client)

◆ DoLevelTransition()

override IEnumerable<CoroutineStatus> Barotrauma.MultiPlayerCampaign.DoLevelTransition ( TransitionType  transitionType,
LevelData  newLevel,
Submarine  leavingSub,
bool  mirror 
)
protectedvirtual

◆ End()

override void Barotrauma.MultiPlayerCampaign.End ( TransitionType  transitionType = TransitionType.None)
virtual

◆ GetAssignedJobs()

Dictionary<Client, Job> Barotrauma.MultiPlayerCampaign.GetAssignedJobs ( IEnumerable< Client connectedClients)

◆ GetBalance()

override int Barotrauma.MultiPlayerCampaign.GetBalance ( Client  client = null)
virtual

◆ GetCampaignSubs()

static List<SubmarineInfo> Barotrauma.MultiPlayerCampaign.GetCampaignSubs ( )
static

◆ GetCharacterDataSavePath() [1/2]

static string Barotrauma.MultiPlayerCampaign.GetCharacterDataSavePath ( )
static

◆ GetCharacterDataSavePath() [2/2]

static string Barotrauma.MultiPlayerCampaign.GetCharacterDataSavePath ( string  savePath)
static

◆ GetClientCharacterData()

CharacterCampaignData Barotrauma.MultiPlayerCampaign.GetClientCharacterData ( Client  client)

◆ GetLastUpdateIdForFlag()

UInt16 Barotrauma.MultiPlayerCampaign.GetLastUpdateIdForFlag ( NetFlags  flag)

◆ GetSavedExperiencePoints()

int Barotrauma.MultiPlayerCampaign.GetSavedExperiencePoints ( Client  client)

◆ GetWallet()

override Wallet Barotrauma.MultiPlayerCampaign.GetWallet ( Client  client = null)
virtual

◆ IncrementAllLastUpdateIds()

void Barotrauma.MultiPlayerCampaign.IncrementAllLastUpdateIds ( )

◆ IncrementLastUpdateIdForFlag()

void Barotrauma.MultiPlayerCampaign.IncrementLastUpdateIdForFlag ( NetFlags  flag)

◆ LoadCampaign()

static void Barotrauma.MultiPlayerCampaign.LoadCampaign ( string  selectedSave,
Client  client 
)
static

◆ LoadInitialLevel()

override void Barotrauma.MultiPlayerCampaign.LoadInitialLevel ( )
protectedvirtual

Load the first level and start the round after loading a save file

Implements Barotrauma.CampaignMode.

Definition at line 160 of file BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs.

◆ LoadNew()

static MultiPlayerCampaign Barotrauma.MultiPlayerCampaign.LoadNew ( XElement  element)
static

◆ MoveDiscardedCharacterBalancesToBank()

void Barotrauma.MultiPlayerCampaign.MoveDiscardedCharacterBalancesToBank ( )

◆ Save()

override void Barotrauma.MultiPlayerCampaign.Save ( XElement  element)
virtual

◆ SaveExperiencePoints()

void Barotrauma.MultiPlayerCampaign.SaveExperiencePoints ( Client  client)

◆ SavePlayers()

void Barotrauma.MultiPlayerCampaign.SavePlayers ( )

◆ SendCrewState()

void Barotrauma.MultiPlayerCampaign.SendCrewState ( List< CharacterInfo hiredCharacters,
(int id, string newName)  renamedCrewMember,
CharacterInfo  firedCharacter 
)

Notifies the clients of the current bot situation like syncing pending and available hires

Parameters
hiredCharactersInform the clients that these characters have been hired.
firedCharacterInform the clients that this character has been fired.

It might be obsolete to sync available hires. I found that the available hires are always the same between the client and the server when there's only one person on the server but when a second person joins both of their available hires are different from the server.

Definition at line 1313 of file BarotraumaServer/ServerSource/GameSession/GameModes/MultiPlayerCampaign.cs.

◆ ServerRead()

void Barotrauma.MultiPlayerCampaign.ServerRead ( IReadMessage  msg,
Client  sender 
)

◆ ServerReadCrew()

void Barotrauma.MultiPlayerCampaign.ServerReadCrew ( IReadMessage  msg,
Client  sender 
)

◆ ServerReadMoney()

void Barotrauma.MultiPlayerCampaign.ServerReadMoney ( IReadMessage  msg,
Client  sender 
)

◆ ServerReadRewardDistribution()

void Barotrauma.MultiPlayerCampaign.ServerReadRewardDistribution ( IReadMessage  msg,
Client  sender 
)

◆ ServerWrite()

void Barotrauma.MultiPlayerCampaign.ServerWrite ( IWriteMessage  msg,
Client  c 
)

◆ SetClientCharacterData()

CharacterCampaignData Barotrauma.MultiPlayerCampaign.SetClientCharacterData ( Client  client)

◆ SetLastUpdateIdForFlag()

void Barotrauma.MultiPlayerCampaign.SetLastUpdateIdForFlag ( NetFlags  flag,
UInt16  id 
)

◆ Start()

override void Barotrauma.MultiPlayerCampaign.Start ( )
virtual

◆ StartCampaignSetup()

static void Barotrauma.MultiPlayerCampaign.StartCampaignSetup ( )
static

◆ StartNew()

static MultiPlayerCampaign Barotrauma.MultiPlayerCampaign.StartNew ( string  mapSeed,
CampaignSettings  settings 
)
static

◆ StartNewCampaign()

static void Barotrauma.MultiPlayerCampaign.StartNewCampaign ( string  savePath,
string  subPath,
string  seed,
CampaignSettings  startingSettings 
)
static

◆ TryPurchase()

override bool Barotrauma.MultiPlayerCampaign.TryPurchase ( Client  client,
int  price 
)
virtual

◆ Update()

override void Barotrauma.MultiPlayerCampaign.Update ( float  deltaTime)
virtual

Property Documentation

◆ CampaignID

byte Barotrauma.MultiPlayerCampaign.CampaignID
getset

◆ ForceMapUI

bool Barotrauma.MultiPlayerCampaign.ForceMapUI
getset

◆ GameOver

bool Barotrauma.MultiPlayerCampaign.GameOver
get

◆ LastSaveID

UInt16 Barotrauma.MultiPlayerCampaign.LastSaveID
getset

◆ Paused

override bool Barotrauma.MultiPlayerCampaign.Paused
get

◆ PurchasedHullRepairs

override bool Barotrauma.MultiPlayerCampaign.PurchasedHullRepairs
getset

◆ PurchasedItemRepairs

override bool Barotrauma.MultiPlayerCampaign.PurchasedItemRepairs
getset

◆ PurchasedLostShuttles

override bool Barotrauma.MultiPlayerCampaign.PurchasedLostShuttles
getset