Beispiel #1
0
        private void cbCompTarget_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbCompTarget.SelectedItem != null)
            {
                ListViewItem lvi = lvSteps.SelectedItems[0];
                QuestStep    qs  = (QuestStep)lvi.Tag;

                switch (qs.CompType)
                {
                case QuestStep.CompletionType.KillMonster:
                case QuestStep.CompletionType.GoToLocation:
                case QuestStep.CompletionType.CollectItem:
                case QuestStep.CompletionType.ReachLevel:
                    break;

                case QuestStep.CompletionType.TalkToNPC:
                    NPC npc = (NPC)cbCompTarget.SelectedItem;
                    qs.CompTargetID      = npc.ID;
                    lvi.SubItems[1].Text = StepContextString(qs);
                    SetDirty(true);
                    break;

                case QuestStep.CompletionType.WearItem:
                    NamedItemTemplate nit = (NamedItemTemplate)cbCompTarget.SelectedItem;
                    qs.CompTargetID      = nit.Template.ID;
                    lvi.SubItems[1].Text = StepContextString(qs);
                    SetDirty(true);
                    break;

                default:
                    throw new NotImplementedException();
                }
            }
        }
Beispiel #2
0
        string StepContextString(QuestStep qs)
        {
            string str = "";

            switch (qs.CompType)
            {
            case QuestStep.CompletionType.KillMonster:
            case QuestStep.CompletionType.GoToLocation:
            case QuestStep.CompletionType.CollectItem:
                str = qs.CompTargetID.ToString();
                break;

            case QuestStep.CompletionType.ReachLevel:
                break;      // Empty

            case QuestStep.CompletionType.TalkToNPC:
                str = _npcs.ContainsKey(qs.CompTargetID) ? _npcs[qs.CompTargetID].ToString() : "Unknown";
                break;

            case QuestStep.CompletionType.WearItem:
                if (_items.ContainsKey(qs.CompTargetID))
                {
                    NamedItemTemplate nit = _items[qs.CompTargetID];
                    str = nit.ToString();
                }
                else
                {
                    str = qs.CompTargetID.ToString();
                }
                break;
            }
            return(str);
        }
Beispiel #3
0
        private void cbRewardContext_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbRewardContext.SelectedItem != null && lvRewards.SelectedItems.Count > 0)
            {
                ListViewItem lvi = lvRewards.SelectedItems[0];
                QuestReward  qr  = (QuestReward)lvi.Tag;

                switch (qr.Type)
                {
                case QuestReward.RewardType.Teleport:
                    Location loc = (Location)cbRewardContext.SelectedItem;
                    qr.Context           = loc.ID;
                    lvi.SubItems[1].Text = loc.ToString();
                    SetDirty(true);
                    break;

                case QuestReward.RewardType.Skill:
                    // TODO: Implement
                    break;

                case QuestReward.RewardType.Item:
                    NamedItemTemplate nit = (NamedItemTemplate)cbRewardContext.SelectedItem;
                    qr.Context           = nit.Template.ID;
                    lvi.SubItems[1].Text = RewardContextString(qr);
                    SetDirty(true);
                    break;
                }
            }
        }
Beispiel #4
0
        void SelectCompTarget(QuestStep qs)
        {
            tbCompletionTarget.Enabled = false;
            cbCompTarget.Visible       = false;
            tbCompletionCount.Enabled  = false;

            tbCompletionCount.Text = qs.CompCount.ToString();
            switch (qs.CompType)
            {
            case QuestStep.CompletionType.KillMonster:
                // TODO: Monsters
                tbCompletionCount.Enabled  = true;
                tbCompletionTarget.Enabled = true;
                tbCompletionTarget.Text    = qs.CompTargetID.ToString();
                break;

            case QuestStep.CompletionType.GoToLocation:
                // TODO: Locations
                tbCompletionTarget.Enabled = true;
                tbCompletionTarget.Text    = qs.CompTargetID.ToString();
                break;

            case QuestStep.CompletionType.CollectItem:
                // TODO: Items
                tbCompletionCount.Enabled  = true;
                tbCompletionTarget.Enabled = true;
                tbCompletionTarget.Text    = qs.CompTargetID.ToString();
                break;

            case QuestStep.CompletionType.ReachLevel:
                tbCompletionCount.Enabled = true;
                break;

            case QuestStep.CompletionType.TalkToNPC:
                cbCompTarget.Visible = true;
                cbCompTarget.Items.Clear();
                foreach (NPC npc in _npcs.Values)
                {
                    cbCompTarget.Items.Add(npc);
                }
                cbCompTarget.SelectedItem = _npcs.ContainsKey(qs.CompTargetID) ? _npcs[qs.CompTargetID] : null;
                break;

            case QuestStep.CompletionType.WearItem:
                cbCompTarget.Visible = true;
                cbCompTarget.Items.Clear();
                foreach (NamedItemTemplate nit in _items.Values)
                {
                    cbCompTarget.Items.Add(nit);
                }
                cbCompTarget.SelectedItem = null;
                if (_items.ContainsKey(qs.CompTargetID))
                {
                    NamedItemTemplate nit = _items[qs.CompTargetID];
                    cbCompTarget.SelectedItem = nit;
                }
                break;
            }
        }
