public static CharacterQuest Create(Quest quest)
    {
        CharacterQuest newQuest = new CharacterQuest();

        newQuest.dataId     = quest.DataId;
        newQuest.isComplete = false;
        return(newQuest);
    }
    public void GetObjectData(System.Object obj,
                              SerializationInfo info, StreamingContext context)
    {
        CharacterQuest data = (CharacterQuest)obj;

        info.AddValue("dataId", data.dataId);
        info.AddValue("isComplete", data.isComplete);
        info.AddValue("killedMonsters", data.killedMonsters);
    }
 public void CreateCharacterQuest(int idx, string characterId, CharacterQuest characterQuest)
 {
     ExecuteNonQuery("INSERT INTO characterquest (id, idx, characterId, dataId, isComplete, killedMonsters) VALUES (@id, @idx, @characterId, @dataId, @isComplete, @killedMonsters)",
                     new SqliteParameter("@id", characterId + "_" + idx),
                     new SqliteParameter("@idx", idx),
                     new SqliteParameter("@characterId", characterId),
                     new SqliteParameter("@dataId", characterQuest.dataId),
                     new SqliteParameter("@isComplete", characterQuest.isComplete),
                     new SqliteParameter("@killedMonsters", WriteKillMonsters(characterQuest.killedMonsters)));
 }
Esempio n. 4
0
        protected virtual void NetFuncCompleteQuest(int questDataId)
        {
            int   indexOfQuest = this.IndexOfQuest(questDataId);
            Quest quest;

            if (indexOfQuest < 0 || !GameInstance.Quests.TryGetValue(questDataId, out quest))
            {
                return;
            }
            CharacterQuest characterQuest = quests[indexOfQuest];

            if (!characterQuest.IsAllTasksDone(this))
            {
                return;
            }
            if (characterQuest.isComplete)
            {
                return;
            }
            QuestTask[] tasks = quest.tasks;
            foreach (QuestTask task in tasks)
            {
                switch (task.taskType)
                {
                case QuestTaskType.CollectItem:
                    this.DecreaseItems(task.itemAmount.item.DataId, task.itemAmount.amount);
                    break;
                }
            }
            Reward reward = gameplayRule.MakeQuestReward(quest);

            RewardExp(reward, 1f, RewardGivenType.Quest);
            RewardCurrencies(reward, 1f, RewardGivenType.Quest);
            ItemAmount[] rewardItems = quest.rewardItems;
            if (rewardItems != null && rewardItems.Length > 0)
            {
                foreach (ItemAmount rewardItem in rewardItems)
                {
                    if (rewardItem.item != null && rewardItem.amount > 0)
                    {
                        this.IncreaseItems(CharacterItem.Create(rewardItem.item, 1, rewardItem.amount));
                    }
                }
            }
            characterQuest.isComplete = true;
            if (!quest.canRepeat)
            {
                quests[indexOfQuest] = characterQuest;
            }
            else
            {
                quests.RemoveAt(indexOfQuest);
            }
        }
    public System.Object SetObjectData(System.Object obj,
                                       SerializationInfo info, StreamingContext context,
                                       ISurrogateSelector selector)
    {
        CharacterQuest data = (CharacterQuest)obj;

        data.dataId         = info.GetInt32("dataId");
        data.isComplete     = info.GetBoolean("isComplete");
        data.killedMonsters = (Dictionary <int, int>)info.GetValue("killedMonsters", typeof(Dictionary <int, int>));
        obj = data;
        return(obj);
    }
 private bool ReadCharacterQuest(SqliteDataReader reader, out CharacterQuest result)
 {
     if (reader.Read())
     {
         result                = new CharacterQuest();
         result.dataId         = reader.GetInt32(0);
         result.isComplete     = reader.GetBoolean(1);
         result.killedMonsters = ReadKillMonsters(reader.GetString(2));
         return(true);
     }
     result = CharacterQuest.Empty;
     return(false);
 }
Esempio n. 7
0
        protected virtual void NetFuncAcceptQuest(int questDataId)
        {
            int   indexOfQuest = this.IndexOfQuest(questDataId);
            Quest quest;

            if (indexOfQuest >= 0 || !GameInstance.Quests.TryGetValue(questDataId, out quest))
            {
                return;
            }
            CharacterQuest characterQuest = CharacterQuest.Create(quest);

            quests.Add(characterQuest);
        }
