private void Start()
    {
        leftTop.GetComponent <Image>().sprite  = smallHealth;
        rightTop.GetComponent <Image>().sprite = maxHealth;

        Debug.Log(i++);
        if (SelectPlayerScene.GetModus() == 1)
        {
            Debug.Log(s++);

            Debug.Log("Test");
            NetworkSend.FirstPlayer();

            // Gangster Store
            leftBot.GetComponent <Image>().sprite  = bulletUpgrade;
            rightBot.GetComponent <Image>().sprite = bulletDouble;
        }
        else
        {
            NetworkSend.FirstPlayer();
            // Archer Store
            leftBot.GetComponent <Image>().sprite  = arrowUpgrade;
            rightBot.GetComponent <Image>().sprite = arrowDouble;
        }
    }
Example #2
0
 private static void Respawn()
 {
     CanvasSettings.DeactivateMenu();
     Destroy(GameObject.Find("DeathCamera"));
     ConnectedCharacters.MyPlayer.Respawn();
     NetworkSend.Reliable("RESPAWN|");
 }
Example #3
0
        public void Spawn(
            int characterId,
            string characterName,
            string characterPersonality,
            float px, float py, float pz,
            float rx, float ry, float rz,
            int maxHealth,
            int currentHealth,
            int maxStamina,
            int currentStamina,
            int gold,
            int baseWeight,
            int baseDamage,
            int baseArmor,
            int weaponId,
            int apparelId,
            int dialogueId,
            float ox, float oy, float oz,
            bool isDead,
            float respawnTime,
            float lookRadius
            )
        {
            GameObject npcObject = Instantiate(NPCPrefab);

            npcObject.name = characterName;
            npcObject.transform.position = new Vector3(px, py, pz);
            npcObject.transform.rotation = Quaternion.Euler(new Vector3(rx, ry, rz));
            npcObject.GetComponent <CharacterReference>().CharacterId = characterId;
            ClientNPC npc = new ClientNPC(
                characterId,
                characterName,
                characterPersonality,
                npcObject,
                maxHealth,
                currentHealth,
                maxStamina,
                currentStamina,
                gold,
                baseWeight,
                baseDamage,
                baseArmor,
                weaponId,
                apparelId,
                dialogueId,
                new Vector3(ox, oy, oz),
                respawnTime,
                lookRadius
                );

            if (isDead)
            {
                npc.Death();
            }
            ConnectedCharacters.Characters.Add(characterId, npc);
            ConnectedCharacters.NPCs.Add(characterId, npc);
            NetworkSend.Reliable("NPCITEMS|" + characterId);
            ConnectedCharacters.NPCs[characterId].Avatar.GetComponent <CharacterLerpController>().Character = npc;
        }
Example #4
0
        public void Hit(GameObject hit)
        {
            CanHit = false;
            int characterId = hit.GetComponent <CharacterReference>().CharacterId;

            CanvasSettings.PlayerHudController.ActivateEnemyView(ConnectedCharacters.Characters[characterId]);
            NetworkSend.Reliable("HIT|" + characterId + "|" + ConnectedCharacters.MyPlayer.Damage);
            ConnectedCharacters.Characters[characterId].TakeDamage(ConnectedCharacters.MyPlayer.Damage);
        }
    // Start is called before the first frame update
    void Start()
    {
        SpawnPlayer();

        if (CheckIfAlone())//other could be invisible
        {
            //respawn other player
            NetworkSend.ReInstantiateOtherPlayer();
        }
    }
Example #6
0
 //! Network functions for multiplayer games.
 public NetworkController(PlayerController playerController)
 {
     this.playerController = playerController;
     textureDictionary     = playerController.gameManager.GetComponent <TextureDictionary>();
     networkPlayers        = new Dictionary <string, GameObject>();
     playerPositions       = new Dictionary <string, Vector3>();
     playerNames           = new List <string>();
     networkSend           = new NetworkSend(this);
     networkReceive        = new NetworkReceive(this);
 }
