6 partial class SalvageMission : Mission
11 private void TryShowRetrievedMessage()
15 if (!allRetrievedMessage.IsNullOrEmpty()) {
CreateMessageBox(
string.Empty, allRetrievedMessage); }
17 allRetrievedMessage =
string.Empty;
21 if (!partiallyRetrievedMessage.IsNullOrEmpty()) {
CreateMessageBox(
string.Empty, partiallyRetrievedMessage); }
23 partiallyRetrievedMessage =
string.Empty;
29 base.ClientReadInitial(msg);
31 foreach (var target
in targets)
33 bool targetFound = msg.ReadBoolean();
34 if (!targetFound) {
continue; }
36 bool usedExistingItem = msg.ReadBoolean();
39 ushort
id = msg.ReadUInt16();
41 if (target.Item ==
null)
43 throw new System.Exception(
"Error in SalvageMission.ClientReadInitial: failed to find item " +
id +
" (mission: " +
Prefab.
Identifier +
")");
49 target.
Item.HighlightColor = GUIStyle.Orange;
50 target.Item.ExternalHighlight =
true;
52 ushort parentTargetId = msg.ReadUInt16();
58 if (target.Item ==
null)
60 throw new System.Exception(
"Error in SalvageMission.ClientReadInitial: spawned item was null (mission: " +
Prefab.
Identifier +
")");
64 int executedEffectCount = msg.ReadByte();
65 for (
int i = 0; i < executedEffectCount; i++)
67 int listIndex = msg.ReadByte();
68 int effectIndex = msg.ReadByte();
69 var selectedEffect = target.StatusEffects[listIndex][effectIndex];
70 target.
Item.ApplyStatusEffect(selectedEffect, selectedEffect.type, deltaTime: 1.0f, worldPosition: target.Item.Position);
73 if (target.Item.body !=
null && target.Item.CurrentHull ==
null)
75 target.Item.body.FarseerBody.BodyType = BodyType.Kinematic;
83 bool atLeastOneTargetWasRetrieved =
false;
85 for (
int i = 0; i < targetCount; i++)
88 if (i < targets.Count)
90 bool wasRetrieved = targets[i].Retrieved;
91 targets[i].State =
state;
92 if (!wasRetrieved && targets[i].Retrieved)
94 atLeastOneTargetWasRetrieved =
true;
98 if (atLeastOneTargetWasRetrieved)
100 TryShowRetrievedMessage();
const ushort NullEntityID
static Entity FindEntityByID(ushort ID)
Find an entity based on the ID
static Item ReadSpawnData(IReadMessage msg, bool spawn=true)
Item(ItemPrefab itemPrefab, Vector2 position, Submarine submarine, ushort id=Entity.NullEntityID, bool callOnItemLoaded=true)
void CreateMessageBox(LocalizedString header, LocalizedString message)
readonly Identifier Identifier
override bool DetermineCompleted()
override void ClientRead(IReadMessage msg)
override bool DisplayAsFailed
override bool DisplayAsCompleted
override void ClientReadInitial(IReadMessage msg)