Esempio n. 1
0
        public override void Process(InitialPlayerSync packet)
        {
            EscapePodModel escapePod = packet.EscapePodsData.Find(x => x.Id.Equals(packet.AssignedEscapePodId));

            escapePodManager.AssignPlayerToEscapePod(escapePod);
            escapePodManager.SyncEscapePodIds(packet.EscapePodsData);
        }
Esempio n. 2
0
 public void AddNewEscapePod(EscapePodModel escapePod)
 {
     if (!escapePodsById.ContainsKey(escapePod.Id))
     {
         escapePodsById[escapePod.Id] = CreateNewEscapePod(escapePod);
     }
 }
Esempio n. 3
0
        public void AssignPlayerToEscapePod(EscapePodModel escapePod)
        {
            Validate.NotNull(escapePod, "Escape pod can not be null");

            EscapePod.main.transform.position   = escapePod.Location;
            EscapePod.main.playerSpawn.position = escapePod.Location + playerSpawnRelativeToEscapePodPosition; // This Might not correctly handle rotated EscapePods

            Rigidbody rigidbody = EscapePod.main.GetComponent <Rigidbody>();

            if (rigidbody != null)
            {
                Log.Debug("Freezing escape pod rigidbody");
                rigidbody.constraints = RigidbodyConstraints.FreezeAll;
            }
            else
            {
                Log.Error("Escape pod did not have a rigid body!");
            }

            Player.main.transform.position = EscapePod.main.playerSpawn.position;
            Player.main.transform.rotation = EscapePod.main.playerSpawn.rotation;

            Player.main.escapePod.Update(true); // Tells the game to update various EscapePod features

            MyEscapePodId = escapePod.Id;
        }
Esempio n. 4
0
        private void SetEscapePodInfo(List <EscapePodModel> escapePodsData, string assignedEscapePodGuid)
        {
            EscapePodModel escapePod = escapePodsData.Find(x => x.Guid == assignedEscapePodGuid);

            escapePodManager.AssignPlayerToEscapePod(escapePod);
            escapePodManager.SyncEscapePodGuids(escapePodsData);
        }
Esempio n. 5
0
        private GameObject CreateNewEscapePod(EscapePodModel model)
        {
            SURPRESS_ESCAPE_POD_AWAKE_METHOD = true;

            GameObject escapePod;

            if (model.Guid == myEscapePodGuid)
            {
                escapePod = EscapePod.main.gameObject;
            }
            else
            {
                escapePod = UnityEngine.Object.Instantiate(EscapePod.main.gameObject);
            }

            escapePod.transform.position = model.Location;

            StorageContainer storageContainer = escapePod.RequireComponentInChildren <StorageContainer>();

            GuidHelper.SetNewGuid(storageContainer.gameObject, model.StorageContainerGuid);

            MedicalCabinet medicalCabinet = escapePod.RequireComponentInChildren <MedicalCabinet>();

            GuidHelper.SetNewGuid(medicalCabinet.gameObject, model.MedicalFabricatorGuid);

            Fabricator fabricator = escapePod.RequireComponentInChildren <Fabricator>();

            GuidHelper.SetNewGuid(fabricator.gameObject, model.FabricatorGuid);

            Radio radio = escapePod.RequireComponentInChildren <Radio>();

            GuidHelper.SetNewGuid(radio.gameObject, model.RadioGuid);

            return(escapePod);
        }
Esempio n. 6
0
 public void RepairEscapePod(NitroxId id)
 {
     lock (escapePodData.EscapePods)
     {
         EscapePodModel escapePod = escapePodData.EscapePods.Find(ep => ep.Id == id);
         escapePod.Damaged = false;
     }
 }
Esempio n. 7
0
 public void RepairEscapePodRadio(NitroxId id)
 {
     lock (escapePods)
     {
         EscapePodModel escapePod = escapePods.Find(ep => ep.RadioId == id);
         escapePod.RadioDamaged = false;
     }
 }
Esempio n. 8
0
 public void RepairEscapePodRadio(string guid)
 {
     lock (escapePodData.EscapePods)
     {
         EscapePodModel escapePod = escapePodData.EscapePods.Find(ep => ep.RadioGuid == guid);
         escapePod.RadioDamaged = false;
     }
 }
