using System; using System.Collections; using System.Collections.Generic; using System.Linq; using GameConfig.giftConfig; using TEngine; using UnityEngine; using static UnityEngine.GraphicsBuffer; namespace GameLogic { public class DataDanMuSceneManager : GameBase.Singleton { public Dictionary m_GiftIds = new Dictionary(); public void OnInit() { RegisterEvent(); // 基于平台初始化该平台下的礼物Id OnGiftConfigInit(); } #region 初始化流程 private void OnGiftConfigInit() { if (EventConts.PlatformType == PlatformType.Dy || EventConts.PlatformType == PlatformType.None || EventConts.PlatformType == PlatformType.DyTest) { foreach (var item in ConfigSystem.Instance.Tables.TbGiftConfig.DataMap) { m_GiftIds.Add(item.Value.Id, item.Value.DyGiftId); } } else { Log.Error("当前平台没有配置礼物表 : {0}", EventConts.PlatformType); } } private void RegisterEvent() { GameEvent.AddEventListener(EventConts.MessageInfo, OnMessageInfo); GameEvent.AddEventListener(EventConts.GiftInfo, OnGiftInfo); GameEvent.AddEventListener(EventConts.LickInfo, OnLickInfo); } private void RemoveEvent() { GameEvent.RemoveEventListener(EventConts.MessageInfo, OnMessageInfo); GameEvent.RemoveEventListener(EventConts.GiftInfo, OnGiftInfo); GameEvent.RemoveEventListener(EventConts.LickInfo, OnLickInfo); } #endregion #region 事件监听 private void OnMessageInfo(ProtCustMessageData protCustMessageData) { var data = DataGameSceneManager.Instance.GetUnitPlayerData(protCustMessageData.openId); if (data == null) { if (protCustMessageData.content.Contains("加入")) { //var number = protCustMessageData.content.Where(c => char.IsDigit(c)).ToArray(); var number = protCustMessageData.content.Substring(2); Log.Debug(number); if (number.Length == 0) { // 检查是否输入姓氏 foreach (var surname in DataGameSceneManager.Instance.m_Strs) { if (protCustMessageData.content.Contains(surname)) { int index = DataGameSceneManager.Instance.m_Strs.IndexOf(surname); var actor = DataGameSceneManager.Instance.GetTeamActor(index.ToString()); //actor.AddUnitPlayer(data); data = DataGameSceneManager.Instance.CreateUnitPlayerData(protCustMessageData, index); actor.AddPlayer(data); return; } } } else { int targetId = UnityEngine.Random.Range(2, EventConts.MaxPlayerIds); data = DataGameSceneManager.Instance.CreateUnitPlayerData(protCustMessageData, targetId - 1); // 二次容错 if (data == null) { return; } var actor = DataGameSceneManager.Instance.GetTeamActor((targetId - 1).ToString()); actor.AddPlayer(data); } } //else if (protCustMessageData.content.Contains("666")) //{ // int targetId = Random.Range(1, EventConts.MaxPlayerIds); // var actor = DataGameSceneManager.Instance.GetTeamActor((targetId - 1).ToString()); // if (actor == null) // { // Log.Error("没有获取到实体玩家,tid = {0}", targetId); // return; // } // //actor.AddUnitPlayer(data); //} else if (int.TryParse(protCustMessageData.content, out int index)) { // 超过最大数 if (index > EventConts.MaxPlayerIds) { index = UnityEngine.Random.Range(2, EventConts.MaxPlayerIds); } var actor = DataGameSceneManager.Instance.GetTeamActor(index.ToString()); //actor.AddUnitPlayer(data); data = DataGameSceneManager.Instance.CreateUnitPlayerData(protCustMessageData, index); actor.AddPlayer(data); return; } } } private void OnGiftInfo(ProtCustMessageData protCustMessageData) { var data = DataGameSceneManager.Instance.GetUnitPlayerData(protCustMessageData.openId); if (data == null) { int targetId = UnityEngine.Random.Range(2, EventConts.MaxPlayerIds); data = DataGameSceneManager.Instance.CreateUnitPlayerData(protCustMessageData, targetId - 1); // 二次容错 if (data == null) { return; } var actor = DataGameSceneManager.Instance.GetTeamActor((targetId - 1).ToString()); if (actor == null) { Log.Error("没有获取到实体玩家,tid = {0}", targetId); return; } actor.AddPlayer(data); } foreach (var item in m_GiftIds) { // 对应的礼物效果 if (item.Value == protCustMessageData.content) { GiftConfig giftConfig = ConfigSystem.Instance.Tables.TbGiftConfig.Get(item.Key); if (giftConfig == null) { Log.Error("礼物配置表Id异常 {0}", item.Key); return; } Log.Debug("送礼:" + data.teamId); //优化写法 DataGameSceneManager.Instance.OnGiftFunc(giftConfig, int.Parse(protCustMessageData.Count), data); break; } } } private void OnLickInfo(ProtCustMessageData protCustMessageData) { var data = DataGameSceneManager.Instance.GetUnitPlayerData(protCustMessageData.openId); if (data == null) { Log.Error("玩家 {0} 没有加入过阵营,无法点赞", protCustMessageData.openId); } else { // 增加点赞数量 data.m_LikeCount += int.Parse(protCustMessageData.Count); var actor = DataGameSceneManager.Instance.GetTeamActor(data.teamId); if (actor != null) { GiftConfig giftConfig = ConfigSystem.Instance.Tables.TbGiftConfig.Get(1); if (giftConfig == null) { Log.Error("礼物配置表Id异常 {0}", 1); return; } //Log.Debug("点赞:" + data.teamId); DataGameSceneManager.Instance.OnGiftFunc(giftConfig, int.Parse(protCustMessageData.Count), data); GameEvent.Send(EventConts.UIDianZan, data.protCustMessageData.nickName); if (DataGameSceneManager.Instance.isLiShiShiJian) { DataGameSceneManager.Instance.m_LiShiShiJianLikeCount += int.Parse(protCustMessageData.Count); bool isAdd = true; // 检查列表是否存在该玩家 foreach (var item in DataGameSceneManager.Instance.sjDatas) { if (item.openId == data.protCustMessageData.openId) { isAdd = false; item.count += int.Parse(protCustMessageData.Count); break; } } if (isAdd) { // 给玩家增加贡献 data.m_GongXian++; SjData sjData = new SjData() { }; sjData.openId = data.protCustMessageData.openId; sjData.name = data.protCustMessageData.nickName; sjData.count = int.Parse(protCustMessageData.Count); DataGameSceneManager.Instance.sjDatas.Add(sjData); } } } } } #endregion public void OnDestroy() { RemoveEvent(); m_GiftIds.Clear(); } } }