예제 #1
0
        public void SetQuestPrompt(Quest quest, QuestEventModel questEventModel)
        {
            var progress = quest.GetEventProgress(questEventModel.Id);
            var prefix   = questEventModel.Required > 0 && questEventModel.EventId != GameEventDispatcher.ITEM_TURNED_IN ? string.Format(NUMBER_TRACKER_FORMAT, progress, questEventModel.Required) : string.Empty;

            _questPromptLabel.Text    = prefix + questEventModel.PromptText;
            _questPromptLabel.Visible = !string.IsNullOrEmpty(_questPromptLabel.Text);
        }
예제 #2
0
        public void AddQuestPrompt(Quest quest, QuestEventModel questEventModel)
        {
            var qti  = GD.Load(Filename) as PackedScene;
            var qtis = qti.Instance() as QuestTrackItem;

            AddChild(qtis);
            qtis.SetQuestPrompt(quest, questEventModel);
            _eventTrackItemMap[questEventModel.Id] = qtis;
        }
예제 #3
0
        public override void _Ready()
        {
            base._Ready();

            _promptLineEdit = GetNode <LineEdit>("VBoxContainer/PromptContainer/LineEdit");
            _idLineEdit     = GetNode <LineEdit>("VBoxContainer/IdContainer/LineEdit");
            _promptLineEdit.Connect("text_changed", this, nameof(OnTextChanged));

            Model             = new QuestEventModel();
            Model.DisplayName = "event";
            CallDeferred(nameof(SetNodeTitle));
        }
예제 #4
0
        public void DisplayTurnIn(QuestEventModel questEventModel)
        {
            HideButtons();
            _dialogueLabel.Hide();
            _turnInContainer.Show();
            _notYetButton.Show();

            ShowTurnInRequirements(questEventModel);

            if (Quest.IsQuestEventReadyForCompletion(questEventModel))
            {
                _completeButton.Show();
            }
        }
예제 #5
0
        private void ShowTurnInRequirements(QuestEventModel questEventModel)
        {
            var quest   = QuestTracker.GetActiveQuestContainingModelId(questEventModel.Id);
            var rewards = quest.GetRewards(questEventModel.Id);

            foreach (var child in _rewardsContainer.GetChildren <Node>())
            {
                if (child is InventoryCell)
                {
                    child.GetParent().RemoveChild(child);
                    child.QueueFree();
                }
            }

            foreach (var child in _requirementsContainer.GetChildren <Node>())
            {
                if (child is InventoryCell)
                {
                    child.GetParent().RemoveChild(child);
                    child.QueueFree();
                }
            }

            var requirementCell = _resourcePreloader.InstanceScene <InventoryCell>();

            requirementCell.SizeFlagsHorizontal = (int)SizeFlags.ShrinkCenter;
            _requirementsContainer.AddChild(requirementCell);
            var requirementItem = InventoryItem.FromItemId(questEventModel.ItemId);

            requirementItem.Amount = questEventModel.Required;
            requirementCell.SetInventoryItem(requirementItem);

            foreach (var reward in rewards)
            {
                var rewardCell = _resourcePreloader.InstanceScene <InventoryCell>();
                rewardCell.SizeFlagsHorizontal = (int)SizeFlags.ShrinkCenter;
                _rewardsContainer.AddChild(rewardCell);

                var item = InventoryItem.FromItemId(reward.ItemId);
                item.Amount = reward.Amount;
                rewardCell.SetInventoryItem(item);
            }
        }
예제 #6
0
        private void InitializeEvent(QuestEventModel eventModel)
        {
            _eventProgress[eventModel.Id] = 0;
            switch (eventModel.EventId)
            {
            case GameEventDispatcher.PLAYER_INVENTORY_ITEM_UPDATED:
                GameEventDispatcher.Instance.Connect(nameof(GameEventDispatcher.EventPlayerInventoryItemUpdated), this, nameof(CheckInventoryItemUpdatedCompletion));
                CheckInventoryItemUpdatedCompletion(eventModel.EventId, eventModel.ItemId);
                break;

            case GameEventDispatcher.ENTITY_KILLED:
                GameEventDispatcher.Instance.Connect(nameof(GameEventDispatcher.EventEntityKilled), this, nameof(CheckEntityKilledCompletion));
                break;

            case GameEventDispatcher.ITEM_TURNED_IN:
                GameEventDispatcher.Instance.Connect(nameof(GameEventDispatcher.EventItemTurnedIn), this, nameof(CheckTurnInCompletion));
                break;

            case GameEventDispatcher.ENTITY_ENGAGED:
                GameEventDispatcher.Instance.Connect(nameof(GameEventDispatcher.EventEntityEngaged), this, nameof(CheckEntityEngagedCompletion));
                break;
            }
        }
예제 #7
0
 public override void LoadModel(QuestModel questModel)
 {
     base.LoadModel(questModel);
     Model = (QuestEventModel)questModel;
 }