/// <summary> 推送活动结束</summary> public void CommandStart(SiegeResultType type) { Variable.Activity.Siege.IsOpen = false; //关闭活动入口 new Share.Activity().PushActivity(0, 14); //推送关闭图标 SendAllEndAndExit(type); SendEndNotice(type); }
/// <summary> 活动公告结束跑马灯推送 </summary> private void SendEndNotice(SiegeResultType type) { switch (type) { case SiegeResultType.DOGFALL: { SendPlayersNoyice(100008, ""); break; } case SiegeResultType.EAST_WIN: { SendPlayersNoyice(100006, "东军"); break; } case SiegeResultType.EAST_LOSE: { SendPlayersNoyice(100006, "西军"); break; } } }
/// <summary> 区分玩家应获得奖励 </summary> /// <param name="model">玩家活动数据</param> /// <param name="type">活动胜利类型</param> private List <RewardVo> ConvertRewardVos(SiegePlayer model, SiegeResultType type) { var list = new List <RewardVo>(); switch (type) { case SiegeResultType.DOGFALL: { list = GetRewardVos(model.fame, Convert.ToInt32(ActivityRewardType.DRAW)); break; } case SiegeResultType.EAST_LOSE: { list = GetRewardVos(model.fame, model.player_camp == (int)CampType.East ? Convert.ToInt32(ActivityRewardType.LOSE) : Convert.ToInt32(ActivityRewardType.WIN)); break; } case SiegeResultType.EAST_WIN: { list = GetRewardVos(model.fame, model.player_camp == (int)CampType.East ? Convert.ToInt32(ActivityRewardType.WIN) : Convert.ToInt32(ActivityRewardType.LOSE)); break; } default: { break; } } return(list); }
/// <summary> Send 所有活动玩家 活动结束和活动退出 </summary> /// <param name="type">活动结果枚举类型</param> private void SendAllEndAndExit(SiegeResultType type) { foreach (var item in Variable.Activity.Siege.PlayerData) { var token = new CancellationTokenSource(); Task.Factory.StartNew(m => { var temp = m as SiegePlayer; if (temp == null) { return; } var reward = ConvertRewardVos(temp, type); //计算玩家活动结束奖励所得 (new Share.Message()).BuildMessagesSend(temp.user_id, "美浓活动奖励", "美浓活动奖励", reward); (new Share.DaMing()).CheckDaMing(temp.user_id, (int)DaMingType.美浓攻略); if (!Variable.OnlinePlayer.ContainsKey(temp.user_id)) { return; } var session = Variable.OnlinePlayer[temp.user_id] as TGGSession; if (Common.GetInstance().IsActivities(temp.user_id)) //是否在活动中 { var aso = EXIT.GetInstance().CommandStart(session); //退出活动(会推送其他玩家 该玩家离开美浓活动场景) Common.GetInstance().TrainingSiegeEndSend(session, aso, (int)SiegeCommand.EXIT); //(SendData)退出活动 } var asobj = new ASObject(BuildData((int)type, reward)); Common.GetInstance().TrainingSiegeEndSend(session, asobj, (int)SiegeCommand.PUSH_END);//Send活动结束 token.Cancel(); }, item, token.Token); } Variable.Activity.Siege.PlayerData = new List <SiegePlayer>(); Variable.Activity.Siege.BossCondition = new List <CampCondition>(); }