Esempio n. 8
0
        private static CharacterQuestDTO Insert(CharacterQuestDTO charQuest, OpenNosContext context)
        {
            CharacterQuest entity = new CharacterQuest();

            Mapper.Mappers.CharacterQuestMapper.ToCharacterQuest(charQuest, entity);
            context.CharacterQuest.Add(entity);
            context.SaveChanges();
            if (Mapper.Mappers.CharacterQuestMapper.ToCharacterQuestDTO(entity, charQuest))
            {
                return(charQuest);
            }

            return(null);
        }
Esempio n. 9
0
        protected static CharacterQuestDTO InsertOrUpdate(OpenNosContext context, CharacterQuestDTO dto)
        {
            Guid           primaryKey = dto.Id;
            CharacterQuest entity     = context.Set <CharacterQuest>().FirstOrDefault(c => c.Id == primaryKey);

            if (entity == null)
            {
                return(Insert(dto, context));
            }
            else
            {
                return(Update(entity, dto, context));
            }
        }
Esempio n. 10
0
 private bool ReadCharacterQuest(MySqlDataReader reader, out CharacterQuest result)
 {
     if (reader.Read())
     {
         result            = new CharacterQuest();
         result.dataId     = reader.GetInt32(0);
         result.isComplete = reader.GetBoolean(1);
         result.isTracking = reader.GetBoolean(2);
         result.ReadKilledMonsters(reader.GetString(3));
         result.ReadCompletedTasks(reader.GetString(4));
         return(true);
     }
     result = CharacterQuest.Empty;
     return(false);
 }
Esempio n. 11
0
        private static CharacterQuestDTO Update(CharacterQuest entity, CharacterQuestDTO charQuest, OpenNosContext context)
        {
            if (entity != null)
            {
                Mapper.Mappers.CharacterQuestMapper.ToCharacterQuest(charQuest, entity);
                context.SaveChanges();
            }

            if (Mapper.Mappers.CharacterQuestMapper.ToCharacterQuestDTO(entity, charQuest))
            {
                return(charQuest);
            }

            return(null);
        }
Esempio n. 12
0
        public virtual void OnKillMonster(BaseMonsterCharacterEntity monsterCharacterEntity)
        {
            if (!IsServer || monsterCharacterEntity == null)
            {
                return;
            }

            for (int i = 0; i < Quests.Count; ++i)
            {
                CharacterQuest quest = Quests[i];
                if (quest.AddKillMonster(monsterCharacterEntity, 1))
                {
                    quests[i] = quest;
                }
            }
        }
Esempio n. 13
0
        protected virtual void NetFuncAbandonQuest(int questDataId)
        {
            int   indexOfQuest = this.IndexOfQuest(questDataId);
            Quest quest;

            if (indexOfQuest < 0 || !GameInstance.Quests.TryGetValue(questDataId, out quest))
            {
                return;
            }
            CharacterQuest characterQuest = quests[indexOfQuest];

            if (characterQuest.isComplete)
            {
                return;
            }
            quests.RemoveAt(indexOfQuest);
        }
        private bool ReadCharacterQuest(SQLiteRowsReader reader, out CharacterQuest result, bool resetReader = true)
        {
            if (resetReader)
            {
                reader.ResetReader();
            }

            if (reader.Read())
            {
                result                = new CharacterQuest();
                result.dataId         = reader.GetInt32("dataId");
                result.isComplete     = reader.GetBoolean("isComplete");
                result.killedMonsters = ReadKillMonsters(reader.GetString("killedMonsters"));
                return(true);
            }
            result = CharacterQuest.Empty;
            return(false);
        }
Esempio n. 15
0
        public static bool ToCharacterQuest(CharacterQuestDTO input, CharacterQuest output)
        {
            if (input == null)
            {
                return(false);
            }

            output.Id              = input.Id;
            output.CharacterId     = input.CharacterId;
            output.QuestId         = input.QuestId;
            output.FirstObjective  = input.FirstObjective;
            output.SecondObjective = input.SecondObjective;
            output.ThirdObjective  = input.ThirdObjective;
            output.FourthObjective = input.FourthObjective;
            output.FifthObjective  = input.FifthObjective;
            output.IsMainQuest     = input.IsMainQuest;

            return(true);
        }
Esempio n. 16
0
 public DeleteResult Delete(long characterId, long questId)
 {
     try
     {
         using (OpenNosContext context = DataAccessHelper.CreateContext())
         {
             CharacterQuest charQuest = context.CharacterQuest.FirstOrDefault(i => i.CharacterId == characterId && i.QuestId == questId);
             if (charQuest != null)
             {
                 context.CharacterQuest.Remove(charQuest);
                 context.SaveChanges();
             }
             return(DeleteResult.Deleted);
         }
     }
     catch (Exception e)
     {
         Logger.Error(e);
         return(DeleteResult.Error);
     }
 }
