static public void Award(int id) { TaskConfig taskConfig = ConfigData.GetTaskConfig(id); Profile user = UserProfile.Profile; GameResource res = GameResource.Parse(taskConfig.Resource); res.Add(GameResourceType.Gold, GetMoneyReal(id)); if (taskConfig.Card != 0 && CardConfigManager.GetCardConfig(taskConfig.Card).Id>0) { user.InfoCard.AddCard(taskConfig.Card); } if (taskConfig.Item.Count > 0) { for (int i = 0; i < taskConfig.Item.Count; i++) { if (taskConfig.Item[i].Value == 1) user.InfoBag.AddItem(taskConfig.Item[i].Id, 1); else user.InfoEquip.AddEquip(taskConfig.Item[i].Id); } } user.InfoBag.AddResource(res.ToArray()); user.InfoBasic.AddExp(GetExpReal(id)); if (taskConfig.Type == TaskTypes.Item) { for (int i = 0; i < taskConfig.NeedItemId.Length; i ++) { user.InfoBag.DeleteItem(taskConfig.NeedItemId[i], taskConfig.NeedItemCount[i]); } } else if (taskConfig.Type == TaskTypes.Resource) { GameResource subres = new GameResource(); subres.Add((GameResourceType)(taskConfig.NeedResourceId - 1), taskConfig.NeedResourceCount); user.InfoBag.SubResource(subres.ToArray()); } }
static public bool CanFinish(int id) { int state = UserProfile.InfoTask.GetTaskStateById(id); if (state == 0 || state == 3) return false; TaskConfig taskConfig = ConfigData.GetTaskConfig(id); switch (taskConfig.Type) { case TaskTypes.Item: return CheckItem(id); case TaskTypes.Fight: return state == 2; case TaskTypes.Talk: return true; case TaskTypes.Level: return UserProfile.InfoBasic.Level >= taskConfig.NeedLevel; case TaskTypes.Teach: return true; case TaskTypes.Won: return UserProfile.InfoTask.GetTaskAddonById(id) >= taskConfig.WinCount; case TaskTypes.WonLevel: return UserProfile.InfoTask.GetTaskAddonById(id) >= taskConfig.WinCount; case TaskTypes.Resource: GameResource res = new GameResource(); res.Add((GameResourceType)(taskConfig.NeedResourceId - 1), taskConfig.NeedResourceCount); return UserProfile.InfoBag.CheckResource(res.ToArray()); case TaskTypes.Special: return state == 2; } return false; }