public override void DoAction(IEventArgs args) { SimpleProto builder = FreePool.Allocate(); builder.Key = FreeMessageConstant.GroupTechStatUI; builder.Ins.Add(args.GameContext.player.count); List <TechStat> list = new List <TechStat>(); int index = 0; bool needSort = true; foreach (PlayerEntity p in args.GameContext.player.GetInitializedPlayerEntities()) { TechStat ts = new TechStat(p, index++); builder.Ps.Add(ts.ToMessage()); list.Add(ts); if (!p.statisticsData.Statistics.DataCollectSwitch) { needSort = false; } } if (needSort) { list.Sort(KillComparater); if (list.Count > 0 && list[0].kill > 0) { TechStat ts = list[0]; builder.Ps[ts.index].Ins[2] |= (1 << (int)EUIGameTitleType.Ace); } if (list.Count > 1 && list[1].kill > 0) { TechStat ts = list[1]; builder.Ps[ts.index].Ins[2] |= (1 << (int)EUIGameTitleType.Second); } if (list.Count > 2 && list[2].kill > 0) { TechStat ts = list[2]; builder.Ps[ts.index].Ins[2] |= (1 << (int)EUIGameTitleType.Third); } list.Sort(KdComparater); if (list.Count > 0 && list[0].kd > 0) { TechStat ts = list[0]; builder.Ps[ts.index].Ins[2] |= (1 << (int)EUIGameTitleType.KdKing); } } foreach (PlayerEntity p in args.GameContext.player.GetInitializedPlayerEntities()) { FreeMessageSender.SendMessage(p, builder); } }
public override void DoAction(IEventArgs args) { SimpleProto builder = FreePool.Allocate(); builder.Key = FreeMessageConstant.GroupTechStatUI; bool needSort = true; bool rescueEnabled = args.GameContext.session.commonSession.RoomInfo.TeamCapacity > 1; List <TechStat> list = new List <TechStat>(); int index = 0; foreach (PlayerEntity p in args.GameContext.player.GetInitializedPlayerEntities()) { TechStat ts = new TechStat(p, index++, rescueEnabled); builder.Ps.Add(ts.ToMessage()); list.Add(ts); if (!p.statisticsData.Statistics.DataCollectSwitch) { needSort = false; } } builder.Ins.Add(index); if (needSort) { if (rescueEnabled) { list.Sort(HitDownComparater); } else { list.Sort(KillComparater); } if (list.Count > 0 && ((list[0].kill > 0 && !rescueEnabled) || (list[0].hitDownCount > 0 && rescueEnabled))) { builder.Ps[list[0].index].Ins[2] |= 1 << (int)EUIGameTitleType.Ace; } if (list.Count > 1 && ((list[1].kill > 0 && !rescueEnabled) || (list[1].hitDownCount > 0 && rescueEnabled))) { builder.Ps[list[1].index].Ins[2] |= 1 << (int)EUIGameTitleType.Second; } if (list.Count > 2 && ((list[2].kill > 0 && !rescueEnabled) || (list[2].hitDownCount > 0 && rescueEnabled))) { builder.Ps[list[2].index].Ins[2] |= 1 << (int)EUIGameTitleType.Third; } if (rescueEnabled) { list.Sort(HdComparater); } else { list.Sort(KdComparater); } if (list.Count > 0 && list[0].kd > 0) { builder.Ps[list[0].index].Ins[2] |= 1 << (int)EUIGameTitleType.KdKing; } } foreach (PlayerEntity p in args.GameContext.player.GetInitializedPlayerEntities()) { FreeMessageSender.SendMessage(p, builder); } }