Esempio n. 9
0
        public override IEnumerator Process(InitialPlayerSync packet, WaitScreen.ManualWaitItem waitScreenItem)
        {
            EscapePodModel escapePod = packet.EscapePodsData.Find(x => x.Id.Equals(packet.AssignedEscapePodId));

            escapePodManager.AssignPlayerToEscapePod(escapePod);
            yield return(null);

            escapePodManager.SyncEscapePodIds(packet.EscapePodsData);
        }
Esempio n. 10
0
        public GameObject CreateNewEscapePod(EscapePodModel model)
        {
            SURPRESS_ESCAPE_POD_AWAKE_METHOD = true;

            GameObject escapePod;

            if (model.Id == MyEscapePodId)
            {
                escapePod = EscapePod.main.gameObject;
            }
            else
            {
                escapePod = Object.Instantiate(EscapePod.main.gameObject);
                NitroxEntity.SetNewId(escapePod, model.Id);
            }

            escapePod.transform.position = model.Location.ToUnity();

            StorageContainer storageContainer = escapePod.RequireComponentInChildren <StorageContainer>();

            using (packetSender.Suppress <ItemContainerRemove>())
            {
                storageContainer.container.Clear();
            }

            NitroxEntity.SetNewId(storageContainer.gameObject, model.StorageContainerId);

            MedicalCabinet medicalCabinet = escapePod.RequireComponentInChildren <MedicalCabinet>();

            NitroxEntity.SetNewId(medicalCabinet.gameObject, model.MedicalFabricatorId);

            Fabricator fabricator = escapePod.RequireComponentInChildren <Fabricator>();

            NitroxEntity.SetNewId(fabricator.gameObject, model.FabricatorId);

            Radio radio = escapePod.RequireComponentInChildren <Radio>();

            NitroxEntity.SetNewId(radio.gameObject, model.RadioId);

            DamageEscapePod(model.Damaged, model.RadioDamaged);
            FixStartMethods(escapePod);

            // Start() isn't executed for the EscapePod, why? Idk, maybe because it's a scene...
            MultiplayerCinematicReference reference = escapePod.AddComponent <MultiplayerCinematicReference>();

            foreach (PlayerCinematicController controller in escapePod.GetComponentsInChildren <PlayerCinematicController>())
            {
                reference.AddController(controller);
            }

            SURPRESS_ESCAPE_POD_AWAKE_METHOD = false;

            return(escapePod);
        }
Esempio n. 11
0
        private void InitializePodForNextPlayer()
        {
            foreach (EscapePodModel pod in EscapePods)
            {
                if (!pod.IsFull())
                {
                    podForNextPlayer = pod;
                    return;
                }
            }

            podForNextPlayer = CreateNewEscapePod();
        }
Esempio n. 12
0
        private EscapePodModel CreateNewEscapePod()
        {
            EscapePodModel escapePod = new EscapePodModel();

            escapePod.InitEscapePodModel(new NitroxId(),
                                         GetStartPosition(),
                                         new NitroxId(),
                                         new NitroxId(),
                                         new NitroxId(),
                                         new NitroxId(),
                                         true,
                                         true);

            EscapePods.Add(escapePod);

            return(escapePod);
        }
Esempio n. 13
0
        private EscapePodModel CreateNewEscapePod()
        {
            lock (escapePods)
            {
                int totalEscapePods = escapePods.Count;

                EscapePodModel escapePod = new EscapePodModel("escapePod" + totalEscapePods,
                                                              new Vector3(-112.2f + (ESCAPE_POD_X_OFFSET * totalEscapePods), 0.0f, -322.6f),
                                                              "escapePodFab" + totalEscapePods,
                                                              "escapePodMedFab" + totalEscapePods,
                                                              "escapePodStorageFab" + totalEscapePods,
                                                              "escapePodRadioFab" + totalEscapePods);
                escapePods.Add(escapePod);

                return(escapePod);
            }
        }