Beispiel #5
0
        private void QuestDialog_Load(object sender, EventArgs e)
        {
            cbCompletionType.DataSource  = Enum.GetValues(typeof(QuestStep.CompletionType));
            cbRequirementType.DataSource = Enum.GetValues(typeof(QuestRequirement.Type));
            cbRewardType.DataSource      = Enum.GetValues(typeof(QuestReward.RewardType));

            foreach (IntStrID icon in Program.s_npcIcons.Values)
            {
                cbIcon.Items.Add(icon);
            }
            foreach (IntStrID staticText in Program.s_staticText.Values)
            {
                cbStaticText.Items.Add(staticText);
            }

            _items = new Dictionary <uint, NamedItemTemplate>();
            ItemTemplate[] items = Database.FetchItems();
            foreach (ItemTemplate it in items)
            {
                NamedItemTemplate named = new NamedItemTemplate();
                named.Name     = Program.s_items.ContainsKey(it.Model) ? Program.s_items[it.Model] : new IntStrID("Unknown", it.Model);
                named.Template = it;
                _items[it.ID]  = named;
            }

            // Pull all the NPCs
            NPC[] npcs = Database.FetchNPCs(0);
            _npcs = new Dictionary <uint, NPC>();
            foreach (NPC npc in npcs)
            {
                _npcs[npc.ID] = npc;
                cbQuestGiver.Items.Add(npc);
                cbStepOwner.Items.Add(npc);
            }

            // Pull quests from DB
            Quest[] quests = Database.FetchQuests();
            foreach (Quest q in quests)
            {
                AddQuest(q);
            }

            Location[] locations = Database.FetchLocations(0);
            _locations = new Dictionary <uint, Location>();
            foreach (Location loc in locations)
            {
                _locations[loc.ID] = loc;
            }

            SelectQuest(null);
            btnSave.Enabled = false;
        }
Beispiel #6
0
        string RewardContextString(QuestReward qr)
        {
            string str = "";

            switch (qr.Type)
            {
            case QuestReward.RewardType.Gold:
            case QuestReward.RewardType.Exp:
            case QuestReward.RewardType.Fame:
                str = qr.Context.ToString();
                break;

            case QuestReward.RewardType.Item:
                if (_items.ContainsKey(qr.Context))
                {
                    NamedItemTemplate nit = _items[qr.Context];
                    str = nit.ToString();
                }
                else
                {
                    str = qr.Context.ToString();
                }
                break;

            case QuestReward.RewardType.Teleport:
                if (_locations.ContainsKey(qr.Context))
                {
                    Location loc = _locations[qr.Context];
                    str = loc.ToString();
                }
                else
                {
                    str = qr.Context.ToString();
                }
                break;

            case QuestReward.RewardType.Skill:
                // TODO: Need to implement skills
                str = qr.Context.ToString();
                break;
            }

            return(str);
        }
Beispiel #7
0
        private void QuestDialog_Load(object sender, EventArgs e)
        {
            cbCompletionType.DataSource = Enum.GetValues(typeof(QuestStep.CompletionType));
            cbRequirementType.DataSource = Enum.GetValues(typeof(QuestRequirement.Type));
            cbRewardType.DataSource = Enum.GetValues(typeof(QuestReward.RewardType));

            foreach (IntStrID icon in Program.s_npcIcons.Values)
                cbIcon.Items.Add(icon);
            foreach( IntStrID staticText in Program.s_staticText.Values )
                cbStaticText.Items.Add(staticText);

            _items = new Dictionary<uint, NamedItemTemplate>();
            ItemTemplate[] items = Database.FetchItems();
            foreach (ItemTemplate it in items)
            {
                NamedItemTemplate named = new NamedItemTemplate();
                named.Name = Program.s_items.ContainsKey(it.Model) ? Program.s_items[it.Model] : new IntStrID("Unknown", it.Model);
                named.Template = it;
                _items[it.ID] = named;
            }

            // Pull all the NPCs
            NPC[] npcs = Database.FetchNPCs(0);
            _npcs = new Dictionary<uint, NPC>();
            foreach (NPC npc in npcs)
            {
                _npcs[npc.ID] = npc;
                cbQuestGiver.Items.Add(npc);
                cbStepOwner.Items.Add(npc);
            }

            // Pull quests from DB
            Quest[] quests = Database.FetchQuests();
            foreach (Quest q in quests)
            {
                AddQuest(q);
            }

            Location[] locations = Database.FetchLocations(0);
            _locations = new Dictionary<uint, Location>();
            foreach (Location loc in locations)
            {
                _locations[loc.ID] = loc;
            }

            SelectQuest(null);
            btnSave.Enabled = false;
        }