Example #7
0
        public void SendResult()
        {
            NetworkParameters NetParams = new NetworkParameters();

            NetParams.RemoteSystemName = RemoteSystemName;
            NetworkSend Sender = new NetworkSend(int.Parse(ConfigurationSettings.AppSettings["ResultPort"]));

            Sender.NetworkParameters = NetParams;
            Sender.SendData(DataPacket);
        }
 private void BuyItem()
 {
     if (ConnectedCharacters.MyPlayer.BuyItem(_currentCharacter, GetCurrentSelectedItem().GetId()))
     {
         NetworkSend.Reliable("BUY|" + _currentCharacter.CharacterId + "|" + GetCurrentSelectedItem().GetId());
         RefreshMenu();
     }
     else
     {
         Debug.Log("Item purchase failed");
     }
 }
        private void DropItem()
        {
            GameObject item = new GameObject();

            item.transform.position   = ConnectedCharacters.MyPlayer.Avatar.transform.position;
            item.transform.rotation   = ConnectedCharacters.MyPlayer.Avatar.transform.rotation;
            item.transform.localScale = new Vector3(1, 1, 1);
            item.transform.position  += item.transform.TransformDirection(Vector3.forward) * 2;
            NetworkSend.Reliable("DROP|" + GetCurrentSelectedItem().GetId() + "|" + item.transform.position.x + "|" +
                                 item.transform.position.y + "|" + item.transform.position.z);
            Destroy(item);
            GetCurrentSelectedItem().Drop(ConnectedCharacters.MyPlayer);
            RefreshMenu();
        }
 private void UseItem()
 {
     NetworkSend.Reliable("USE|" + GetCurrentSelectedItem().GetId());
     GetCurrentSelectedItem().Use(ConnectedCharacters.MyPlayer);
     if (GetCurrentSelectedItem().GetCategory() == "Weapons")
     {
         ConnectedCharacters.MyPlayer.Avatar.GetComponent <CharacterAvatarController>().UpdateWeapon(ConnectedCharacters.MyPlayer);
     }
     else if (GetCurrentSelectedItem().GetCategory() == "Apparel")
     {
         ConnectedCharacters.MyPlayer.Avatar.GetComponent <CharacterAvatarController>().UpdateApparel(ConnectedCharacters.MyPlayer);
     }
     RefreshMenu();
 }
Example #11
0
        private void Update()
        {
            if (Input.GetKeyDown(KeyCode.F))
            {
                CanvasSettings.ToggleInventoryMenu(ConnectedCharacters.MyPlayer, "INVENTORY");
            }

            if (Input.GetKeyDown(KeyCode.Escape))
            {
                CanvasSettings.TogglePauseMenu();
            }

            if (Input.GetButtonDown("Fire1") && !_characterAnimator.Attacking)
            {
                NetworkSend.Reliable("ATK|");
                _characterAnimator.Attack();
            }

            if (!_characterAnimator.Attacking)
            {
                CanHit = true;
            }
        }
        private void Update()
        {
            if (Physics.Raycast(gameObject.transform.position, transform.forward, out _hit, Range))
            {
                if (_hit.transform.CompareTag("Item"))
                {
                    if (_hit.transform.gameObject.GetComponent <ItemReference>().ItemId != _lastItemHit)
                    {
                        _lastItemHit = _hit.transform.gameObject.GetComponent <ItemReference>().ItemId;
                        CanvasSettings.PlayerHudController.ActivateInteractableView();
                        CanvasSettings.PlayerHudController.SetItemView(ItemList.Items[_lastItemHit]);
                    }

                    if (Input.GetKeyDown(KeyCode.E))
                    {
                        NetworkSend.Reliable("PICKUP|" + _hit.transform.gameObject.GetComponent <ItemReference>().WorldId);
                    }
                }

                if (_hit.transform.CompareTag("NPC"))
                {
                    if (_hit.transform.gameObject.GetComponent <CharacterReference>().CharacterId != _lastNPCHit)
                    {
                        _lastNPCHit = _hit.transform.gameObject.GetComponent <CharacterReference>().CharacterId;
                        CanvasSettings.PlayerHudController.ActivateInteractableView();
                        CanvasSettings.PlayerHudController.SetNPCView(ConnectedCharacters.NPCs[_lastNPCHit]);
                    }

                    if (ConnectedCharacters.NPCs[_lastNPCHit].DialogueId >= 0 && Input.GetKeyDown(KeyCode.E))
                    {
//            NetworkSend.Reliable("NPCITEMS|" + _lastNPCHit);
                        CanvasSettings.PlayerHudController.SetCurrentInteractingCharacter(ConnectedCharacters.NPCs[_lastNPCHit]);
                        CanvasSettings.PlayerHudController.Interact("INTERACT");
                    }
                }

                if (_hit.transform.CompareTag("Player"))
                {
                    if (_hit.transform.gameObject.GetComponent <CharacterReference>().CharacterId != _lastPlayerHit)
                    {
                        _lastPlayerHit = _hit.transform.gameObject.GetComponent <CharacterReference>().CharacterId;
                        CanvasSettings.PlayerHudController.ActivateInteractableView();
                        CanvasSettings.PlayerHudController.SetPlayerView(ConnectedCharacters.Players[_lastPlayerHit]);
                    }

                    if (ConnectedCharacters.Players[_lastPlayerHit].DialogueId >= 0 && Input.GetKeyDown(KeyCode.E))
                    {
                        CanvasSettings.PlayerHudController.SetCurrentInteractingCharacter(ConnectedCharacters.Players[_lastPlayerHit]);
                        CanvasSettings.PlayerHudController.Interact("INTERACT");
                    }
                }

                if (_hit.transform.CompareTag("Body"))
                {
                    if (_hit.transform.gameObject.GetComponent <CharacterReference>().CharacterId != _lastBodyHit)
                    {
                        _lastBodyHit = _hit.transform.gameObject.GetComponent <CharacterReference>().CharacterId;
                        CanvasSettings.PlayerHudController.ActivateInteractableView();
                        CanvasSettings.PlayerHudController.SetBodyView(ConnectedCharacters.Bodies[_lastBodyHit]);
                    }

                    if (ConnectedCharacters.Bodies[_lastBodyHit].DialogueId >= 0 && Input.GetKeyDown(KeyCode.E))
                    {
                        CanvasSettings.PlayerHudController.SetCurrentInteractingCharacter(ConnectedCharacters.Bodies[_lastBodyHit]);
                        CanvasSettings.PlayerHudController.Interact("INTERACT");
                    }
                }
            }
            else
            {
                _lastItemHit   = -1;
                _lastNPCHit    = -1;
                _lastPlayerHit = -1;
                _lastBodyHit   = -1;
                CanvasSettings.PlayerHudController.DeactivateInteractableView();
            }
        }