Esempio n. 14
0
        public GameObject CreateNewEscapePod(EscapePodModel model)
        {
            SURPRESS_ESCAPE_POD_AWAKE_METHOD = true;

            GameObject escapePod;

            if (model.Id == MyEscapePodId)
            {
                escapePod = EscapePod.main.gameObject;
            }
            else
            {
                escapePod = Object.Instantiate(EscapePod.main.gameObject);
                NitroxEntity.SetNewId(escapePod, model.Id);
            }

            escapePod.transform.position = model.Location.ToUnity();

            StorageContainer storageContainer = escapePod.RequireComponentInChildren <StorageContainer>();

            using (packetSender.Suppress <ItemContainerRemove>())
            {
                storageContainer.container.Clear();
            }

            NitroxEntity.SetNewId(storageContainer.gameObject, model.StorageContainerId);

            MedicalCabinet medicalCabinet = escapePod.RequireComponentInChildren <MedicalCabinet>();

            NitroxEntity.SetNewId(medicalCabinet.gameObject, model.MedicalFabricatorId);

            Fabricator fabricator = escapePod.RequireComponentInChildren <Fabricator>();

            NitroxEntity.SetNewId(fabricator.gameObject, model.FabricatorId);

            Radio radio = escapePod.RequireComponentInChildren <Radio>();

            NitroxEntity.SetNewId(radio.gameObject, model.RadioId);

            DamageEscapePod(model.Damaged, model.RadioDamaged);
            FixStartMethods(escapePod);

            SURPRESS_ESCAPE_POD_AWAKE_METHOD = false;

            return(escapePod);
        }
Esempio n. 15
0
        public void AssignPlayerToEscapePod(string playerId)
        {
            lock (escapePodsByPlayerId)
            {
                if (escapePodsByPlayerId.ContainsKey(playerId))
                {
                    return;
                }

                if (podNotFullYet.AssignedPlayers.Count == PLAYERS_PER_ESCAPEPOD)
                {
                    podNotFullYet = CreateNewEscapePod();
                }

                podNotFullYet.AssignedPlayers.Add(playerId);
                escapePodsByPlayerId[playerId] = podNotFullYet;
            }
        }
Esempio n. 16
0
        private EscapePodModel CreateNewEscapePod()
        {
            int totalEscapePods = EscapePods.Count;

            EscapePodModel escapePod = new EscapePodModel();

            escapePod.InitEscapePodModel(new NitroxId(),
                                         new NitroxVector3(-112.2f + ESCAPE_POD_X_OFFSET * totalEscapePods, 0.0f, -322.6f),
                                         new NitroxId(),
                                         new NitroxId(),
                                         new NitroxId(),
                                         new NitroxId(),
                                         true,
                                         true);

            EscapePods.Add(escapePod);

            return(escapePod);
        }
Esempio n. 17
0
        public NitroxId AssignPlayerToEscapePod(ushort playerId, out Optional <EscapePodModel> newlyCreatedPod)
        {
            newlyCreatedPod = Optional.Empty;

            if (escapePodsByPlayerId.ContainsKey(playerId))
            {
                return(escapePodsByPlayerId[playerId].Id);
            }

            if (podForNextPlayer.IsFull())
            {
                newlyCreatedPod  = Optional.Of(CreateNewEscapePod());
                podForNextPlayer = newlyCreatedPod.Value;
            }

            podForNextPlayer.AssignedPlayers.Add(playerId);
            escapePodsByPlayerId[playerId] = podForNextPlayer;

            return(podForNextPlayer.Id);
        }
Esempio n. 18
0
        public GameObject CreateNewEscapePod(EscapePodModel model)
        {
            SURPRESS_ESCAPE_POD_AWAKE_METHOD = true;

            GameObject escapePod;

            if (model.Guid == MyEscapePodGuid)
            {
                escapePod = EscapePod.main.gameObject;
            }
            else
            {
                escapePod = Object.Instantiate(EscapePod.main.gameObject);
            }

            escapePod.transform.position = model.Location;


            StorageContainer storageContainer = escapePod.RequireComponentInChildren <StorageContainer>();

            using (packetSender.Suppress <ItemContainerRemove>())
            {
                storageContainer.container.Clear();
            }

            GuidHelper.SetNewGuid(storageContainer.gameObject, model.StorageContainerGuid);

            MedicalCabinet medicalCabinet = escapePod.RequireComponentInChildren <MedicalCabinet>();

            GuidHelper.SetNewGuid(medicalCabinet.gameObject, model.MedicalFabricatorGuid);

            Fabricator fabricator = escapePod.RequireComponentInChildren <Fabricator>();

            GuidHelper.SetNewGuid(fabricator.gameObject, model.FabricatorGuid);

            Radio radio = escapePod.RequireComponentInChildren <Radio>();

            GuidHelper.SetNewGuid(radio.gameObject, model.RadioGuid);

            return(escapePod);
        }
