예제 #1
0
        /// <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);
                }
            }
        }
예제 #2
0
        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;
        }
예제 #3
0
        /// <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;
        }