예제 #1
0
    public override bool Execute()
    {
        //Item item = pickup.GetItem();
        if (!Check())
        {
            return(false);
        }
        if (pickup is Weapon)
        {
            ((Player)character).completeAchievement("First Weapon");
        }


        if (pickup.IsPurchasable())
        {
            if (character.GetGold() < pickup.GetCost() || character.GetLevel() < pickup.GetBaseLevel())
            {
                string notEnough = string.Format("Innsufficent gold! This item costs: {0}", pickup.GetCost());
                gameManager.GetPlayer().SetDialogMessage(notEnough);
                return(false);
            }
            else
            {
                ((Player)character).completeAchievement("First Purchase");
                character.SetGold(character.GetGold() - pickup.GetCost());
                Pickup newPickup = pickup.Clone();
                gameManager.GetTile(pickup.GetCoordinates()).AddPickup(newPickup);
                pickup.isPurchasable = false;
            }
        }

        gameManager.GetTile(pickup.GetCoordinates()).RemovePickup(pickup);
        //pickup.transform.parent = character.transform

        //Find index of first dummy item in inventory
        Pickup[] inventory = GameObject.Find("InventoryInven").GetComponentsInChildren <Pickup>();
        int      index     = 0;

        for (int i = 0; i < inventory.Length; i++)
        {
            if (inventory[i].name == "invenDummy")
            {
                index = i;
                break;
            }
        }
        //REplace dummy item with pickup
        pickup.transform.parent = GameObject.Find("InventoryInven").transform;
        pickup.transform.SetSiblingIndex(index);
        UnityEngine.Object.Destroy(GameObject.Find("InventoryInven").transform.GetChild(index + 1).gameObject);

        //pickup.transform.parent = character.transform;
        //pickup.transform.parent = GameObject.Find("InventoryInven").transform;

        pickup.GetComponent <SpriteRenderer>().enabled = false;
        Dialog dialog = pickup.GetComponent <Dialog>();

        if (dialog != null)
        {
            gameManager.GetPlayer().SetDialogMessage(dialog.message);
        }
        pickup.SetCharacter(this.character);
        if (pickup is ConsumeNow)
        {
            ((ConsumeNow)pickup).Consume();
        }
        else if (pickup is Consumable)
        {
            pickup.Select();
        }
        //pickup.transform.position = Vector2.zero;
        // might need to set transform.position to Vector2.zero <- I'm not sure
        this.startTime = Time.time;
        return(true);
    }