Esempio n. 19
0
        private GameObject CreateNewEscapePod(EscapePodModel model)
        {
            SURPRESS_ESCAPE_POD_AWAKE_METHOD = true;

            GameObject escapePod;

            if (model.Guid == myEscapePodGuid)
            {
                escapePod = EscapePod.main.gameObject;
            }
            else
            {
                escapePod = UnityEngine.Object.Instantiate(EscapePod.main.gameObject);
            }

            escapePod.transform.position = ApiHelper.Vector3(model.Location);

            StorageContainer storageContainer = escapePod.GetComponentInChildren <StorageContainer>();

            Validate.NotNull(storageContainer, "StorageContainer can not be null");
            GuidHelper.SetNewGuid(storageContainer.gameObject, model.StorageContainerGuid);

            MedicalCabinet medicalCabinet = escapePod.GetComponentInChildren <MedicalCabinet>();

            Validate.NotNull(medicalCabinet, "medicalCabinet can not be null");
            GuidHelper.SetNewGuid(medicalCabinet.gameObject, model.MedicalFabricatorGuid);

            Fabricator fabricator = escapePod.GetComponentInChildren <Fabricator>();

            Validate.NotNull(fabricator, "fabricator can not be null");
            GuidHelper.SetNewGuid(fabricator.gameObject, model.FabricatorGuid);

            Radio radio = escapePod.GetComponentInChildren <Radio>();

            Validate.NotNull(radio, "radio can not be null");
            GuidHelper.SetNewGuid(radio.gameObject, model.RadioGuid);

            return(escapePod);
        }
Esempio n. 20
0
        public void AssignPlayerToEscapePod(EscapePodModel escapePod)
        {
            EscapePod.main.transform.position   = escapePod.Location;
            EscapePod.main.playerSpawn.position = escapePod.Location + playerSpawnRelativeToEscapePodPosition;

            Rigidbody rigidbody = EscapePod.main.GetComponent <Rigidbody>();

            if (rigidbody != null)
            {
                Log.Debug("Freezing escape pod rigidbody");
                rigidbody.constraints = RigidbodyConstraints.FreezeAll;
            }
            else
            {
                Log.Error("Escape pod did not have a rigid body!");
            }

            Player.main.transform.position = EscapePod.main.playerSpawn.position;
            Player.main.transform.rotation = EscapePod.main.playerSpawn.rotation;

            MyEscapePodId = escapePod.Id;
        }
Esempio n. 21
0
        public void EscapePodDataTest()
        {
            foreach (PersistedWorldData worldDataAfter in worldsDataAfter)
            {
                Assert.AreEqual(worldData.WorldData.EscapePodData.EscapePods.Count, worldDataAfter.WorldData.EscapePodData.EscapePods.Count, "WorldData.EscapePodData.EscapePods.Count is not equal");
                for (int index = 0; index < worldData.WorldData.EscapePodData.EscapePods.Count; index++)
                {
                    EscapePodModel escapePod      = worldData.WorldData.EscapePodData.EscapePods[index];
                    EscapePodModel escapePodAfter = worldDataAfter.WorldData.EscapePodData.EscapePods[index];

                    Assert.AreEqual(escapePod.Id, escapePodAfter.Id, "WorldData.EscapePodData.EscapePods.Id is not equal");
                    Assert.AreEqual(escapePod.Location, escapePodAfter.Location, "WorldData.EscapePodData.EscapePods.Location is not equal");
                    Assert.AreEqual(escapePod.FabricatorId, escapePodAfter.FabricatorId, "WorldData.EscapePodData.EscapePods.FabricatorId is not equal");
                    Assert.AreEqual(escapePod.MedicalFabricatorId, escapePodAfter.MedicalFabricatorId, "WorldData.EscapePodData.EscapePods.MedicalFabricatorId is not equal");
                    Assert.AreEqual(escapePod.StorageContainerId, escapePodAfter.StorageContainerId, "WorldData.EscapePodData.EscapePods.StorageContainerId is not equal");
                    Assert.AreEqual(escapePod.RadioId, escapePodAfter.RadioId, "WorldData.EscapePodData.EscapePods.RadioId is not equal");
                    Assert.IsTrue(escapePod.AssignedPlayers.SequenceEqual(escapePodAfter.AssignedPlayers), "WorldData.EscapePodData.EscapePods.AssignedPlayers is not equal");
                    Assert.AreEqual(escapePod.Damaged, escapePodAfter.Damaged, "WorldData.EscapePodData.EscapePods.Damaged is not equal");
                    Assert.AreEqual(escapePod.RadioDamaged, escapePodAfter.RadioDamaged, "WorldData.EscapePodData.EscapePods.RadioDamaged is not equal");
                }
            }
        }
