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