Example #13
0
    // Update is called once per frame
    void Update()
    {
        if (timerIsRunning)
        {
            CurrentValue += 0.0043f;
            if (timeRemaining > 0)
            {
                switch (timeRemaining)
                {
                case 300:
                    TimerText.text = "3";
                    break;

                case 200:
                    TimerText.text = "2";

                    break;

                case 100:
                    TimerText.text = "1";

                    break;

                case 50:
                    TimerText.text = "Game Starts";

                    break;

                default:
                    break;
                }
                timeRemaining--;
            }
            else
            {
                timeRemaining  = 0;
                TimerText.text = "Game Starts";
                timerIsRunning = false;

                PhotonNetwork.LocalPlayer.CustomProperties[Constance.COUNTDOWN_READY] = true;
                foreach (Photon.Realtime.Player p in PhotonNetwork.PlayerList)
                {
                    if (p.Equals(PhotonNetwork.LocalPlayer))
                    {
                        ExitGames.Client.Photon.Hashtable hash = new ExitGames.Client.Photon.Hashtable();
                        hash.Add(Constance.COUNTDOWN_READY, true);
                        p.SetCustomProperties(hash);
                        LocalReady = (bool)p.CustomProperties[Constance.COUNTDOWN_READY];
                    }
                    else
                    {
                        var sw = new Stopwatch();
                        sw.Start();
                        for (int i = 0; ; i++)
                        {
                            if (i % 100000 == 0)                   // if in 100000th iteration (could be any other large number
                                                                   // depending on how often you want the time to be checked)
                            {
                                sw.Stop();                         // stop the time measurement
                                if (sw.ElapsedMilliseconds > 2000) // check if desired period of time has elapsed
                                {
                                    break;                         // if more than 5000 milliseconds have passed, stop looping and return
                                           // to the existing code
                                }
                                else
                                {
                                    sw.Start(); // if less than 5000 milliseconds have elapsed, continue looping
                                                // and resume time measurement
                                }
                            }
                        }
                        PhotonReady = (bool)p.CustomProperties[Constance.COUNTDOWN_READY];
                    }
                }

                NetworkSend.SendMessage();
            }
        }
        if (PhotonReady && LocalReady)
        {
            PhotonNetwork.LoadLevel("JumpAndRun");
            PhotonNetwork.AutomaticallySyncScene = false;
        }
    }
 private void LootItem()
 {
     ConnectedCharacters.MyPlayer.LootItem(_currentCharacter, GetCurrentSelectedItem().GetId());
     NetworkSend.Reliable("LOOT|" + _currentCharacter.CharacterId + "|" + GetCurrentSelectedItem().GetId());
     RefreshMenu();
 }
