Exemple #1
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);
        }
Exemple #2
0
        public void Clicked(MedicalCabinet medicalCabinet)
        {
            NitroxId id       = NitroxEntity.GetId(medicalCabinet.gameObject);
            bool     doorOpen = medicalCabinet.doorOpen;

            MedicalCabinetClicked cabinetClicked = new(id, doorOpen, medicalCabinet.hasMedKit, medicalCabinet.timeSpawnMedKit);

            packetSender.Send(cabinetClicked);
        }
Exemple #3
0
        static void Prefix(MedicalCabinet __instance)
        {
            if (medKitSpawnInterval == 0f)
            {
                medKitSpawnInterval = __instance.medKitSpawnInterval;
            }

            __instance.medKitSpawnInterval = medKitSpawnInterval / Main.config.speedMedkitInterval;
        }
Exemple #4
0
        public void Clicked(MedicalCabinet medicalCabinet)
        {
            string guid     = GuidHelper.GetGuid(medicalCabinet.gameObject);
            bool   doorOpen = (bool)medicalCabinet.ReflectionGet("doorOpen");

            MedicalCabinetClicked cabinetClicked = new MedicalCabinetClicked(guid, doorOpen, medicalCabinet.hasMedKit, medicalCabinet.timeSpawnMedKit);

            packetSender.Send(cabinetClicked);
        }
        public void Clicked(MedicalCabinet medicalCabinet)
        {
            NitroxId id       = NitroxIdentifier.GetId(medicalCabinet.gameObject);
            bool     doorOpen = (bool)medicalCabinet.ReflectionGet("doorOpen");

            MedicalCabinetClicked cabinetClicked = new MedicalCabinetClicked(id, doorOpen, medicalCabinet.hasMedKit, medicalCabinet.timeSpawnMedKit);

            packetSender.Send(cabinetClicked);
        }
Exemple #6
0
        public void Clicked(MedicalCabinet medicalCabinet)
        {
            Vector3 actionPosition = medicalCabinet.gameObject.transform.position;
            String  guid           = GuidHelper.GetGuid(medicalCabinet.gameObject);
            bool    doorOpen       = (bool)medicalCabinet.ReflectionGet("doorOpen");

            MedicalCabinetClicked cabinetClicked = new MedicalCabinetClicked(packetSender.PlayerId, guid, actionPosition, doorOpen, medicalCabinet.hasMedKit, medicalCabinet.timeSpawnMedKit);

            packetSender.Send(cabinetClicked);
        }
Exemple #7
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);
        }
Exemple #8
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);
        }
Exemple #9
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);
        }
Exemple #10
0
        public override void Process(MedicalCabinetClicked packet)
        {
            GameObject     gameObject = NitroxEntity.RequireObjectFrom(packet.Id);
            MedicalCabinet cabinet    = gameObject.RequireComponent <MedicalCabinet>();

            bool medkitPickedUp = !packet.HasMedKit && cabinet.hasMedKit;

            cabinet.hasMedKit       = packet.HasMedKit;
            cabinet.timeSpawnMedKit = packet.NextSpawnTime;

            bool isDoorOpen       = (bool)cabinet.ReflectionGet("doorOpen");
            bool doorChangedState = isDoorOpen != packet.DoorOpen;

            if (doorChangedState)
            {
                cabinet.Invoke("ToggleDoorState", 0f);
            }
            else if (medkitPickedUp)
            {
                cabinet.Invoke("ToggleDoorState", 1.8f);
            }
        }
Exemple #11
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);
        }
Exemple #12
0
        public override void Process(MedicalCabinetClicked packet)
        {
            Optional <GameObject> opGameObject = GuidHelper.GetObjectFrom(packet.Guid);

            if (opGameObject.IsPresent())
            {
                GameObject     gameObject = opGameObject.Get();
                MedicalCabinet cabinet    = gameObject.GetComponent <MedicalCabinet>();

                if (cabinet != null)
                {
                    bool medkitPickedUp = !packet.HasMedKit && cabinet.hasMedKit;

                    cabinet.hasMedKit       = packet.HasMedKit;
                    cabinet.timeSpawnMedKit = packet.NextSpawnTime;

                    bool isDoorOpen       = (bool)cabinet.ReflectionGet("doorOpen");
                    bool doorChangedState = isDoorOpen != packet.DoorOpen;

                    if (doorChangedState)
                    {
                        cabinet.Invoke("ToggleDoorState", 0f);
                    }
                    else if (medkitPickedUp)
                    {
                        cabinet.Invoke("ToggleDoorState", 1.8f);
                    }
                }
                else
                {
                    Console.WriteLine("Guid " + packet.Guid + " did not have a MedicalCabinet script");
                }
            }
            else
            {
                Console.WriteLine("Could not locate medical cabinet with guid: " + packet.Guid);
            }
        }
Exemple #13
0
    public override void Process(MedicalCabinetClicked packet)
    {
        GameObject     gameObject = NitroxEntity.RequireObjectFrom(packet.Id);
        MedicalCabinet cabinet    = gameObject.RequireComponent <MedicalCabinet>();

        bool medkitPickedUp   = !packet.HasMedKit && cabinet.hasMedKit;
        bool doorChangedState = cabinet.doorOpen != packet.DoorOpen;

        cabinet.hasMedKit       = packet.HasMedKit;
        cabinet.timeSpawnMedKit = packet.NextSpawnTime;

        using (packetSender.Suppress <PlayFMODCustomEmitter>())
            using (FMODSystem.SuppressSounds())
            {
                if (doorChangedState)
                {
                    cabinet.Invoke(nameof(MedicalCabinet.ToggleDoorState), 0f);
                }
                else if (medkitPickedUp)
                {
                    cabinet.Invoke(nameof(MedicalCabinet.ToggleDoorState), 2f);
                }
            }
    }
Exemple #14
0
 public static void Postfix(MedicalCabinet __instance)
 {
     Multiplayer.Logic.MedkitFabricator.Clicked(__instance);
 }
 public static void Postfix(MedicalCabinet __instance)
 {
     NitroxServiceLocator.LocateService <MedkitFabricator>().Clicked(__instance);
 }