示例#1
0
    public void EquipObject(InteractableObject objectToEquip)
    {
        Interaction equipInteraction = null;
        Equip       equip            = null;

        try {
            equip = objectToEquip as Equip;
        } catch {
            controller.LogStringWithReturn("Eso no es un equipo.");
        }


        for (int i = 0; i < objectToEquip.interactions.Length; i++)
        {
            if (objectToEquip.interactions[i].inputAction.GetType() == typeof(EquipInput))
            {
                equipInteraction = objectToEquip.interactions[i];
                //Revisar si debo hacerlo por cada tipo de una vez aquí.
                break;
            }
        }

        if (equipInteraction == null)
        {
            string objectToDisplay = objectToEquip.objectName;
            if (objectToEquip.nounGender == InteractableObject.WordGender.male)
            {
                objectToDisplay = "el " + objectToEquip.objectName;
            }
            else
            {
                objectToDisplay = "la " + objectToEquip.objectName;
            }
            controller.LogStringWithReturn("No puedes equiparte " + objectToDisplay + ".");
            return;
        }
        if (equipInteraction.isInverseInteraction)
        {
            controller.LogStringWithReturn(equipInteraction.textResponse);
            return;
        }

        controller.LogStringWithReturn(equipInteraction.textResponse);
        equipManager.put(equip);

        for (int i = 0; i < controller.playerRoomNavigation.currentRoom.visibleObjectsInRoom.Count; i++)
        {
            if (controller.playerRoomNavigation.currentRoom.visibleObjectsInRoom[i].interactableObject ==
                objectToEquip)
            {
                controller.playerRoomNavigation.currentRoom.visibleObjectsInRoom.RemoveAt(i);
                break;
            }
        }

        for (int i = 0; i < inventoryManager.nounsInInventory.Count; i++)
        {
            if (inventoryManager.nounsInInventory[i] == objectToEquip)
            {
                inventoryManager.nounsInInventory.RemoveAt(i);
                break;
            }
        }
        inventoryManager.DisplayInventory();
        equipInteraction.applyEffects();
        controller.questManager.updateQuests();

        if (equipInteraction.actionResponse == null)
        {
            return;
        }

        bool action = equipInteraction.actionResponse.DoActionResponse(controller);

        if (action)
        {
            controller.LogStringWithReturn(equipInteraction.actionResponse.responseDescription);
            foreach (InteractableObject i in inventoryManager.nounsInInventory)
            {
                if (i == equip)
                {
                }
            }
        }
        else
        {
            controller.LogStringWithReturn(equipInteraction.actionResponse.negationDescription);
        }
    }