Example #15
0
    //! Called by unity engine for rendering and handling GUI events.
    public void OnGUI()
    {
        // STYLE
        GUI.skin = GetComponent <PlayerGUI>().thisGUIskin;

        // ASPECT RATIO
        float ScreenHeight = Screen.height;
        float ScreenWidth  = Screen.width;

        if (ScreenWidth / ScreenHeight < 1.7f)
        {
            ScreenHeight = (ScreenHeight * 0.75f);
        }
        if (ScreenHeight < 700)
        {
            GUI.skin.label.fontSize = 10;
        }

        if (!playerController.stateManager.Busy() && GetComponent <MainMenu>().finishedLoading == true)
        {
            // MACHINE CONTROL GUI
            if (playerController.inventoryOpen == false && playerController.machineGUIopen == true && playerController.objectInSight != null)
            {
                GameObject obj = playerController.objectInSight;

                if (obj.GetComponent <PowerConduit>() != null)
                {
                    bool         netFlag      = false;
                    PowerConduit powerConduit = obj.GetComponent <PowerConduit>();
                    if (powerConduit.connectionFailed == false)
                    {
                        GUI.DrawTexture(guiCoordinates.FourButtonSpeedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                        GUI.Label(guiCoordinates.outputLabelRect, "Range");
                        powerConduit.range = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, powerConduit.range, 6, 120);
                        if (GUI.Button(guiCoordinates.outputControlButton3Rect, "Dual Output: " + powerConduit.dualOutput))
                        {
                            if (powerConduit.dualOutput == true)
                            {
                                powerConduit.dualOutput = false;
                            }
                            else
                            {
                                powerConduit.dualOutput = true;
                            }
                            playerController.PlayButtonSound();
                        }
                        if (GUI.Button(guiCoordinates.outputControlButton4Rect, "Close"))
                        {
                            playerController.machineGUIopen = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    else
                    {
                        GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            powerConduit.connectionAttempts = 0;
                            powerConduit.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        bool rangeDeSync  = powerConduit.range != playerController.networkedConduitRange;
                        bool outputDeSync = powerConduit.dualOutput != playerController.networkedDualPower;
                        if (rangeDeSync || outputDeSync || netFlag)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = powerConduit.gameObject.transform.position;
                            updateNetworkConduitCoroutine          = StartCoroutine(net.SendPowerData(location, powerConduit.range, powerConduit.dualOutput));
                            playerController.networkedConduitRange = powerConduit.range;
                            playerController.networkedDualPower    = powerConduit.dualOutput;
                        }
                    }
                }

                if (obj.GetComponent <RailCartHub>() != null)
                {
                    bool        netFlag = false;
                    RailCartHub hub     = obj.GetComponent <RailCartHub>();
                    if (hub.connectionFailed == false)
                    {
                        if (hubStopWindowOpen == false)
                        {
                            GUI.DrawTexture(guiCoordinates.FiveButtonSpeedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                            GUI.Label(guiCoordinates.railCartHubCircuitLabelRect, "Circuit");
                            int    circuit       = hub.circuit;
                            string circuitString = GUI.TextField(guiCoordinates.railCartHubCircuitRect, circuit.ToString(), 3);
                            try
                            {
                                hub.circuit = int.Parse(circuitString);
                            }
                            catch
                            {
                                // NOOP
                            }
                            GUI.Label(guiCoordinates.outputLabelRect, "Range");
                            hub.range = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, hub.range, 6, 120);
                            if (GUI.Button(guiCoordinates.outputControlButton3Rect, "Stop Settings"))
                            {
                                hubStopWindowOpen = true;
                                playerController.PlayButtonSound();
                            }
                            if (GUI.Button(guiCoordinates.outputControlButton4Rect, "Close"))
                            {
                                playerController.machineGUIopen = false;
                                hubStopWindowOpen = false;
                                playerController.PlayButtonSound();
                            }
                        }
                        else
                        {
                            GUI.DrawTexture(guiCoordinates.FiveButtonSpeedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                            GUI.Label(guiCoordinates.longOutputLabelRect, "Stop Time");
                            if (GUI.Button(guiCoordinates.outputControlButton0Rect, "Stop: " + hub.stop))
                            {
                                if (hub.stop == true)
                                {
                                    hub.stop = false;
                                }
                                else
                                {
                                    hub.stop = true;
                                }
                                playerController.PlayButtonSound();
                            }
                            hub.stopTime = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, hub.stopTime, 0, 600);
                            if (GUI.Button(guiCoordinates.outputControlButton3Rect, "Range Settings"))
                            {
                                hubStopWindowOpen = false;
                                playerController.PlayButtonSound();
                            }
                            if (GUI.Button(guiCoordinates.outputControlButton4Rect, "Close"))
                            {
                                playerController.machineGUIopen = false;
                                hubStopWindowOpen = false;
                                playerController.PlayButtonSound();
                            }
                        }
                    }
                    else
                    {
                        GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            hub.connectionAttempts = 0;
                            hub.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        bool circuitDeSync = hub.circuit != playerController.networkedHubCircuit;
                        bool rangeDeSync   = hub.range != playerController.networkedHubRange;
                        bool stopDeSync    = hub.stop != playerController.networkedHubStop;
                        bool timeDeSync    = (int)hub.stopTime != (int)playerController.networkedHubStopTime;
                        if (circuitDeSync || rangeDeSync || stopDeSync || timeDeSync || netFlag)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = hub.gameObject.transform.position;
                            updateNetworkConduitCoroutine         = StartCoroutine(net.SendHubData(location, hub.circuit, hub.range, hub.stop, hub.stopTime));
                            playerController.networkedHubCircuit  = hub.circuit;
                            playerController.networkedHubRange    = hub.range;
                            playerController.networkedHubStop     = hub.stop;
                            playerController.networkedHubStopTime = hub.stopTime;
                        }
                    }
                }

                if (obj.GetComponent <Retriever>() != null)
                {
                    bool      netFlag   = false;
                    Retriever retriever = obj.GetComponent <Retriever>();
                    if (retriever.connectionFailed == false)
                    {
                        GUI.DrawTexture(guiCoordinates.FourButtonSpeedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                        if (retriever.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            retriever.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, retriever.speed, 0, retriever.power);
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                        if (GUI.Button(guiCoordinates.outputControlButton3Rect, "Choose Items"))
                        {
                            if (obj.GetComponent <InventoryManager>().initialized == true)
                            {
                                playerController.inventoryOpen  = true;
                                playerController.storageGUIopen = true;
                                playerController.machineGUIopen = false;
                                playerController.PlayButtonSound();
                            }
                        }
                        if (GUI.Button(guiCoordinates.outputControlButton4Rect, "Close"))
                        {
                            playerController.machineGUIopen = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    else
                    {
                        GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            retriever.connectionAttempts = 0;
                            retriever.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (retriever.speed != playerController.networkedConduitRange || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = retriever.gameObject.transform.position;
                            updateNetworkConduitCoroutine          = StartCoroutine(net.SendConduitData(location, retriever.speed));
                            playerController.networkedConduitRange = retriever.speed;
                        }
                    }
                }

                if (obj.GetComponent <AutoCrafter>() != null)
                {
                    bool        netFlag     = false;
                    AutoCrafter autoCrafter = obj.GetComponent <AutoCrafter>();
                    if (autoCrafter.connectionFailed == false)
                    {
                        GUI.DrawTexture(guiCoordinates.FourButtonSpeedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                        if (autoCrafter.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            autoCrafter.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, autoCrafter.speed, 0, autoCrafter.power);
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                        if (GUI.Button(guiCoordinates.outputControlButton3Rect, "Choose Item"))
                        {
                            if (obj.GetComponent <InventoryManager>().initialized == true)
                            {
                                playerController.inventoryOpen  = true;
                                playerController.storageGUIopen = true;
                                playerController.machineGUIopen = false;
                                playerController.PlayButtonSound();
                            }
                        }
                        if (GUI.Button(guiCoordinates.outputControlButton4Rect, "Close"))
                        {
                            playerController.machineGUIopen = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    else
                    {
                        GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            autoCrafter.connectionAttempts = 0;
                            autoCrafter.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (autoCrafter.speed != playerController.networkedConduitRange || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = autoCrafter.gameObject.transform.position;
                            updateNetworkConduitCoroutine          = StartCoroutine(net.SendConduitData(location, autoCrafter.speed));
                            playerController.networkedConduitRange = autoCrafter.speed;
                        }
                    }
                }

                if (obj.GetComponent <UniversalConduit>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    UniversalConduit conduit = obj.GetComponent <UniversalConduit>();
                    if (conduit.connectionFailed == false)
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Range");
                        conduit.range = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, conduit.range, 6, 120);
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            conduit.connectionAttempts = 0;
                            conduit.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (conduit.range != playerController.networkedConduitRange || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = conduit.gameObject.transform.position;
                            updateNetworkConduitCoroutine          = StartCoroutine(net.SendConduitData(location, conduit.range));
                            playerController.networkedConduitRange = conduit.range;
                        }
                    }
                }

                if (obj.GetComponent <DarkMatterConduit>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    DarkMatterConduit conduit = obj.GetComponent <DarkMatterConduit>();
                    if (conduit.connectionFailed == false)
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Range");
                        conduit.range = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, conduit.range, 6, 120);
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            conduit.connectionAttempts = 0;
                            conduit.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (conduit.range != playerController.networkedConduitRange || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = conduit.gameObject.transform.position;
                            updateNetworkConduitCoroutine          = StartCoroutine(net.SendConduitData(location, conduit.range));
                            playerController.networkedConduitRange = conduit.range;
                        }
                    }
                }

                if (obj.GetComponent <HeatExchanger>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    HeatExchanger hx = obj.GetComponent <HeatExchanger>();
                    if (hx.inputObject != null)
                    {
                        if (hx.inputObject.GetComponent <UniversalConduit>() != null)
                        {
                            if (hx.connectionFailed == false)
                            {
                                GUI.Label(guiCoordinates.outputLabelRect, "Output");
                                hx.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, hx.speed, 0, playerController.hxAmount);
                            }
                            else
                            {
                                GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                                if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                                {
                                    netFlag = true;
                                    hx.connectionAttempts = 0;
                                    hx.connectionFailed   = false;
                                    playerController.PlayButtonSound();
                                }
                            }
                            if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                            {
                                if (hx.speed != playerController.networkedMachineSpeed || netFlag == true)
                                {
                                    NetworkSend net      = playerController.networkController.networkSend;
                                    Vector3     location = hx.gameObject.transform.position;
                                    updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, hx.speed));
                                    playerController.networkedMachineSpeed = hx.speed;
                                }
                            }
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Input");
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "No Input");
                    }
                }

                if (obj.GetComponent <PowerSource>() != null)
                {
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    PowerSource powerSource = obj.GetComponent <PowerSource>();
                    if (powerSource.connectionFailed == true)
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            powerSource.connectionAttempts = 0;
                            powerSource.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Online");
                    }
                }

                if (obj.GetComponent <Auger>() != null)
                {
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    Auger auger = obj.GetComponent <Auger>();
                    if (auger.power > 0)
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Output");
                        auger.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, auger.speed, 0, auger.power);
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (auger.speed != playerController.networkedMachineSpeed)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = auger.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, auger.speed));
                            playerController.networkedMachineSpeed = auger.speed;
                        }
                    }
                }

                if (obj.GetComponent <UniversalExtractor>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    UniversalExtractor extractor = obj.GetComponent <UniversalExtractor>();
                    if (extractor.connectionFailed == false)
                    {
                        if (extractor.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            extractor.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, extractor.speed, 0, extractor.power);
                        }
                        else
                        {
                            GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            extractor.connectionAttempts = 0;
                            extractor.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (extractor.speed != playerController.networkedMachineSpeed || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = extractor.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, extractor.speed));
                            playerController.networkedMachineSpeed = extractor.speed;
                        }
                    }
                }
                if (obj.GetComponent <DarkMatterCollector>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    DarkMatterCollector collector = obj.GetComponent <DarkMatterCollector>();
                    if (collector.connectionFailed == false)
                    {
                        if (collector.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            collector.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, collector.speed, 0, collector.power);
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            collector.connectionAttempts = 0;
                            collector.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (collector.speed != playerController.networkedMachineSpeed || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = collector.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, collector.speed));
                            playerController.networkedMachineSpeed = collector.speed;
                        }
                    }
                }

                if (obj.GetComponent <Smelter>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    Smelter smelter = obj.GetComponent <Smelter>();
                    if (smelter.connectionFailed == false)
                    {
                        if (smelter.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            smelter.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, smelter.speed, 0, smelter.power);
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            smelter.connectionAttempts = 0;
                            smelter.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (smelter.speed != playerController.networkedMachineSpeed || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = smelter.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, smelter.speed));
                            playerController.networkedMachineSpeed = smelter.speed;
                        }
                    }
                }

                if (obj.GetComponent <AlloySmelter>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    AlloySmelter alloySmelter = obj.GetComponent <AlloySmelter>();
                    if (alloySmelter.connectionFailed == false)
                    {
                        if (alloySmelter.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            alloySmelter.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, alloySmelter.speed, 0, alloySmelter.power);
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            alloySmelter.connectionAttempts = 0;
                            alloySmelter.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (alloySmelter.speed != playerController.networkedMachineSpeed || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = alloySmelter.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, alloySmelter.speed));
                            playerController.networkedMachineSpeed = alloySmelter.speed;
                        }
                    }
                }

                if (obj.GetComponent <Press>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    Press press = obj.GetComponent <Press>();
                    if (press.connectionFailed == false)
                    {
                        if (press.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            press.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, press.speed, 0, press.power);
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            press.connectionAttempts = 0;
                            press.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (press.speed != playerController.networkedMachineSpeed || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = press.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, press.speed));
                            playerController.networkedMachineSpeed = press.speed;
                        }
                    }
                }

                if (obj.GetComponent <Extruder>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    Extruder extruder = obj.GetComponent <Extruder>();
                    if (extruder.connectionFailed == false)
                    {
                        if (extruder.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            extruder.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, extruder.speed, 0, extruder.power);
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            extruder.connectionAttempts = 0;
                            extruder.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (extruder.speed != playerController.networkedMachineSpeed || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = extruder.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, extruder.speed));
                            playerController.networkedMachineSpeed = extruder.speed;
                        }
                    }
                }

                if (obj.GetComponent <ModMachine>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    ModMachine modMachine = obj.GetComponent <ModMachine>();
                    if (modMachine.connectionFailed == false)
                    {
                        if (modMachine.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            modMachine.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, modMachine.speed, 0, modMachine.power);
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            modMachine.connectionAttempts = 0;
                            modMachine.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (modMachine.speed != playerController.networkedMachineSpeed || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = modMachine.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, modMachine.speed));
                            playerController.networkedMachineSpeed = modMachine.speed;
                        }
                    }
                }

                if (obj.GetComponent <Turret>() != null)
                {
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    Turret turret = obj.GetComponent <Turret>();
                    if (turret.power > 0)
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Output");
                        if (turret.power < 30)
                        {
                            turret.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, turret.speed, 0, turret.power);
                        }
                        else
                        {
                            turret.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, turret.speed, 0, 30);
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (turret.speed != playerController.networkedMachineSpeed)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = turret.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, turret.speed));
                            playerController.networkedMachineSpeed = turret.speed;
                        }
                    }
                }

                if (obj.GetComponent <MissileTurret>() != null)
                {
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    MissileTurret turret = obj.GetComponent <MissileTurret>();
                    if (turret.power > 0)
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Output");
                        if (turret.power < 30)
                        {
                            turret.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, turret.speed, 0, turret.power);
                        }
                        else
                        {
                            turret.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, turret.speed, 0, 30);
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (turret.speed != playerController.networkedMachineSpeed)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = turret.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, turret.speed));
                            playerController.networkedMachineSpeed = turret.speed;
                        }
                    }
                }

                if (obj.GetComponent <GearCutter>() != null)
                {
                    bool netFlag = false;
                    GUI.DrawTexture(guiCoordinates.speedControlBGRect, textureDictionary.dictionary["Interface Background"]);
                    GearCutter gearCutter = obj.GetComponent <GearCutter>();
                    if (gearCutter.connectionFailed == false)
                    {
                        if (gearCutter.power > 0)
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "Output");
                            gearCutter.speed = (int)GUI.HorizontalSlider(guiCoordinates.outputControlButton2Rect, gearCutter.speed, 0, gearCutter.power);
                        }
                        else
                        {
                            GUI.Label(guiCoordinates.outputLabelRect, "No Power");
                        }
                    }
                    else
                    {
                        GUI.Label(guiCoordinates.outputLabelRect, "Offline");
                        if (GUI.Button(guiCoordinates.outputControlButton2Rect, "Reboot"))
                        {
                            netFlag = true;
                            gearCutter.connectionAttempts = 0;
                            gearCutter.connectionFailed   = false;
                            playerController.PlayButtonSound();
                        }
                    }
                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                    {
                        if (gearCutter.speed != playerController.networkedMachineSpeed || netFlag == true)
                        {
                            NetworkSend net      = playerController.networkController.networkSend;
                            Vector3     location = gearCutter.gameObject.transform.position;
                            updateNetworkMachineCoroutine          = StartCoroutine(net.SendMachineData(location, gearCutter.speed));
                            playerController.networkedMachineSpeed = gearCutter.speed;
                        }
                    }
                }
            }
            else
            {
                hubStopWindowOpen = false;
                gameObject.GetComponent <MSCameraController>().enabled = true;
            }
        }
    }
 private void OnTriggerEnter2D(Collider2D collision)
 {
     NetworkSend.SendEnemyMessage2();
     SceneManager.LoadScene(6);
 }
