public override void ClientReadInitial(IReadMessage msg) { base.ClientReadInitial(msg); // duplicate code from escortmission, should possibly be combined, though additional loot items might be added so maybe not byte characterCount = msg.ReadByte(); for (int i = 0; i < characterCount; i++) { characters.Add(Character.ReadSpawnData(msg)); ushort itemCount = msg.ReadUInt16(); for (int j = 0; j < itemCount; j++) { Item.ReadSpawnData(msg); } } if (characters.Contains(null)) { throw new System.Exception("Error in PirateMission.ClientReadInitial: character list contains null (mission: " + Prefab.Identifier + ")"); } if (characters.Count != characterCount) { throw new System.Exception("Error in PirateMission.ClientReadInitial: character count does not match the server count (" + characterCount + " != " + characters.Count + "mission: " + Prefab.Identifier + ")"); } }
public override void ClientReadInitial(IReadMessage msg) { base.ClientReadInitial(msg); existingTargets.Clear(); spawnedTargets.Clear(); allTargets.Clear(); ushort existingTargetsCount = msg.ReadUInt16(); for (int i = 0; i < existingTargetsCount; i++) { ushort targetId = msg.ReadUInt16(); if (targetId == Entity.NullEntityID) { continue; } Entity target = Entity.FindEntityByID(targetId); if (target == null) { continue; } existingTargets.Add(target); allTargets.Add(target); } ushort spawnedTargetsCount = msg.ReadUInt16(); for (int i = 0; i < spawnedTargetsCount; i++) { var enemy = Character.ReadSpawnData(msg); existingTargets.Add(enemy); allTargets.Add(enemy); } }
public override void ClientReadInitial(IReadMessage msg) { byte characterCount = msg.ReadByte(); for (int i = 0; i < characterCount; i++) { Character character = Character.ReadSpawnData(msg); characters.Add(character); if (msg.ReadBoolean()) { terroristCharacters.Add(character); } ushort itemCount = msg.ReadUInt16(); for (int j = 0; j < itemCount; j++) { Item.ReadSpawnData(msg); } } if (characters.Contains(null)) { throw new System.Exception("Error in EscortMission.ClientReadInitial: character list contains null (mission: " + Prefab.Identifier + ")"); } if (characters.Count != characterCount) { throw new System.Exception("Error in EscortMission.ClientReadInitial: character count does not match the server count (" + characterCount + " != " + characters.Count + "mission: " + Prefab.Identifier + ")"); } InitCharacters(); }
public override void ClientReadInitial(IReadMessage msg) { base.ClientReadInitial(msg); ushort targetItemCount = msg.ReadUInt16(); for (int i = 0; i < targetItemCount; i++) { var item = Item.ReadSpawnData(msg); items.Add(item); } byte characterCount = msg.ReadByte(); for (int i = 0; i < characterCount; i++) { Character character = Character.ReadSpawnData(msg); characters.Add(character); if (msg.ReadBoolean()) { requireKill.Add(character); } if (msg.ReadBoolean()) { requireRescue.Add(character); #if CLIENT GameMain.GameSession.CrewManager.AddCharacterToCrewList(character); #endif } ushort itemCount = msg.ReadUInt16(); for (int j = 0; j < itemCount; j++) { Item.ReadSpawnData(msg); } if (character.Submarine != null && character.AIController is EnemyAIController enemyAi) { enemyAi.UnattackableSubmarines.Add(character.Submarine); enemyAi.UnattackableSubmarines.Add(Submarine.MainSub); foreach (Submarine sub in Submarine.MainSub.DockedTo) { enemyAi.UnattackableSubmarines.Add(sub); } } } if (characters.Contains(null)) { throw new System.Exception("Error in AbandonedOutpostMission.ClientReadInitial: character list contains null (mission: " + Prefab.Identifier + ")"); } if (characters.Count != characterCount) { throw new System.Exception("Error in AbandonedOutpostMission.ClientReadInitial: character count does not match the server count (" + characters + " != " + characters.Count + "mission: " + Prefab.Identifier + ")"); } }
public override void ClientReadInitial(IReadMessage msg) { byte monsterCount = msg.ReadByte(); for (int i = 0; i < monsterCount; i++) { monsters.Add(Character.ReadSpawnData(msg)); } if (monsters.Contains(null)) { throw new System.Exception("Error in MonsterMission.ClientReadInitial: monster list contains null (mission: " + Prefab.Identifier + ")"); } if (monsters.Count != monsterCount) { throw new System.Exception("Error in MonsterMission.ClientReadInitial: monster count does not match the server count (" + monsterCount + " != " + monsters.Count + "mission: " + Prefab.Identifier + ")"); } InitializeMonsters(monsters); }
public void ClientRead(ServerNetObject type, Lidgren.Network.NetBuffer message, float sendingTime) { if (GameMain.Server != null) { return; } bool remove = message.ReadBoolean(); if (remove) { ushort entityId = message.ReadUInt16(); var entity = FindEntityByID(entityId); if (entity != null) { DebugConsole.Log("Received entity removal message for \"" + entity.ToString() + "\"."); entity.Remove(); } else { DebugConsole.Log("Received entity removal message for ID " + entityId + ". Entity with a matching ID not found."); } } else { switch (message.ReadByte()) { case (byte)SpawnableType.Item: Item.ReadSpawnData(message, true); break; case (byte)SpawnableType.Character: Character.ReadSpawnData(message, true); break; default: DebugConsole.ThrowError("Received invalid entity spawn message (unknown spawnable type)"); break; } } }