예제 #1
0
    // Start is called before the first frame update
    void Start()
    {
        if (!player)
        {
            player = Instantiate(playerPrefab);
        }


        DontDestroyOnLoad(player);
        DontDestroyOnLoad(forestSpawn.gameObject);
        DontDestroyOnLoad(houseSpawn.gameObject);
        uniquePlacement  = GetComponent <ObjectPlacement>();
        playerController = player.GetComponent <PlayerController>();
        playerController.OnPlayerPickUpLastItem += UnlockEntranceDoor;
        playerController.checklistGameObject     = playerCheckList;

        for (int i = 0; i < maxItemsNeeded; i++)
        {
            int random = Random.Range(0, allItems.Length);

            while (itemNumber.Contains(random))
            {
                random = Random.Range(0, allItems.Length);
            }
            itemNumber.Add(random);
        }

        itemsNeeded = new GameObject[maxItemsNeeded];
        playerController.checklistItems = new PlayerController.checklistItem[maxItemsNeeded];
        uniquePlacement.prefabs         = new ObjectPlacement.prefabInfo[itemsNeeded.Length];

        for (int i = 0; i < itemsNeeded.Length; i++)
        {
            GameObject newItem           = Instantiate(allItems[itemNumber[i]]);
            GameObject newIngredientText = Instantiate(checklistItemUIPrefab);
            ObjectCore newItemProperties = newItem.GetComponent <ObjectCore>();

            itemsNeeded[i] = newItem;
            newIngredientText.transform.SetParent(playerController.checklistGameObject.transform, false);
            playerController.checklistItems[i].item = newIngredientText;
            playerController.checklistItems[i].id   = newItemProperties.id;
            newIngredientText.name = "Ingredient #" + i + " Text";
            newIngredientText.GetComponent <Text>().text = "• " + newItemProperties.itemName;
            newItem.SetActive(true);
            newItem.SetActive(false);

            uniquePlacement.prefabs[i].id = newItemProperties.id;
        }

        RelocatePlayer();
        playerController.staffOfLighting.staffBar = staffBar;
        playerController.OnPlayerDeath           += Loss;
        playerController.OnPlayerWin += Win;
        levelLoader = GetComponent <LevelLoader>();
        //generator.OnGeneratorFinish += SpawnPlayer;
    }
    private void PickUpItem(GameObject item)
    {
        if (objectsGrabbed.Count < maxInventorySlots)
        {
            if (item.GetComponent <ObjectCore>().canBePickedUp)
            {
                Debug.Log("nani1");
                int randomNumber = Random.Range(0, pickupSounds.Length);

                if (pickupSounds.Length > 0)
                {
                    pickupSounds[randomNumber].Play();
                }


                ObjectCore       newObject     = item.transform.gameObject.GetComponent <ObjectCore>();
                objectProperties newProperties = new objectProperties();
                newProperties.id = newObject.id;
                GameObject newIcon = Instantiate(newObject.icon);
                newProperties.icon = newIcon;

                objectsGrabbed.Add(newProperties);
                Destroy(item);

                if (OnPlayerPickUpItem != null)
                {
                    OnPlayerPickUpItem();
                }

                if (idOfKeyItem == newProperties.id)
                {
                    if (OnPlayerFoundKeyItem != null)
                    {
                        OnPlayerFoundKeyItem();
                    }
                }

                if (idOfWin == newProperties.id)
                {
                    Debug.Log("You won!!");
                    fpsController.enabled       = false;
                    characterController.enabled = false;
                    if (OnPlayerWin != null)
                    {
                        OnPlayerWin();
                    }
                }

                bool isItemOnChecklist = false;

                for (int i = 0; i < checklistItems.Length; i++)
                {
                    if (checklistItems[i].id == newProperties.id)
                    {
                        GameObject checklistItem = checklistItems[i].item.transform.GetChild(0).gameObject;
                        checklistItem.SetActive(true);
                        Debug.Log("This item has been scratched");
                        scracthChecklistSound.Play();
                        isItemOnChecklist = true;
                    }
                }

                if (newObject.isLastItem)
                {
                    // Player can return to home.
                    Debug.Log("Player Can Go Home");

                    if (OnPlayerPickUpLastItem != null)
                    {
                        OnPlayerPickUpLastItem();
                    }
                }

                newObject.PickupObject();

                if (isItemOnChecklist)
                {
                    scracthChecklistSound.Play();
                }
            }
        }
    }
예제 #3
0
 public EmptyObject2D()
 {
     Core = new ObjectCore(OnAdded, OnUpdate, OnRemoved, OnDispose);
 }