Example #17
0
            private void ZInvokeWorker(cTrace.cContext pParentContext)
            {
                var lContext = pParentContext.NewMethod(nameof(cCallbackSynchroniser), nameof(ZInvokeWorker));

                while (mInvokes.TryDequeue(out var lInvoke))
                {
                    try
                    {
                        switch (lInvoke.EventArgs)
                        {
                        case cMessagePropertyChangedEventArgs lEventArgs:

                            MessagePropertyChanged?.Invoke(mSender, lEventArgs);
                            break;

                        case cMailboxPropertyChangedEventArgs lEventArgs:

                            MailboxPropertyChanged?.Invoke(mSender, lEventArgs);
                            break;

                        case PropertyChangedEventArgs lEventArgs:

                            PropertyChanged?.Invoke(mSender, lEventArgs);
                            break;

                        case cResponseTextEventArgs lEventArgs:

                            ResponseText?.Invoke(mSender, lEventArgs);
                            break;

                        case cNetworkReceiveEventArgs lEventArgs:

                            NetworkReceive?.Invoke(mSender, lEventArgs);
                            break;

                        case cNetworkSendEventArgs lEventArgs:

                            NetworkSend?.Invoke(mSender, lEventArgs);
                            break;

                        case cMailboxMessageDeliveryEventArgs lEventArgs:

                            MailboxMessageDelivery?.Invoke(mSender, lEventArgs);
                            break;

                        case cActionIntEventArgs lEventArgs:

                            lEventArgs.Action(lEventArgs.Int);
                            break;

                        default:

                            lContext.TraceError("unknown event type", lInvoke.EventArgs);
                            break;
                        }
                    }
                    catch (Exception e)
                    {
                        lContext.TraceException("error when invoking event handler", e);
                        try { CallbackException?.Invoke(mSender, new cCallbackExceptionEventArgs(e)); }
                        catch { }
                    }

                    if (lInvoke.Releaser != null)
                    {
                        lInvoke.Releaser.Release(lContext);
                    }
                }
            }