Esempio n. 17
0
        public bool IsPass(IPlayerCharacterData character)
        {
            int  indexOfQuest        = -1;
            bool questTasksCompleted = false;
            bool questCompleted      = false;

            if (quest != null)
            {
                indexOfQuest = character.IndexOfQuest(quest.DataId);
                if (indexOfQuest >= 0)
                {
                    CharacterQuest characterQuest = character.Quests[indexOfQuest];
                    questTasksCompleted = characterQuest.IsAllTasksDone(character);
                    questCompleted      = characterQuest.isComplete;
                }
            }
            switch (conditionType)
            {
            case NpcDialogConditionType.LevelMoreThanOrEqual:
                return(character.Level >= conditionalLevel);

            case NpcDialogConditionType.LevelLessThanOrEqual:
                return(character.Level <= conditionalLevel);

            case NpcDialogConditionType.QuestNotStarted:
                return(indexOfQuest < 0);

            case NpcDialogConditionType.QuestOngoing:
                return(!questTasksCompleted);

            case NpcDialogConditionType.QuestTasksCompleted:
                return(questTasksCompleted);

            case NpcDialogConditionType.QuestCompleted:
                return(questCompleted);
            }
            return(true);
        }
Esempio n. 18
0
    public static T DeserializeCharacterData <T>(this T characterData, NetDataReader reader) where T : IPlayerCharacterData
    {
        var tempCharacterData = new PlayerCharacterData();

        tempCharacterData.Id              = reader.GetString();
        tempCharacterData.DataId          = reader.GetInt();
        tempCharacterData.EntityId        = reader.GetInt();
        tempCharacterData.CharacterName   = reader.GetString();
        tempCharacterData.Level           = reader.GetShort();
        tempCharacterData.Exp             = reader.GetInt();
        tempCharacterData.CurrentHp       = reader.GetInt();
        tempCharacterData.CurrentMp       = reader.GetInt();
        tempCharacterData.CurrentStamina  = reader.GetInt();
        tempCharacterData.CurrentFood     = reader.GetInt();
        tempCharacterData.CurrentWater    = reader.GetInt();
        tempCharacterData.StatPoint       = reader.GetShort();
        tempCharacterData.SkillPoint      = reader.GetShort();
        tempCharacterData.Gold            = reader.GetInt();
        tempCharacterData.PartyId         = reader.GetInt();
        tempCharacterData.GuildId         = reader.GetInt();
        tempCharacterData.GuildRole       = reader.GetByte();
        tempCharacterData.SharedGuildExp  = reader.GetInt();
        tempCharacterData.CurrentMapName  = reader.GetString();
        tempCharacterData.CurrentPosition = new Vector3(reader.GetFloat(), reader.GetFloat(), reader.GetFloat());
        tempCharacterData.RespawnMapName  = reader.GetString();
        tempCharacterData.RespawnPosition = new Vector3(reader.GetFloat(), reader.GetFloat(), reader.GetFloat());
        tempCharacterData.LastUpdate      = reader.GetInt();
        int count = 0;

        count = reader.GetByte();
        for (var i = 0; i < count; ++i)
        {
            var entry = new CharacterAttribute();
            entry.Deserialize(reader);
            tempCharacterData.Attributes.Add(entry);
        }
        count = reader.GetByte();
        for (var i = 0; i < count; ++i)
        {
            var entry = new CharacterBuff();
            entry.Deserialize(reader);
            tempCharacterData.Buffs.Add(entry);
        }
        count = reader.GetByte();
        for (var i = 0; i < count; ++i)
        {
            var entry = new CharacterSkill();
            entry.Deserialize(reader);
            tempCharacterData.Skills.Add(entry);
        }
        count = reader.GetByte();
        for (var i = 0; i < count; ++i)
        {
            var entry = new CharacterSkillUsage();
            entry.Deserialize(reader);
            tempCharacterData.SkillUsages.Add(entry);
        }
        count = reader.GetByte();
        for (var i = 0; i < count; ++i)
        {
            var entry = new CharacterSummon();
            entry.Deserialize(reader);
            tempCharacterData.Summons.Add(entry);
        }
        count = reader.GetByte();
        for (var i = 0; i < count; ++i)
        {
            var entry = new CharacterItem();
            entry.Deserialize(reader);
            tempCharacterData.EquipItems.Add(entry);
        }
        count = reader.GetShort();
        for (var i = 0; i < count; ++i)
        {
            var entry = new CharacterItem();
            entry.Deserialize(reader);
            tempCharacterData.NonEquipItems.Add(entry);
        }
        count = reader.GetByte();
        for (var i = 0; i < count; ++i)
        {
            var entry = new CharacterHotkey();
            entry.Deserialize(reader);
            tempCharacterData.Hotkeys.Add(entry);
        }
        count = reader.GetByte();
        for (var i = 0; i < count; ++i)
        {
            var entry = new CharacterQuest();
            entry.Deserialize(reader);
            tempCharacterData.Quests.Add(entry);
        }
        var equipWeapons = new EquipWeapons();

        equipWeapons.Deserialize(reader);
        tempCharacterData.EquipWeapons = equipWeapons;
        DevExtUtils.InvokeStaticDevExtMethods(ClassType, "DeserializeCharacterData", characterData, reader);

        tempCharacterData.ValidateCharacterData();
        tempCharacterData.CloneTo(characterData);
        return(characterData);
    }
