/// <summary> /// 刷新雕像 /// </summary> /// <param name="manStatue"></param> /// <param name="wifeStatue"></param> private void ReshowCoupleStatue(RoleDataEx manStatue, RoleDataEx wifeStatue) { NPC manNpc = NPCGeneralManager.FindNPC(GameManager.MainMapCode, FakeRoleNpcId.CoupleWishMan); if (null != manNpc) { if (manStatue == null) { manNpc.ShowNpc = true; GameManager.ClientMgr.NotifyMySelfNewNPCBy9Grid(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, manNpc); FakeRoleManager.ProcessDelFakeRoleByType(FakeRoleTypes.CoupleWishMan, true); } else { manNpc.ShowNpc = false; GameManager.ClientMgr.NotifyMySelfDelNPCBy9Grid(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, manNpc); FakeRoleManager.ProcessDelFakeRoleByType(FakeRoleTypes.CoupleWishMan, true); SafeClientData clientData = new SafeClientData(); clientData.RoleData = manStatue; FakeRoleManager.ProcessNewFakeRole(clientData, manNpc.MapCode, FakeRoleTypes.CoupleWishMan, (int)manNpc.CurrentDir, (int)manNpc.CurrentPos.X, (int)manNpc.CurrentPos.Y, FakeRoleNpcId.CoupleWishMan); } } NPC wifeNpc = NPCGeneralManager.FindNPC(GameManager.MainMapCode, FakeRoleNpcId.CoupleWishWife); if (null != wifeNpc) { if (wifeStatue == null) { // wifeNpc.ShowNpc = true; // GameManager.ClientMgr.NotifyMySelfNewNPCBy9Grid(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, wifeNpc); wifeNpc.ShowNpc = true; GameManager.ClientMgr.NotifyMySelfNewNPCBy9Grid(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, wifeNpc); FakeRoleManager.ProcessDelFakeRoleByType(FakeRoleTypes.CoupleWishWife, true); } else { wifeNpc.ShowNpc = false; GameManager.ClientMgr.NotifyMySelfDelNPCBy9Grid(Global._TCPManager.MySocketListener, Global._TCPManager.TcpOutPacketPool, wifeNpc); FakeRoleManager.ProcessDelFakeRoleByType(FakeRoleTypes.CoupleWishWife, true); SafeClientData clientData = new SafeClientData(); clientData.RoleData = wifeStatue; FakeRoleManager.ProcessNewFakeRole(clientData, wifeNpc.MapCode, FakeRoleTypes.CoupleWishWife, (int)wifeNpc.CurrentDir, (int)wifeNpc.CurrentPos.X, (int)wifeNpc.CurrentPos.Y, FakeRoleNpcId.CoupleWishWife); } } }
public void SetDiaoXiang(CoupleWishSyncStatueData newStatue) { if (newStatue.DbCoupleId > 0 && (newStatue.ManRoleDataEx == null || newStatue.WifeRoleDataEx == null)) { RoleData4Selector manRoleData4Selector = RoleManager.getInstance().GetMainOccupationRoleDataForSelector(newStatue.Man.RoleId, GameManager.ServerId); RoleData4Selector wifeRoleData4Selector = RoleManager.getInstance().GetMainOccupationRoleDataForSelector(newStatue.Wife.RoleId, GameManager.ServerId); if (manRoleData4Selector != null && wifeRoleData4Selector != null) { CoupleWishReportStatueData statueReq = new CoupleWishReportStatueData(); statueReq.DbCoupleId = newStatue.DbCoupleId; statueReq.ManStatue = DataHelper.ObjectToBytes <RoleData4Selector>(manRoleData4Selector); statueReq.WifeStatue = DataHelper.ObjectToBytes <RoleData4Selector>(wifeRoleData4Selector); TianTiClient.getInstance().CoupleWishReportCoupleStatue(statueReq); } } if (newStatue.DbCoupleId > 0 && newStatue.ManRoleDataEx != null && newStatue.WifeRoleDataEx != null) { if (newStatue.IsDivorced == 1) { this.ReshowCoupleStatue(null, null); } else if (this._Statue == null || this._Statue.ManRoleDataEx == null || this._Statue.WifeRoleDataEx == null || this._Statue.DbCoupleId != newStatue.DbCoupleId) { this.ReshowCoupleStatue(DataHelper.BytesToObject <RoleData4Selector>(newStatue.ManRoleDataEx, 0, newStatue.ManRoleDataEx.Length), DataHelper.BytesToObject <RoleData4Selector>(newStatue.WifeRoleDataEx, 0, newStatue.WifeRoleDataEx.Length)); } } else { this.ReshowCoupleStatue(null, null); } NPC npc = NPCGeneralManager.GetNPCFromConfig(this.YanHuiMapCode, this.YanHuiNpcId, this.YanHuiNpcX, this.YanHuiNpcY, this.YanHuiNpcDir); if (newStatue.DbCoupleId > 0 && npc != null && (this._Statue == null || this._Statue.DbCoupleId != newStatue.DbCoupleId) && newStatue.YanHuiJoinNum < this._Config.YanHuiCfg.TotalMaxJoinNum) { NPCGeneralManager.AddNpcToMap(npc); } if (newStatue.DbCoupleId <= 0 || newStatue.YanHuiJoinNum >= this._Config.YanHuiCfg.TotalMaxJoinNum) { NPCGeneralManager.RemoveMapNpc(this.YanHuiMapCode, this.YanHuiNpcId); } this._Statue = newStatue; }
/// <summary> /// 设置雕像 /// </summary> /// <param name="newStatue"></param> public void SetDiaoXiang(CoupleWishSyncStatueData newStatue) { if (newStatue.DbCoupleId > 0 && (newStatue.ManRoleDataEx == null || newStatue.WifeRoleDataEx == null)) { // 把第一名情侣的雕像形象数据上传到中心 // 雕像数据非常大,有100K+,所以在祝福的时候不传到中心,然后每个服务器自行检测上周的第一名是否有雕像数据,如果没有,那么则尝试上报雕像数据 // 第一名所在的服务器上报之后,其余服务器就能同步到雕像数据了 SafeClientData manClientData = Global.GetSafeClientDataFromLocalOrDB(newStatue.Man.RoleId); SafeClientData wifeClientData = Global.GetSafeClientDataFromLocalOrDB(newStatue.Wife.RoleId); RoleDataEx manRoleDataEx = manClientData != null?manClientData.GetRoleDataEx() : null; RoleDataEx wifeRoleDataEx = wifeClientData != null?wifeClientData.GetRoleDataEx() : null; if (manRoleDataEx != null && wifeRoleDataEx != null) { CoupleWishReportStatueData statueReq = new CoupleWishReportStatueData(); statueReq.DbCoupleId = newStatue.DbCoupleId; statueReq.ManStatue = DataHelper.ObjectToBytes <RoleDataEx>(manRoleDataEx); statueReq.WifeStatue = DataHelper.ObjectToBytes <RoleDataEx>(wifeRoleDataEx); TianTiClient.getInstance().CoupleWishReportCoupleStatue(statueReq); } } if (newStatue.DbCoupleId > 0 && newStatue.ManRoleDataEx != null && newStatue.WifeRoleDataEx != null) { if (newStatue.IsDivorced == 1) // 强制不可显示雕像。离婚了呗 { ReshowCoupleStatue(null, null); } else { if (_Statue == null || _Statue.ManRoleDataEx == null || _Statue.WifeRoleDataEx == null || _Statue.DbCoupleId != newStatue.DbCoupleId) { ReshowCoupleStatue(DataHelper.BytesToObject <RoleDataEx>(newStatue.ManRoleDataEx, 0, newStatue.ManRoleDataEx.Length), DataHelper.BytesToObject <RoleDataEx>(newStatue.WifeRoleDataEx, 0, newStatue.WifeRoleDataEx.Length)); } } } else { ReshowCoupleStatue(null, null); } NPC npc = NPCGeneralManager.GetNPCFromConfig(YanHuiMapCode, YanHuiNpcId, YanHuiNpcX, YanHuiNpcY, YanHuiNpcDir); if (newStatue.DbCoupleId > 0 && null != npc && (_Statue == null || _Statue.DbCoupleId != newStatue.DbCoupleId) && newStatue.YanHuiJoinNum < _Config.YanHuiCfg.TotalMaxJoinNum) { NPCGeneralManager.AddNpcToMap(npc); } if (newStatue.DbCoupleId <= 0 || newStatue.YanHuiJoinNum >= _Config.YanHuiCfg.TotalMaxJoinNum) { NPCGeneralManager.RemoveMapNpc(YanHuiMapCode, YanHuiNpcId); } _Statue = newStatue; }