Example #18
0
    //! Places a machine in the world.
    private void BuildMachine(string type, RaycastHit hit)
    {
        bool canBuild = true;

        if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
        {
            canBuild = CanBuild();
        }
        else
        {
            canBuild = playerController.buildType != "Protection Block";
        }

        if (canBuild == true)
        {
            bool foundItems = false;
            gameManager.undoBlocks.Clear();
            foreach (InventorySlot slot in playerController.playerInventory.inventory)
            {
                if (foundItems == false)
                {
                    if (slot.amountInSlot > 0)
                    {
                        if (slot.typeInSlot.Equals(type))
                        {
                            foundItems = true;
                            bool flag = true;
                            if (type.Equals("Rail Cart"))
                            {
                                if (hit.collider.gameObject.GetComponent <RailCartHub>() != null)
                                {
                                    flag = true;
                                }
                                else
                                {
                                    playerController.invalidRailCartPlacement = true;
                                    flag = false;
                                }
                            }
                            else if (type.Equals("Auger"))
                            {
                                if (hit.collider.gameObject.tag.Equals("Landscape"))
                                {
                                    flag = true;
                                }
                                else
                                {
                                    playerController.invalidAugerPlacement = true;
                                    flag = false;
                                }
                            }
                            if (flag == true)
                            {
                                GameObject t   = blockDictionary.machineDictionary[type];
                                Vector3    pos = playerController.buildObject.transform.position;
                                Quaternion rot = playerController.buildObject.transform.rotation;
                                GameObject obj = Instantiate(t, pos, rot);
                                if (obj.GetComponent <RailCart>() != null)
                                {
                                    obj.GetComponent <RailCart>().target        = hit.collider.gameObject;
                                    obj.GetComponent <RailCart>().startPosition = pos;
                                }
                                if (obj.GetComponent <ModMachine>() != null)
                                {
                                    obj.GetComponent <ModMachine>().machineName = type;
                                }
                                if (obj.GetComponent <UniversalConduit>() != null)
                                {
                                    obj.GetComponent <UniversalConduit>().range = playerController.defaultRange;
                                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                                    {
                                        NetworkSend net      = playerController.networkController.networkSend;
                                        Vector3     location = obj.transform.position;
                                        updateNetworkCoroutine = StartCoroutine(net.SendConduitData(location, playerController.defaultRange));
                                    }
                                }
                                if (obj.GetComponent <PowerConduit>() != null)
                                {
                                    obj.GetComponent <PowerConduit>().range = playerController.defaultRange;
                                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                                    {
                                        NetworkSend net        = playerController.networkController.networkSend;
                                        Vector3     location   = obj.transform.position;
                                        int         range      = playerController.defaultRange;
                                        bool        dualOutput = obj.GetComponent <PowerConduit>().dualOutput;
                                        updateNetworkCoroutine = StartCoroutine(net.SendPowerData(location, range, dualOutput));
                                    }
                                }
                                if (obj.GetComponent <DarkMatterConduit>() != null)
                                {
                                    obj.GetComponent <DarkMatterConduit>().range = playerController.defaultRange;
                                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                                    {
                                        NetworkSend net      = playerController.networkController.networkSend;
                                        Vector3     location = obj.transform.position;
                                        updateNetworkCoroutine = StartCoroutine(net.SendConduitData(location, playerController.defaultRange));
                                    }
                                }
                                if (obj.GetComponent <RailCartHub>() != null)
                                {
                                    obj.GetComponent <RailCartHub>().range = playerController.defaultRange;
                                    if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                                    {
                                        NetworkSend net      = playerController.networkController.networkSend;
                                        RailCartHub hub      = obj.GetComponent <RailCartHub>();
                                        Vector3     location = obj.transform.position;
                                        int         range    = playerController.defaultRange;
                                        updateNetworkCoroutine = StartCoroutine(net.SendHubData(location, hub.circuit, hub.range, hub.stop, hub.stopTime));
                                    }
                                }
                                gameManager.undoBlocks.Add(new GameManager.Block(type, obj));
                                slot.amountInSlot -= 1;
                                playerController.builderSound.clip = singleBuildClip;
                                playerController.builderSound.Play();
                                if (PlayerPrefsX.GetPersistentBool("multiplayer") == true)
                                {
                                    UpdateNetwork(0, type, pos, obj.transform.rotation);
                                }
                            }
                        }
                        if (slot.amountInSlot == 0)
                        {
                            slot.typeInSlot = "nothing";
                        }
                    }
                }
            }
            if (foundItems == false)
            {
                playerController.PlayMissingItemsSound();
            }
        }
        else
        {
            playerController.PlayMissingItemsSound();
        }
    }