Esempio n. 19
0
        protected override void UpdateData()
        {
            var owningCharacter = BasePlayerCharacterController.OwningCharacter;

            if (uiTextTitle != null)
            {
                uiTextTitle.text = string.Format(titleFormat, Data == null ? "Unknow" : Data.title);
            }

            if (uiTextDescription != null)
            {
                uiTextDescription.text = string.Format(descriptionFormat, Data == null ? "N/A" : Data.description);
            }

            Quest                        quest       = null;
            ItemCraft                    itemCraft   = null;
            List <NpcSellItem>           sellItems   = new List <NpcSellItem>();
            List <UINpcDialogMenuAction> menuActions = new List <UINpcDialogMenuAction>();

            switch (Data.type)
            {
            case NpcDialogType.Normal:
            case NpcDialogType.SaveRespawnPoint:
                if (onSwitchToNormalDialog == null)
                {
                    onSwitchToNormalDialog.Invoke();
                }
                var menus = Data.menus;
                for (var i = 0; i < menus.Length; ++i)
                {
                    var menu = menus[i];
                    if (menu.IsPassConditions(owningCharacter))
                    {
                        var menuAction = new UINpcDialogMenuAction();
                        menuAction.title     = menu.title;
                        menuAction.menuIndex = i;
                        menuActions.Add(menuAction);
                    }
                }
                break;

            case NpcDialogType.Quest:
                if (onSwitchToQuestDialog == null)
                {
                    onSwitchToQuestDialog.Invoke();
                }
                if (uiCharacterQuest != null)
                {
                    quest = Data.quest;
                    if (quest != null)
                    {
                        var acceptMenuAction   = new UINpcDialogMenuAction();
                        var declineMenuAction  = new UINpcDialogMenuAction();
                        var abandonMenuAction  = new UINpcDialogMenuAction();
                        var completeMenuAction = new UINpcDialogMenuAction();
                        acceptMenuAction.title       = messageQuestAccept;
                        acceptMenuAction.menuIndex   = NpcDialog.QUEST_ACCEPT_MENU_INDEX;
                        declineMenuAction.title      = messageQuestDecline;
                        declineMenuAction.menuIndex  = NpcDialog.QUEST_DECLINE_MENU_INDEX;
                        abandonMenuAction.title      = messageQuestAbandon;
                        abandonMenuAction.menuIndex  = NpcDialog.QUEST_ABANDON_MENU_INDEX;
                        completeMenuAction.title     = messageQuestComplete;
                        completeMenuAction.menuIndex = NpcDialog.QUEST_COMPLETE_MENU_INDEX;

                        CharacterQuest characterQuest;
                        var            index = owningCharacter.IndexOfQuest(quest.DataId);
                        if (index >= 0)
                        {
                            characterQuest = owningCharacter.Quests[index];
                            if (!characterQuest.IsAllTasksDone(owningCharacter))
                            {
                                menuActions.Add(abandonMenuAction);
                            }
                            else
                            {
                                menuActions.Add(completeMenuAction);
                            }
                        }
                        else
                        {
                            characterQuest = CharacterQuest.Create(quest);
                            menuActions.Add(acceptMenuAction);
                            menuActions.Add(declineMenuAction);
                        }
                        uiCharacterQuest.Setup(characterQuest, owningCharacter, index);
                    }
                }
                break;

            case NpcDialogType.Shop:
                if (onSwitchToSellItemDialog == null)
                {
                    onSwitchToSellItemDialog.Invoke();
                }
                sellItems.AddRange(Data.sellItems);
                break;

            case NpcDialogType.CraftItem:
                if (onSwitchToCraftItemDialog == null)
                {
                    onSwitchToCraftItemDialog.Invoke();
                }
                if (uiCraftItem != null)
                {
                    itemCraft = Data.itemCraft;
                    if (itemCraft != null)
                    {
                        var startMenuAction  = new UINpcDialogMenuAction();
                        var cancelMenuAction = new UINpcDialogMenuAction();
                        startMenuAction.title      = messageCraftItemStart;
                        startMenuAction.menuIndex  = NpcDialog.CRAFT_ITEM_START_MENU_INDEX;
                        cancelMenuAction.title     = messageCraftItemCancel;
                        cancelMenuAction.menuIndex = NpcDialog.CRAFT_ITEM_CANCEL_MENU_INDEX;
                        uiCraftItem.Data           = Data.itemCraft;
                        menuActions.Add(startMenuAction);
                        menuActions.Add(cancelMenuAction);
                    }
                }
                break;
            }
            // Menu
            if (uiMenuRoot != null)
            {
                uiMenuRoot.SetActive(menuActions.Count > 0);
            }
            CacheMenuList.Generate(menuActions, (index, menuAction, ui) =>
            {
                var uiNpcDialogMenu         = ui.GetComponent <UINpcDialogMenu>();
                uiNpcDialogMenu.Data        = menuAction;
                uiNpcDialogMenu.uiNpcDialog = this;
                uiNpcDialogMenu.Show();
            });
            // Quest
            if (uiCharacterQuest != null)
            {
                if (quest == null)
                {
                    uiCharacterQuest.Hide();
                }
                else
                {
                    uiCharacterQuest.Show();
                }
            }
            // Shop
            if (uiSellItemRoot != null)
            {
                uiSellItemRoot.SetActive(sellItems.Count > 0);
            }
            CacheSellItemList.Generate(sellItems, (index, sellItem, ui) =>
            {
                var uiNpcSellItem = ui.GetComponent <UINpcSellItem>();
                uiNpcSellItem.Setup(sellItem, index);
            });
            // Craft Item
            if (uiCraftItem != null)
            {
                if (itemCraft == null)
                {
                    uiCraftItem.Hide();
                }
                else
                {
                    uiCraftItem.Show();
                }
            }
        }
