Esempio n. 1
0
    public void AddItems(ItemObj item)
    {
        bool IfRemove = false;

        foreach (QuestEventBase questEvent in currentQuests.GetEvents())
        {
            if (questEvent.eventType == EventType.FindObject)
            {
                FindObjectEvent findObjectEvent = (FindObjectEvent)questEvent;
                if (findObjectEvent.ItemName == item.ItemName)
                {
                    findObjectEvent.FinishedAmount++;
                    if (findObjectEvent.FinishedAmount >= findObjectEvent.Amount)
                    {
                        IfRemove         = true;
                        EventToBeRemoved = findObjectEvent;
                    }
                }
            }
        }
        if (IfRemove)
        {
            currentQuests.RemoveQuestEvent(EventToBeRemoved);
        }

        items.Add(item);
    }
    public void AddAmount(MonsterType monsterType)
    {
        int  value    = dictionary[monsterType];
        bool IfRemove = false;

        value++;
        dictionary[monsterType] = value;
        foreach (QuestEventBase questEvent in currentQuests.GetEvents())
        {
            if (questEvent.eventType == EventType.Combat)
            {
                BattleEvent battle = (BattleEvent)questEvent;
                if (battle.monsterType == monsterType)
                {
                    battle.FinishedNumber++;
                    if (battle.Number <= battle.FinishedNumber)
                    {
                        IfRemove = true;
                        events   = battle;
                    }
                }
            }
        }

        if (IfRemove)
        {
            currentQuests.RemoveQuestEvent(events);
        }
    }
    // Update is called once per frame
    void Update()
    {
        Movement = PlayerMove.OutputMovement();


        if (Movement.y > 0)
        {
            direction = transform.up;
        }
        else if (Movement.y < 0)
        {
            direction = -transform.up;
        }

        if (Movement.x > 0)
        {
            direction = transform.right;
        }
        else if (Movement.x < 0)
        {
            direction = -transform.right;
        }


        Hit2D = Physics2D.Raycast(transform.position, direction, 1f, rayMask);

        Debug.DrawRay(transform.position, direction, Color.black);


        if (Hit2D.collider != null && Hit2D.transform.tag == "Box")
        {
            InteractText.gameObject.SetActive(true);
            InteractText.text = "Open box";
        }
        else if (itemObjs.Count != 0)
        {
            InteractText.gameObject.SetActive(true);
            InteractText.text = "Pick Up" + " " + itemObjs[0].GetComponent <GetItemData>().GetItemObj().name;


            if (Input.GetKeyDown(KeyCode.E))
            {
                picking = true;
                inventory.PickUpObject(itemObjs[0].GetComponent <GetItemData>().GetItemObj());
                Destroy(itemObjs[0]);
                itemObjs.Remove(itemObjs[0]);
            }
        }

        else if (Hit2D.collider != null && Hit2D.transform.tag == "NPC")
        {
            InteractText.gameObject.SetActive(true);
            InteractText.text = "Talk";
            if (Input.GetKeyDown(KeyCode.E))
            {
                NpcTransform = Hit2D.transform;

                StartCalculating = true;
                DialoguePanel.SetActive(true);
                foreach (QuestEventBase questEvent in currentQuests.GetEvents())
                {
                    if (questEvent.eventType == EventType.Dialogue)
                    {
                        DialogueEvent dialogueEvent = (DialogueEvent)questEvent;
                        if (dialogueEvent.Name == NpcTransform.GetComponent <NpcDialogue>().dialogue.Name&& !dialogueEvent.AddDialogues)
                        {
                            foreach (Dialogue dialogue in dialogueEvent.dialogue)
                            {
                                NpcTransform.GetComponent <NpcDialogue>().dialogue.dialogues.Add(dialogue);
                            }
                            dialogueEvent.AddDialogues = true;
                        }
                    }
                }
                currentDialogue.Current = NpcTransform.GetComponent <NpcDialogue>().dialogue;
                currentDialogue.StartDialogue();
            }
        }


        else
        {
            InteractText.gameObject.SetActive(false);
        }


        if (StartCalculating)
        {
            if (CalculateDistance(transform, NpcTransform) > 2f)
            {
                QuitPanel();
            }
        }
    }