123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 |
- using System.Collections.Generic;
- using System.Linq;
- namespace ET.Server
- {
- /// <summary>
- /// Proto工具类
- /// </summary>
- public static class ProtoHelper
- {
- /// <summary>
- /// 玩家信息转proto
- /// </summary>
- /// <param name="player"></param>
- /// <returns></returns>
- public static PlayerInfo PlayerToProto(Player player)
- {
- return new PlayerInfo()
- {
- id = player.Id,
- name = player.Name,
- sex = player.Sex,
- exp = player.Exp,
- level = player.Level,
- vip = 0
- };
- }
- /// <summary>
- /// 房间信息转proto
- /// </summary>
- /// <param name="room"></param>
- /// <param name="player"></param>
- /// <param name="opPlayer">当前操作玩家</param>
- /// <returns></returns>
- public static RoomInfo RoomToProto(Room room, Player player, Player opPlayer)
- {
- RoomInfo info = new ();
- info.RoomId = room.RoomId;
- info.Type = room.Type;
- info.OwnerId = room.OwnerId;
- HGHHComponent hghhComponent = room.GetComponent<HGHHComponent>();
- if (hghhComponent != null)
- {
- info.State = hghhComponent.State;
- // info.Time = hghhComponent.Time;
- info.CurRound = hghhComponent.CurrentRound;
- info.Rand1 = hghhComponent.Rand[0];
- info.Rand2 = hghhComponent.Rand[1];
- info.ZhuangPos = hghhComponent.ZhuangPos;
- info.CardNum = hghhComponent.CardList.Count;
- info.OpId = opPlayer?.Id ?? -1;
- info.OpPos = opPlayer?.Pos ?? -1;
- info.CurDisCard = hghhComponent.DisCard;
- }
- // 本人信息
- info.MyInfo = PlayerInfoToProto(room, player, true);
- // 其他玩家信息
- info.OtherInfo = new List<PlayerInfo>();
- foreach (Player p in room.GetAllPlayers().Values.Where(p => p != null && p.Id != player.Id))
- {
- info.OtherInfo.Add(PlayerInfoToProto(room, p, false));
- }
- return info;
- }
- /// <summary>
- /// 房间玩家信息转proto
- /// </summary>
- /// <param name="room">玩家</param>
- /// <param name="player">玩家</param>
- /// <param name="flag">是否本人</param>
- /// <returns></returns>
- public static PlayerInfo PlayerInfoToProto(Room room, Player player, bool flag)
- {
- PlayerInfo info = new ();
- info.id = player.Id;
- info.name = player.Name;
- info.sex = player.Sex;
- info.exp = player.Exp;
- info.level = player.Level;
- info.vip = player.Vip;
- info.diamond = player.Diamond;
- info.pos = player.Pos;
- info.state = player.State;
- info.isAuto = player.IsAuto;
- info.cardInfo = new CardInfo();
- if (flag)
- {
- info.cardInfo.RemainCards = new List<int>(player.RemainCards);
-
- HGHHComponent hghhComponent = room.GetComponent<HGHHComponent>();
- if (hghhComponent != null)
- {
- info.cardInfo.DrawCard = hghhComponent.DrawCard;
- }
-
- info.cardInfo.Acts = player.Act.ToList();
-
- info.cardInfo.ActInfo = new List<ActInfo>();
- if (player.ActInfo is { Count: > 0 })
- {
- foreach (Struct.Kezi kezi in player.ActInfo)
- {
- info.cardInfo.ActInfo.Add(new ActInfo(){Card = kezi.Card, Type = kezi.Type, PlayerId = kezi.PlayerId});
- }
- }
- }
-
- info.cardInfo.RemainCardsNum = player.RemainCards.Length;
-
- info.cardInfo.DisCards = new List<int>(player.DisCards);
-
- info.cardInfo.UsedInfo = new List<ActInfo>();
- if (player.KeZi is {Count: > 0})
- {
- foreach (Struct.Kezi kezi in player.KeZi.Where(kezi => kezi != null))
- {
- info.cardInfo.UsedInfo.Add(new ActInfo(){Card = kezi.Card, Type = kezi.Type, PlayerId = kezi.PlayerId});
- }
- }
-
- return info;
- }
- }
- }
|