private void Update() { if (!gameIsPaused) { if (Input.GetKeyDown(KeyCode.G) && !slotsController.activeSlot.slotEmpty) { slotsController.DropWeapon(); } if (Input.GetKeyDown(KeyCode.E)) { if (Physics.Raycast(playerCam.transform.position, playerCam.transform.forward, out gearRay, gearLootRange, gearMask)) { Debug.Log("RayCast hit a gear : " + gearRay.transform.name); GearController gearToLoot = gearRay.transform.GetComponent <GearController>(); if (gearToLoot != null) { if (gearToLoot.gearType == GearType.Weapon) { slotsController.LootGear(gearToLoot, gearToLoot.gearType); } else if (gearToLoot.gearType == GearType.Consumable) { Debug.Log("Looting Consumable " + gearToLoot.name + " !"); slotsController.LootGear(gearToLoot, gearToLoot.gearType); } } } else if (Physics.Raycast(playerCam.transform.position, playerCam.transform.forward, out gearRay, gearLootRange, tpMask)) { Debug.Log("Found teleporter " + gearRay.transform.name); Vector3 teleportTo; switch (gearRay.transform.name) { case "tpToLevel1FromTuto": teleportTo = new Vector3(tpToTutoFromLevel1.position.x, tpToTutoFromLevel1.position.y + 2, tpToTutoFromLevel1.position.z); playerController.teleportPlayer(teleportTo); tpToTutoFromLevel1.gameObject.SetActive(false); break; case "tpToArena1FromLevel1": teleportTo = new Vector3(tpToLevel1FromArena1.position.x, tpToLevel1FromArena1.position.y + 2, tpToLevel1FromArena1.position.z); playerController.teleportPlayer(teleportTo); tpToLevel1FromArena1.gameObject.SetActive(false); enemies.Find(enemy => enemy.name.Equals("BossPanda")).gameObject.SetActive(true); break; case "tpToMarketFromArena1": teleportTo = new Vector3(tpToArena1FromMarket.position.x, tpToArena1FromMarket.position.y + 2, tpToArena1FromMarket.position.z); playerController.teleportPlayer(teleportTo); tpToArena1FromMarket.gameObject.SetActive(false); break; case "tpToLevel2FromMarket": teleportTo = new Vector3(tpToMarketFromLevel2.position.x, tpToMarketFromLevel2.position.y + 2, tpToMarketFromLevel2.position.z); playerController.teleportPlayer(teleportTo); tpToMarketFromLevel2.gameObject.SetActive(false); break; case "tpToArena2FromLevel2": teleportTo = new Vector3(tpToLevel2FromArena2.position.x, tpToLevel2FromArena2.position.y + 2, tpToLevel2FromArena2.position.z); playerController.teleportPlayer(teleportTo); tpToLevel2FromArena2.gameObject.SetActive(false); enemies.Find(enemy => enemy.name.Equals("BossMammoth")).gameObject.SetActive(true); break; default: Debug.Log("Error"); break; } } else if (Physics.Raycast(playerCam.transform.position, playerCam.transform.forward, out gearRay, gearLootRange * 2, npcMask)) { Debug.Log("NPC detected"); NPC npc = gearRay.transform.GetComponent <NPC>(); if (npc.mType == NPCType.ShopKeeper) { ShopController shopController = npc.gameObject.GetComponent <ShopController>(); canvasManager.SetShop(shopController); } npc.LaunchDialog(); } } } }