예제 #1
0
    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();
                }
            }
        }
    }