Esempio n. 20
0
 public static bool IsEmpty(this CharacterQuest data)
 {
     return(data == null || data.Equals(CharacterQuest.Empty));
 }
Esempio n. 21
0
    protected override void UpdateData()
    {
        var dialog          = Data;
        var quest           = dialog.quest;
        var owningCharacter = BasePlayerCharacterController.OwningCharacter;

        if (textTitle != null)
        {
            textTitle.text = string.Format(titleFormat, dialog == null ? "Unknow" : dialog.title);
        }

        if (textDescription != null)
        {
            textDescription.text = string.Format(descriptionFormat, dialog == null ? "N/A" : dialog.description);
        }

        List <UINpcDialogMenuAction> menuActions = new List <UINpcDialogMenuAction>();

        switch (dialog.type)
        {
        case NpcDialogType.Quest:
            if (uiCharacterQuest != null)
            {
                if (quest == null)
                {
                    uiCharacterQuest.Hide();
                }
                else
                {
                    var acceptMenuAction   = new UINpcDialogMenuAction();
                    var declineMenuAction  = new UINpcDialogMenuAction();
                    var abandonMenuAction  = new UINpcDialogMenuAction();
                    var completeMenuAction = new UINpcDialogMenuAction();
                    acceptMenuAction.title       = messageQuestAccept;
                    acceptMenuAction.menuIndex   = NpcDialog.QUEST_ACCEPT_MENU_INDEX;
                    declineMenuAction.title      = messageQuestDecline;
                    declineMenuAction.menuIndex  = NpcDialog.QUEST_DECLINE_MENU_INDEX;
                    abandonMenuAction.title      = messageQuestAbandon;
                    abandonMenuAction.menuIndex  = NpcDialog.QUEST_ABANDON_MENU_INDEX;
                    completeMenuAction.title     = messageQuestComplete;
                    completeMenuAction.menuIndex = NpcDialog.QUEST_COMPLETE_MENU_INDEX;

                    CharacterQuest characterQuest;
                    var            index = owningCharacter.IndexOfQuest(quest.HashId);
                    if (index >= 0)
                    {
                        characterQuest = owningCharacter.quests[index];
                        if (!characterQuest.IsAllTasksDone(owningCharacter))
                        {
                            menuActions.Add(abandonMenuAction);
                        }
                        else
                        {
                            menuActions.Add(completeMenuAction);
                        }
                    }
                    else
                    {
                        characterQuest = CharacterQuest.Create(quest);
                        menuActions.Add(acceptMenuAction);
                        menuActions.Add(declineMenuAction);
                    }
                    uiCharacterQuest.Setup(characterQuest, owningCharacter, index);
                    uiCharacterQuest.Show();
                }
            }
            break;

        case NpcDialogType.Normal:
            if (uiCharacterQuest != null)
            {
                uiCharacterQuest.Hide();
            }
            var menus = dialog.menus;
            for (var i = 0; i < menus.Length; ++i)
            {
                var menu = menus[i];
                if (menu.IsPassConditions(owningCharacter))
                {
                    var menuAction = new UINpcDialogMenuAction();
                    menuAction.title     = menu.title;
                    menuAction.menuIndex = i;
                    menuActions.Add(menuAction);
                }
            }
            break;
        }

        CacheList.Generate(menuActions, (index, menuAction, ui) =>
        {
            var uiNpcDialogMenu         = ui.GetComponent <UINpcDialogMenu>();
            uiNpcDialogMenu.Data        = menuAction;
            uiNpcDialogMenu.uiNpcDialog = this;
            uiNpcDialogMenu.Show();
        });
    }
