Exemple #1
0
        public bool WriteStatueData(CoupleWishSyncStatueData statue)
        {
            bool result;

            try
            {
                string sql = string.Format("INSERT INTO t_couple_wish_statue(`couple_id`,`man_rid`,`man_zoneid`,`man_rname`,`wife_rid`,`wife_zoneid`,`wife_rname`,`admire_cnt`,`is_divorced`,`week`,`yanhui_join_num`,`man_statue`,`wife_statue`)  VALUES({0},{1},{2},'{3}',{4},{5},'{6}',{7},{8},{9},{10},@man_statue,@wife_statue)  ON DUPLICATE KEY UPDATE `admire_cnt`={7},`is_divorced`={8},`yanhui_join_num`={10},`man_statue`=@man_statue,`wife_statue`=@wife_statue;", new object[]
                {
                    statue.DbCoupleId,
                    statue.Man.RoleId,
                    statue.Man.ZoneId,
                    statue.Man.RoleName,
                    statue.Wife.RoleId,
                    statue.Wife.ZoneId,
                    statue.Wife.RoleName,
                    statue.BeAdmireCount,
                    statue.IsDivorced,
                    statue.Week,
                    statue.YanHuiJoinNum
                });
                DbHelperMySQL.ExecuteSqlInsertImg(sql, new List <Tuple <string, byte[]> >
                {
                    new Tuple <string, byte[]>("man_statue", statue.ManRoleDataEx),
                    new Tuple <string, byte[]>("wife_statue", statue.WifeRoleDataEx)
                });
                result = true;
            }
            catch (Exception ex)
            {
                LogManager.WriteLog(LogTypes.Error, string.Format("CoupleWish WriteStatueData failed, couple_id={0},man={1},wife={2}", statue.DbCoupleId, statue.Man.RoleId, statue.Wife.RoleId), ex, true);
                result = false;
            }
            return(result);
        }
        /// <summary>
        /// 加载雕像数据
        /// </summary>
        /// <param name="week"></param>
        /// <returns></returns>
        public CoupleWishSyncStatueData LoadCoupleStatue(int week)
        {
            CoupleWishSyncStatueData data = new CoupleWishSyncStatueData();

            data.ModifyTime = TimeUtil.NowDateTime();
            MySqlDataReader sdr = null;

            try
            {
                string sql = string.Format("SELECT `couple_id`,`man_rid`,`man_zoneid`,`man_rname`,`man_statue`,`wife_rid`,`wife_zoneid`,`wife_rname`,`wife_statue`,`admire_cnt`,`is_divorced`,`yanhui_join_num` " +
                                           "FROM t_couple_wish_statue WHERE `week`={0};", week);
                sdr = DbHelperMySQL.ExecuteReader(sql);
                while (sdr != null && sdr.Read())
                {
                    data.DbCoupleId = Convert.ToInt32(sdr["couple_id"]);

                    data.Man          = new KuaFuRoleMiniData();
                    data.Man.RoleId   = Convert.ToInt32(sdr["man_rid"]);
                    data.Man.ZoneId   = Convert.ToInt32(sdr["man_zoneid"]);
                    data.Man.RoleName = sdr["man_rname"].ToString();
                    if (!sdr.IsDBNull(sdr.GetOrdinal("man_statue")))
                    {
                        data.ManRoleDataEx = (byte[])(sdr["man_statue"]);
                    }

                    data.Wife          = new KuaFuRoleMiniData();
                    data.Wife.RoleId   = Convert.ToInt32(sdr["wife_rid"]);
                    data.Wife.ZoneId   = Convert.ToInt32(sdr["wife_zoneid"]);
                    data.Wife.RoleName = sdr["wife_rname"].ToString();
                    if (!sdr.IsDBNull(sdr.GetOrdinal("wife_statue")))
                    {
                        data.WifeRoleDataEx = (byte[])(sdr["wife_statue"]);
                    }

                    data.BeAdmireCount = Convert.ToInt32(sdr["admire_cnt"]);
                    data.IsDivorced    = Convert.ToInt32(sdr["is_divorced"]);
                    data.YanHuiJoinNum = Convert.ToInt32(sdr["yanhui_join_num"]);
                    data.Week          = week;

                    break;
                }
            }
            catch (Exception ex)
            {
                LogManager.WriteExceptionUseCache(ex.Message);
            }
            finally
            {
                if (sdr != null)
                {
                    sdr.Close();
                }
            }

            return(data);
        }
Exemple #3
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;
        }
        /// <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;
        }