예제 #1
0
        public static Models.Quest Load(Models.Quest qst, GomObject obj)
        {
            if (obj == null)
            {
                return(qst);
            }
            if (qst == null)
            {
                return(null);
            }

            qst.Fqn    = obj.Name;
            qst.NodeId = obj.Id;

            var textMap = (Dictionary <object, object>)obj.Data.ValueOrDefault <Dictionary <object, object> >("locTextRetrieverMap", null);

            qst.TextLookup = textMap;

            long questGuid = obj.Data.ValueOrDefault <long>("qstQuestDefinitionGUID", 0);

            qst.Id             = (ulong)(questGuid >> 32);
            qst.RequiredLevel  = (int)obj.Data.ValueOrDefault <long>("qstReqMinLevel", 0);
            qst.IsRepeatable   = obj.Data.ValueOrDefault <bool>("qstIsRepeatable", false);
            qst.XpLevel        = (int)obj.Data.ValueOrDefault <long>("qstXpLevel", 0);
            qst.Difficulty     = QuestDifficultyExtensions.ToQuestDifficulty((ScriptEnum)obj.Data.ValueOrDefault <ScriptEnum>("qstDifficulty", null));
            qst.CanAbandon     = obj.Data.ValueOrDefault <bool>("qstAllowAbandonment", false);
            qst.Icon           = obj.Data.ValueOrDefault <string>("qstMissionIcon", null);
            qst.IsHidden       = obj.Data.ValueOrDefault <bool>("qstIsHiddenQuest", false);
            qst.IsClassQuest   = obj.Data.ValueOrDefault <bool>("qstIsClassQuest", false);
            qst.IsBonus        = obj.Data.ValueOrDefault <bool>("qstIsBonusQuest", false);
            qst.BonusShareable = obj.Data.ValueOrDefault <bool>("qstIsBonusQuestShareable", false);
            qst.CategoryId     = obj.Data.ValueOrDefault <long>("qstCategoryDisplayName", 0);
            qst.Category       = QuestCategoryExtensions.ToQuestCategory(qst.CategoryId);

            LoadBranches(qst, obj);
            var items   = (List <object>)obj.Data.ValueOrDefault <List <object> >("qstItemVariableDefinition_ProtoVarList", null);
            var bools   = (List <object>)obj.Data.ValueOrDefault <List <object> >("qstSimpleBoolVariableDefinition_ProtoVarList", null);
            var strings = (List <object>)obj.Data.ValueOrDefault <List <object> >("qstStringIdVariableDefinition_ProtoVarList", null);

            LoadRequiredClasses(qst, obj);

            long nameId     = questGuid + 0x58;
            var  nameLookup = (GomObjectData)textMap[nameId];

            qst.Name = StringTable.TryGetString(qst.Fqn, nameLookup);

            if (qst.Name.StartsWith("CUT", StringComparison.InvariantCulture))
            {
                qst.IsHidden = true;
            }

            TorLib.Icons.AddCodex(qst.Icon);

            return(qst);
        }
예제 #2
0
        /// <summary>
        /// Updates existing document
        /// </summary>
        /// <param name="quest">Quest object</param>
        /// <returns></returns>
        public async Task <bool> Update(Models.Quest quest)
        {
            var response = await _client.UpdateAsync(new DocumentPath <Models.Quest>(quest), u => u.Index( "quest" ).Doc(quest));

            if (response.IsValid)
            {
                return(true);
            }

            return(false);
        }
예제 #3
0
 public static kcvModels.Raw.kcsapi_quest ToKcvApi(this Models.Quest quest)
 {
     return(new kcvModels.Raw.kcsapi_quest
     {
         api_no = quest.Id,
         api_category = quest.Category,
         api_type = quest.Type,
         api_title = quest.Title,
         api_detail = quest.Detail
     });
 }
예제 #4
0
        public async Task <IHttpActionResult> Put(Models.Quest quest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest());
            }

            var esClient = new ESClient.Client( );
            var result   = await esClient.Update(quest);

            return(Ok(result));
        }
예제 #5
0
        public async Task <IHttpActionResult> Post(Models.Quest quest)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest( ));
            }

            if (quest.Id == Guid.Empty)
            {
                quest.Id = Guid.NewGuid( );
            }

            var esClient = new ESClient.Client();
            var result   = await esClient.Add(quest);

            return(Ok(result));
        }
예제 #6
0
        public JsonResult SalvaQuest(Models.Quest quest)
        {
            using (var db = new LojaDataContext())
            {
                var questData = new Lojaonline.DATA.Quest
                {
                    DATA    = DateTime.Now,
                    ID_LOJA = quest.idLoja,
                    REACT   = quest.react,
                    ID_FOTO = quest.idFoto,
                    LIKE    = quest.like,
                    OPTION  = quest.opt
                };

                db.Quests.InsertOnSubmit(questData);

                db.SubmitChanges();
            }

            return(Json(""));
        }
예제 #7
0
        /// <summary>
        /// Adds a document to the index
        /// </summary>
        /// <param name="quest">Quest object</param>
        /// <returns></returns>
        public async Task <bool> Add(Models.Quest quest)
        {
            var response = await _client.IndexAsync(quest, idx => idx.Index("quest"));

            return(response.Created);
        }
예제 #8
0
 public static ViewModels.QuestViewModelEx ToViewModels(this Models.Quest quest)
 {
     return(new ViewModels.QuestViewModelEx(quest.ToKcvModels()));
 }
예제 #9
0
 public static kcvModels.Quest ToKcvModels(this Models.Quest quest)
 {
     return(new kcvModels.Quest(quest.ToKcvApi()));
 }