Esempio n. 22
0
        protected override void UpdateData()
        {
            BasePlayerCharacterEntity owningCharacter = BasePlayerCharacterController.OwningCharacter;

            if (uiTextTitle != null)
            {
                uiTextTitle.text = string.Format(
                    LanguageManager.GetText(formatKeyTitle),
                    Data == null ? LanguageManager.GetUnknowTitle() : Data.Title);
            }

            if (uiTextDescription != null)
            {
                uiTextDescription.text = string.Format(
                    LanguageManager.GetText(formatKeyDescription),
                    Data == null ? LanguageManager.GetUnknowDescription() : Data.Description);
            }

            Quest quest        = null;
            Item  craftingItem = null;
            List <NpcSellItem>           sellItems   = new List <NpcSellItem>();
            List <UINpcDialogMenuAction> menuActions = new List <UINpcDialogMenuAction>();

            switch (Data.type)
            {
            case NpcDialogType.Normal:
                if (onSwitchToNormalDialog == null)
                {
                    onSwitchToNormalDialog.Invoke();
                }
                NpcDialogMenu[] menus = Data.menus;
                for (int i = 0; i < menus.Length; ++i)
                {
                    NpcDialogMenu menu = menus[i];
                    if (menu.IsPassConditions(owningCharacter))
                    {
                        UINpcDialogMenuAction menuAction = new UINpcDialogMenuAction();
                        menuAction.title     = menu.title;
                        menuAction.menuIndex = i;
                        menuActions.Add(menuAction);
                    }
                }
                break;

            case NpcDialogType.Quest:
                if (onSwitchToQuestDialog == null)
                {
                    onSwitchToQuestDialog.Invoke();
                }
                if (uiCharacterQuest != null)
                {
                    quest = Data.quest;
                    if (quest != null)
                    {
                        UINpcDialogMenuAction acceptMenuAction   = new UINpcDialogMenuAction();
                        UINpcDialogMenuAction declineMenuAction  = new UINpcDialogMenuAction();
                        UINpcDialogMenuAction abandonMenuAction  = new UINpcDialogMenuAction();
                        UINpcDialogMenuAction completeMenuAction = new UINpcDialogMenuAction();
                        acceptMenuAction.title       = messageQuestAccept;
                        acceptMenuAction.menuIndex   = NpcDialog.QUEST_ACCEPT_MENU_INDEX;
                        declineMenuAction.title      = messageQuestDecline;
                        declineMenuAction.menuIndex  = NpcDialog.QUEST_DECLINE_MENU_INDEX;
                        abandonMenuAction.title      = messageQuestAbandon;
                        abandonMenuAction.menuIndex  = NpcDialog.QUEST_ABANDON_MENU_INDEX;
                        completeMenuAction.title     = messageQuestComplete;
                        completeMenuAction.menuIndex = NpcDialog.QUEST_COMPLETE_MENU_INDEX;

                        CharacterQuest characterQuest;
                        int            index = owningCharacter.IndexOfQuest(quest.DataId);
                        if (index >= 0)
                        {
                            characterQuest = owningCharacter.Quests[index];
                            if (!characterQuest.IsAllTasksDone(owningCharacter))
                            {
                                menuActions.Add(abandonMenuAction);
                            }
                            else
                            {
                                menuActions.Add(completeMenuAction);
                            }
                        }
                        else
                        {
                            characterQuest = CharacterQuest.Create(quest);
                            menuActions.Add(acceptMenuAction);
                            menuActions.Add(declineMenuAction);
                        }
                        uiCharacterQuest.Setup(characterQuest, owningCharacter, index);
                    }
                }
                break;

            case NpcDialogType.Shop:
                if (onSwitchToSellItemDialog == null)
                {
                    onSwitchToSellItemDialog.Invoke();
                }
                sellItems.AddRange(Data.sellItems);
                break;

            case NpcDialogType.CraftItem:
                if (onSwitchToCraftItemDialog == null)
                {
                    onSwitchToCraftItemDialog.Invoke();
                }
                if (uiCraftItem != null)
                {
                    craftingItem = Data.itemCraft.CraftingItem;
                    if (craftingItem != null)
                    {
                        UINpcDialogMenuAction startMenuAction  = new UINpcDialogMenuAction();
                        UINpcDialogMenuAction cancelMenuAction = new UINpcDialogMenuAction();
                        startMenuAction.title      = messageCraftItemStart;
                        startMenuAction.menuIndex  = NpcDialog.CRAFT_ITEM_START_MENU_INDEX;
                        cancelMenuAction.title     = messageCraftItemCancel;
                        cancelMenuAction.menuIndex = NpcDialog.CRAFT_ITEM_CANCEL_MENU_INDEX;
                        uiCraftItem.SetupForNpc(Data.itemCraft);
                        menuActions.Add(startMenuAction);
                        menuActions.Add(cancelMenuAction);
                    }
                }
                break;

            case NpcDialogType.SaveRespawnPoint:
                if (onSwitchToSaveRespawnPointDialog != null)
                {
                    onSwitchToSaveRespawnPointDialog.Invoke();
                }
                UINpcDialogMenuAction saveRespawnPointConfirmAction = new UINpcDialogMenuAction();
                UINpcDialogMenuAction saveRespawnPointCancelAction  = new UINpcDialogMenuAction();
                saveRespawnPointConfirmAction.title     = messageSaveRespawnPointConfirm;
                saveRespawnPointConfirmAction.menuIndex = NpcDialog.SAVE_SPAWN_POINT_CONFIRM_MENU_INDEX;
                saveRespawnPointCancelAction.title      = messageSaveRespawnPointCancel;
                saveRespawnPointCancelAction.menuIndex  = NpcDialog.SAVE_SPAWN_POINT_CANCEL_MENU_INDEX;
                menuActions.Add(saveRespawnPointConfirmAction);
                menuActions.Add(saveRespawnPointCancelAction);
                break;

            case NpcDialogType.Warp:
                if (onSwitchToWarpDialog != null)
                {
                    onSwitchToWarpDialog.Invoke();
                }
                UINpcDialogMenuAction warpConfirmAction = new UINpcDialogMenuAction();
                UINpcDialogMenuAction warpCancelAction  = new UINpcDialogMenuAction();
                warpConfirmAction.title     = messageWarpConfirm;
                warpConfirmAction.menuIndex = NpcDialog.WARP_CONFIRM_MENU_INDEX;
                warpCancelAction.title      = messageWarpCancel;
                warpCancelAction.menuIndex  = NpcDialog.WARP_CANCEL_MENU_INDEX;
                menuActions.Add(warpConfirmAction);
                menuActions.Add(warpCancelAction);
                break;

            case NpcDialogType.PlayerStorage:
                if (onSwitchToPlayerStorageDialog != null)
                {
                    onSwitchToPlayerStorageDialog.Invoke();
                }
                UINpcDialogMenuAction playerStorageConfirmAction = new UINpcDialogMenuAction();
                UINpcDialogMenuAction playerStorageCancelAction  = new UINpcDialogMenuAction();
                playerStorageConfirmAction.title     = messagePlayerStorageConfirm;
                playerStorageConfirmAction.menuIndex = NpcDialog.STORAGE_CONFIRM_MENU_INDEX;
                playerStorageCancelAction.title      = messagePlayerStorageCancel;
                playerStorageCancelAction.menuIndex  = NpcDialog.STORAGE_CANCEL_MENU_INDEX;
                menuActions.Add(playerStorageConfirmAction);
                menuActions.Add(playerStorageCancelAction);
                break;

            case NpcDialogType.GuildStorage:
                if (onSwitchToGuildStorageDialog != null)
                {
                    onSwitchToGuildStorageDialog.Invoke();
                }
                UINpcDialogMenuAction guildStorageConfirmAction = new UINpcDialogMenuAction();
                UINpcDialogMenuAction guildStorageCancelAction  = new UINpcDialogMenuAction();
                guildStorageConfirmAction.title     = messageGuildStorageConfirm;
                guildStorageConfirmAction.menuIndex = NpcDialog.STORAGE_CONFIRM_MENU_INDEX;
                guildStorageCancelAction.title      = messageGuildStorageCancel;
                guildStorageCancelAction.menuIndex  = NpcDialog.STORAGE_CANCEL_MENU_INDEX;
                menuActions.Add(guildStorageConfirmAction);
                menuActions.Add(guildStorageCancelAction);
                break;
            }
            // Menu
            if (uiMenuRoot != null)
            {
                uiMenuRoot.SetActive(menuActions.Count > 0);
            }
            CacheMenuList.Generate(menuActions, (index, menuAction, ui) =>
            {
                UINpcDialogMenu uiNpcDialogMenu = ui.GetComponent <UINpcDialogMenu>();
                uiNpcDialogMenu.Data            = menuAction;
                uiNpcDialogMenu.uiNpcDialog     = this;
                uiNpcDialogMenu.Show();
            });
            // Quest
            if (uiCharacterQuest != null)
            {
                if (quest == null)
                {
                    uiCharacterQuest.Hide();
                }
                else
                {
                    uiCharacterQuest.Show();
                }
            }
            // Shop
            if (uiSellItemRoot != null)
            {
                uiSellItemRoot.SetActive(sellItems.Count > 0);
            }
            CacheSellItemList.Generate(sellItems, (index, sellItem, ui) =>
            {
                UINpcSellItem uiNpcSellItem = ui.GetComponent <UINpcSellItem>();
                uiNpcSellItem.Setup(sellItem, index);
            });
            // Craft Item
            if (uiCraftItem != null)
            {
                if (craftingItem == null)
                {
                    uiCraftItem.Hide();
                }
                else
                {
                    uiCraftItem.Show();
                }
            }
        }
 public void CreateCharacterQuest(SqliteTransaction transaction, int idx, string characterId, CharacterQuest characterQuest)
 {
     ExecuteNonQuery(transaction, "INSERT INTO characterquest (id, idx, characterId, dataId, isComplete, killedMonsters, completedTasks) VALUES (@id, @idx, @characterId, @dataId, @isComplete, @killedMonsters, @completedTasks)",
                     new SqliteParameter("@id", characterId + "_" + idx),
                     new SqliteParameter("@idx", idx),
                     new SqliteParameter("@characterId", characterId),
                     new SqliteParameter("@dataId", characterQuest.dataId),
                     new SqliteParameter("@isComplete", characterQuest.isComplete),
                     new SqliteParameter("@killedMonsters", characterQuest.WriteKilledMonsters()),
                     new SqliteParameter("@completedTasks", characterQuest.WriteCompletedTasks()));
 }