Esempio n. 22
0
        public void EscapePodDataTest()
        {
            for (int serializerIndex = 0; serializerIndex < worldsDataAfter.Length; serializerIndex++)
            {
                PersistedWorldData worldDataAfter = worldsDataAfter[serializerIndex];
                Assert.AreEqual(worldData.WorldData.EscapePodData.EscapePods.Count, worldDataAfter.WorldData.EscapePodData.EscapePods.Count, $"WorldData.EscapePodData.EscapePods.Count is not equal while using {serverSerializers[serializerIndex]}.");
                for (int index = 0; index < worldData.WorldData.EscapePodData.EscapePods.Count; index++)
                {
                    EscapePodModel escapePod      = worldData.WorldData.EscapePodData.EscapePods[index];
                    EscapePodModel escapePodAfter = worldDataAfter.WorldData.EscapePodData.EscapePods[index];

                    Assert.AreEqual(escapePod.Id, escapePodAfter.Id, $"WorldData.EscapePodData.EscapePods.Id is not equal while using {serverSerializers[serializerIndex]}.");
                    Assert.AreEqual(escapePod.Location, escapePodAfter.Location, $"WorldData.EscapePodData.EscapePods.Location is not equal while using {serverSerializers[serializerIndex]}.");
                    Assert.AreEqual(escapePod.FabricatorId, escapePodAfter.FabricatorId, $"WorldData.EscapePodData.EscapePods.FabricatorId is not equal while using {serverSerializers[serializerIndex]}.");
                    Assert.AreEqual(escapePod.MedicalFabricatorId, escapePodAfter.MedicalFabricatorId, $"WorldData.EscapePodData.EscapePods.MedicalFabricatorId is not equal while using {serverSerializers[serializerIndex]}.");
                    Assert.AreEqual(escapePod.StorageContainerId, escapePodAfter.StorageContainerId, $"WorldData.EscapePodData.EscapePods.StorageContainerId is not equal while using {serverSerializers[serializerIndex]}.");
                    Assert.AreEqual(escapePod.RadioId, escapePodAfter.RadioId, $"WorldData.EscapePodData.EscapePods.RadioId is not equal while using {serverSerializers[serializerIndex]}.");
                    Assert.IsTrue(escapePod.AssignedPlayers.SequenceEqual(escapePodAfter.AssignedPlayers), $"WorldData.EscapePodData.EscapePods.AssignedPlayers is not equal while using {serverSerializers[serializerIndex]}.");
                    Assert.AreEqual(escapePod.Damaged, escapePodAfter.Damaged, $"WorldData.EscapePodData.EscapePods.Damaged is not equal while using {serverSerializers[serializerIndex]}.");
                    Assert.AreEqual(escapePod.RadioDamaged, escapePodAfter.RadioDamaged, $"WorldData.EscapePodData.EscapePods.RadioDamaged is not equal while using {serverSerializers[serializerIndex]}.");
                }
            }
        }
Esempio n. 23
0
 public AddEscapePod(EscapePodModel escapePod)
 {
     EscapePod = escapePod;
 }
Esempio n. 24
0
 public EscapePodManager()
 {
     this.escapePods           = new List <EscapePodModel>();
     this.escapePodsByPlayerId = new Dictionary <String, EscapePodModel>();
     this.podNotFullYet        = CreateNewEscapePod();
 }
Esempio n. 25
0
 public EscapePodManager()
 {
     podNotFullYet = CreateNewEscapePod();
 }