123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- using UnityEngine;
- using System;
- using System.Linq;
- using System.Collections;
- using System.Collections.Generic;
- using Newtonsoft.Json.Linq;
- /// <summary>
- /// 任务卡扩展
- /// </summary>
- public static class TaskCardExtension
- {
- /// <summary>
- /// 从集合中提取指定类型的任务卡.
- /// </summary>
- /// <typeparam name="T"></typeparam>
- /// <param name="source"></param>
- /// <param name="subtype">类型:1:主线;2:日程;3:圣哲;4:商店 default(0)</param>
- /// <returns></returns>
- public static List<T> GetSubTypes<T>(this IEnumerable<T> source, int subtype = 0) where T : TaskCardVo
- {
- return subtype == 0 ? new List<T>() { } : source.Where(t => t.mo.type == subtype).ToList();
- }
- }
- public class GameCollectTaskCard
- {
- /// <summary>
- /// 玩家收集的英雄数据集合
- /// </summary>
- public Dictionary<string, TaskCardVo> collectTaskCardDic = new Dictionary<string, TaskCardVo>();
- /// <summary>
- /// 初始化玩家的圈养的英雄列表
- /// </summary>
- /// <param name="data"></param>
- public void InitData(JObject data)
- {
- collectTaskCardDic.Clear();
- foreach (JProperty ele in (data["taskcards"] as JObject).Properties())
- {
- TaskCardVo vo = (ele.Value as JObject).ToObject<TaskCardVo>();
- collectTaskCardDic.Add(vo.uid, vo);
- }
- }
- /// <summary>
- /// 获得背包中所有任务卡
- /// </summary>
- /// <returns></returns>
- public List<TaskCardVo> GetAllCards()
- {
- return collectTaskCardDic.Values.ToList();
- }
- /// <summary>
- /// 获取已完成,未领奖的任务卡
- /// </summary>
- /// <returns></returns>
- public List<TaskCardVo> GetFinishedCards()
- {
- return collectTaskCardDic.Values.Where(t => t.state == Enum_TaskCardStateType.finish).ToList(); // 已完成
- }
- /// <summary>
- /// 筛选出来存在尚未执行startAction的任务卡.
- /// </summary>
- /// <returns></returns>
- public List<TaskCardVo> GetTaskCardVosThatStartActionUndone()
- {
- return collectTaskCardDic.Values.Where(t =>
- {
- foreach (var stp in t.curSteps)
- {
- if (stp.ShouldDoStartAction())
- {
- return true;
- }
- }
- return false;
- }).ToList();
- }
- /// <summary>
- /// 筛选出来存在尚未执行finishAction的任务卡
- /// </summary>
- /// <returns></returns>
- public List<TaskCardVo> GetTaskCardVosThatFinishActionUndone()
- {
- return collectTaskCardDic.Values.Where(t =>
- {
- foreach (var stp in t.curSteps)
- {
- if (stp.ShouldDoFinishAction())
- {
- return true;
- }
- }
- return false;
- }).ToList();
- }
- /// <summary>
- /// 获取正在进行中的任务卡(含未领奖的) 【主线任务】/【日常任务】/【学院任务】/【悬赏任务】
- /// </summary>
- /// <returns></returns>
- public List<TaskCardVo> GetActivingCards()
- {
- List<TaskCardVo> list = collectTaskCardDic.Values.Where(t => t.state == Enum_TaskCardStateType.ing
- || t.state == Enum_TaskCardStateType.finish).ToList(); // 未完成
- List<TaskCardVo> mainlist = new List<TaskCardVo>();
- List<TaskCardVo> daliylist = new List<TaskCardVo>();
- List<TaskCardVo> collegelist = new List<TaskCardVo>();
- List<TaskCardVo> shoplist = new List<TaskCardVo>();
- List<TaskCardVo> allList = new List<TaskCardVo>();
- foreach (TaskCardVo vo in list)
- {
- if (vo.mo.type == (int)Enum_TaskCardType.Main)
- {
- mainlist.Add(vo);
- }
- else if (vo.mo.type == (int)Enum_TaskCardType.Daily)
- {
- daliylist.Add(vo);
- }
- else if(vo.mo.type == (int)Enum_TaskCardType.School)
- {
- collegelist.Add(vo);
- }
- else if (vo.mo.type == (int)Enum_TaskCardType.Shoop)
- {
- shoplist.Add(vo);
- }
- }
- allList.AddRange(mainlist);
- allList.AddRange(daliylist);
- allList.AddRange(collegelist);
- allList.AddRange(shoplist);
- return allList;
- //return collectTaskCardDic.Values.Where(t => t.state == Enum_TaskCardStateType.ing
- //|| t.state == Enum_TaskCardStateType.finish).ToList(); // 未完成
- }
- }
|