Esempio n. 24
0
 public void CreateCharacterQuest(MySqlConnection connection, MySqlTransaction transaction, int idx, string characterId, CharacterQuest characterQuest)
 {
     ExecuteNonQuerySync(connection, transaction, "INSERT INTO characterquest (id, idx, characterId, dataId, isComplete, isTracking, killedMonsters, completedTasks) VALUES (@id, @idx, @characterId, @dataId, @isComplete, @isTracking, @killedMonsters, @completedTasks)",
                         new MySqlParameter("@id", characterId + "_" + idx),
                         new MySqlParameter("@idx", idx),
                         new MySqlParameter("@characterId", characterId),
                         new MySqlParameter("@dataId", characterQuest.dataId),
                         new MySqlParameter("@isComplete", characterQuest.isComplete),
                         new MySqlParameter("@isTracking", characterQuest.isTracking),
                         new MySqlParameter("@killedMonsters", characterQuest.WriteKilledMonsters()),
                         new MySqlParameter("@completedTasks", characterQuest.WriteCompletedTasks()));
 }
 public async UniTask CreateCharacterQuest(MySqlConnection connection, MySqlTransaction transaction, int idx, string characterId, CharacterQuest characterQuest)
 {
     await ExecuteNonQuery(connection, transaction, "INSERT INTO characterquest (id, idx, characterId, dataId, isComplete, killedMonsters) VALUES (@id, @idx, @characterId, @dataId, @isComplete, @killedMonsters)",
                           new MySqlParameter("@id", characterId + "_" + idx),
                           new MySqlParameter("@idx", idx),
                           new MySqlParameter("@characterId", characterId),
                           new MySqlParameter("@dataId", characterQuest.dataId),
                           new MySqlParameter("@isComplete", characterQuest.isComplete),
                           new MySqlParameter("@killedMonsters", WriteKillMonsters(characterQuest.killedMonsters)));
 }