using System.Collections; using System.Collections.Generic; using System.Linq; using GameConfig.giftConfig; using TEngine; using UnityEngine; 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) { //data = DataGameSceneManager.Instance.CreateUnitPlayerData(protCustMessageData); //// 二次容错 //if (data == null) //{ // return; //} } // if (EventConts.gameStateType == GameStateType.团队赛) // { // // 没有加入过阵营 // if (data.teamId == "-1") // { // // 指令集操作 // if (protCustMessageData.content.Contains("加入")) // { // var number = protCustMessageData.content.Where(c => char.IsDigit(c)).ToArray(); // 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); // return; // } // } // } // else // { // int targetId = int.Parse(new string(number)); // // 超过最大数 // if (targetId > EventConts.MaxPlayerIds) // { // targetId = Random.Range(targetId, EventConts.MaxPlayerIds); // } // var actor = DataGameSceneManager.Instance.GetTeamActor((targetId - 1).ToString()); // actor.AddUnitPlayer(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 // { // // 直接数字 // var number = protCustMessageData.content.Where(c => char.IsDigit(c)).ToArray(); // if (number.Length == 0) // { // Log.Error("No digits found in content: {0}", protCustMessageData.content); // return; // or handle the error as needed // } // int targetId = -1; // if (int.TryParse(new string(number), out targetId)) // { // // 超过最大数 // if (targetId > EventConts.MaxPlayerIds) // { // targetId = Random.Range(targetId, EventConts.MaxPlayerIds); // } // var actor = DataGameSceneManager.Instance.GetTeamActor((targetId - 1).ToString()); // actor.AddUnitPlayer(data); // Log.Info("玩家 {0} , 进攻 {1}", data.protCustMessageData.nickName, targetId); // } // } // } // else // { // // 加入过阵营 // var actor = DataGameSceneManager.Instance.GetTeamActor(data.teamId); // } // } // else if (EventConts.gameStateType == GameStateType.个人赛) // { // var actor = DataGameSceneManager.Instance.GetTeamActor(data.teamId); // if (actor == null) // { // actor = DataGameSceneManager.Instance.CraeteTeamActor(data); // actor.AddUnitPlayer(data); // } // } } private void OnGiftInfo(ProtCustMessageData protCustMessageData) { var data = DataGameSceneManager.Instance.GetUnitPlayerData(protCustMessageData.openId); if (data == null) { int targetId = 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); //data = DataGameSceneManager.Instance.CreateUnitPlayerData(protCustMessageData); //// 二次容错 //if (data == null) //{ // return; //} //// 随机落座 //if (EventConts.gameStateType == GameStateType.团队赛) //{ // int targetId = Random.Range(1, EventConts.MaxPlayerIds); // Actor actor1 = DataGameSceneManager.Instance.GetTeamActor((targetId - 1).ToString()); // if (actor1 == null) // { // Log.Error("没有获取到实体玩家,tid = {0}", targetId); // return; // } // actor1.AddUnitPlayer(data); //} //else if (EventConts.gameStateType == GameStateType.个人赛) //{ // var actor2 = DataGameSceneManager.Instance.GetTeamActor(data.teamId); // if (actor2 == null) // { // actor2 = DataGameSceneManager.Instance.CraeteTeamActor(data); // actor2.AddUnitPlayer(data); // } //} } 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); 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(); } } }